public void testFromRestModel() throws Exception { assertEquals(getExpectedNumberOfRoutes(), context.getRoutes().size()); assertEquals(2, context.getRestDefinitions().size()); RestDefinition rest = context.getRestDefinitions().get(0); assertNotNull(rest); assertEquals("/say/hello", rest.getUri()); assertEquals(1, rest.getVerbs().size()); ToDefinition to = assertIsInstanceOf( ToDefinition.class, rest.getVerbs().get(0).getRoute().getOutputs().get(1)); assertEquals("mock:hello", to.getUri()); rest = context.getRestDefinitions().get(1); assertNotNull(rest); assertEquals("/say/bye", rest.getUri()); assertEquals(2, rest.getVerbs().size()); assertEquals("application/json", rest.getVerbs().get(0).getConsumes()); to = assertIsInstanceOf( ToDefinition.class, rest.getVerbs().get(0).getRoute().getOutputs().get(1)); assertEquals("mock:bye", to.getUri()); // the rest becomes routes and the input is a seda endpoint created by the // DummyRestConsumerFactory getMockEndpoint("mock:update").expectedMessageCount(1); template.sendBody("seda:post-say-bye", "I was here"); assertMockEndpointsSatisfied(); String out = template.requestBody("seda:get-say-hello", "Me", String.class); assertEquals("Hello World", out); String out2 = template.requestBody("seda:get-say-bye", "Me", String.class); assertEquals("Bye World", out2); }
public static String getExchangePattern(ToDefinition input) { String pattern = input.getPattern() != null ? input.getPattern().name() : null; if (Strings2.isEmpty(pattern)) { return null; } return pattern; }
public static String getUri(ToDefinition input) { String key = input.getUri(); if (Strings2.isEmpty(key)) { String ref = input.getRef(); if (!Strings2.isEmpty(ref)) { return "ref:" + ref; } } return key; }
public Processor wrap(RouteContext routeContext, Processor processor) { RouteDefinition routeDef = routeContext.getRoute(); ToDefinition toDrools = getDroolsNode(routeDef); Processor returnedProcessor; if (toDrools != null) { returnedProcessor = new DroolsProcess(toDrools.getUri(), processor); } else { returnedProcessor = processor; // new DroolsClientProcessor( processor ); } return returnedProcessor; }
private static final void addNamespaceParameterTo( ProcessorDefinition<?> procDef, String namespace) { if (procDef instanceof ToDefinition) { ToDefinition toDef = (ToDefinition) procDef; String old_uri = toDef.getUri(); String new_uri = addNamespaceParameter(old_uri, namespace); toDef.setUri(new_uri); setEndpointUri(toDef.getEndpoint(), namespace); } for (ProcessorDefinition<?> procDefChild : procDef.getOutputs()) { addNamespaceParameterTo(procDefChild, namespace); } }
private ToDefinition getDroolsNode(ProcessorDefinition nav) { if (!nav.getOutputs().isEmpty()) { List<ProcessorDefinition> children = nav.getOutputs(); for (ProcessorDefinition child : children) { if (child instanceof ToDefinition) { ToDefinition to = (ToDefinition) child; if (to.getUri().trim().startsWith("drools:")) { return to; } } getDroolsNode(child); } } return null; }
public static void augmentNodes( RouteContext routeContext, ProcessorDefinition<?> nav, Set visited) { if (!nav.getOutputs().isEmpty()) { List<ProcessorDefinition> outputs = nav.getOutputs(); for (int i = 0; i < outputs.size(); i++) { ProcessorDefinition child = outputs.get(i); // it.next(); if (child instanceof ToDefinition) { ToDefinition to = (ToDefinition) child; if (to.getUri().startsWith("cxfrs") && !visited.contains(to)) { BeanDefinition beanDef = new BeanDefinition(); beanDef.setBeanType(PreCxfrs.class.getName()); outputs.add(i, beanDef); // insert before cxfrs beanDef = new BeanDefinition(); beanDef.setBeanType(PostCxfrs.class.getName()); outputs.add(i + 2, beanDef); // insert after cxfrs i = i + 2; // adjust for the two inserts } else if (to.getUri().startsWith("cxf") && !visited.contains(to)) { BeanDefinition beanDef = new BeanDefinition(); beanDef.setBeanType(PreCxfSoapProcessor.class.getName()); outputs.add(i, beanDef); // insert before cxf beanDef = new BeanDefinition(); beanDef.setBeanType(PostCxfSoapProcessor.class.getName()); outputs.add(i + 2, beanDef); // insert after cxf i = i + 2; // adjust for the two inserts augmented = true; } } else if (child instanceof MarshalDefinition) { MarshalDefinition m = (MarshalDefinition) child; DataFormatDefinition dformatDefinition = m.getDataFormatType(); dformatDefinition = processDataFormatType(routeContext, m.getRef(), dformatDefinition); m.setDataFormatType(dformatDefinition); // repoint the marshaller, if it was cloned } else if (child instanceof UnmarshalDefinition) { UnmarshalDefinition m = (UnmarshalDefinition) child; DataFormatDefinition dformatDefinition = m.getDataFormatType(); dformatDefinition = processDataFormatType(routeContext, m.getRef(), dformatDefinition); m.setDataFormatType(dformatDefinition); // repoint the marshaller, if it was cloned } } for (Iterator<ProcessorDefinition> it = nav.getOutputs().iterator(); it.hasNext(); ) { ProcessorDefinition child = it.next(); augmentNodes(routeContext, child, visited); } } }