private RequestMatcher createSingleTextMatcher(String name, TextContainer container) { if (container.isRawText()) { return createSingleMatcher(name, container.getText()); } if ("exist".equals(container.getOperation())) { return existMatcher(Extractors.extractor(name), container); } return createRequestMatcherWithResource( container.getOperation(), createResource(name, container.getText())); }
private <T> RequestMatcher getRequestMatcher( RequestExtractor<T> extractor, TextContainer container) { if (container.isRawText()) { return eq(extractor, container.getText()); } if ("exist".equals(container.getOperation())) { return existMatcher(extractor, container); } try { Method operationMethod = Moco.class.getMethod(container.getOperation(), RequestExtractor.class, String.class); Object result = operationMethod.invoke(null, extractor, container.getText()); return RequestMatcher.class.cast(result); } catch (Exception e) { throw new RuntimeException(e); } }
private Resource resourceFrom(String name, TextContainer container) { if (container.isRawText()) { return invokeTarget(name, container.getText(), Resource.class); } if (container.isForTemplate()) { if ("version".equalsIgnoreCase(name)) { return version(template(container.getText())); } if (container.hasProperties()) { return template( invokeTarget(name, container.getText(), ContentResource.class), container.getProps()); } return template(invokeTarget(name, container.getText(), ContentResource.class)); } throw new IllegalArgumentException(format("unknown operation [%s]", container.getOperation())); }