[jboss-jira] [JBoss JIRA] (DROOLS-267) DroolsExecuteProducer is loosing all Camel Exchange headers

Mario Fusco (JIRA) jira-events at lists.jboss.org
Thu Sep 19 03:59:03 EDT 2013


     [ https://issues.jboss.org/browse/DROOLS-267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Fusco reassigned DROOLS-267:
----------------------------------

    Assignee: Mario Fusco  (was: Mark Proctor)

    
> DroolsExecuteProducer is loosing all Camel Exchange headers
> -----------------------------------------------------------
>
>                 Key: DROOLS-267
>                 URL: https://issues.jboss.org/browse/DROOLS-267
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 5.5.0.Final,  6.0.0.CR3,  6.0.0.CR4
>            Reporter: A Majewski
>            Assignee: Mario Fusco
>
> When using drools endpoint inside camel project the DroolsExecuteProducer is loosing all the Camel Exchange headers.
> Usually the InOut camel producers should be copy all In Exchange Headers to Out Exchange. Please refer to community discussion: https://community.jboss.org/message/837533#837533
> Additional tests casess in org.drools.camel.component.CamelEndpointTest class showing exact problem.
> {code}
> ...
> @Test
>     public void testNoSessionInsertWithHeaders() throws Exception {
>         
>     	MockEndpoint mockResult = context.getEndpoint("mock:resultWithHeader",MockEndpoint.class);
>     	
>     	String headerName ="testHeaderName";
>         String headerValue ="testHeaderValue";
>         
>         Person person = new Person();
>         person.setName( "Mauricio" );
>         InsertObjectCommand cmd = (InsertObjectCommand) CommandFactory.newInsert( person,
>                                                                                   "salaboy" );
>         Map<String,Object> headers= new HashMap<String, Object>();
>         headers.put(headerName,headerValue);
>         headers.put( DroolsComponent.DROOLS_LOOKUP,"ksession1");
>         
>         // set mock expectations
>         mockResult.expectedMessageCount(1);
>         mockResult.expectedHeaderReceived(headerName,headerValue);
>         
>         ExecutionResults response = (ExecutionResults) template.requestBodyAndHeaders("direct:test-no-session-withHeader",
>                 cmd,headers);
>         assertTrue( "Expected valid ExecutionResults object",
>                     response != null );
>         assertTrue( "ExecutionResults missing expected fact",
>                     response.getFactHandle( "salaboy" ) != null );
>         
>         mockResult.assertIsSatisfied();
>     }
> @Test
>     public void testSessionBatchExecutionCommandWithHeader() throws Exception {
>         
>     	MockEndpoint mockResult = context.getEndpoint("mock:resultWithHeader",MockEndpoint.class);
>     	
>     	String headerName ="testHeaderName";
>         String headerValue ="testHeaderValue";
>         
>     	Person john = new Person();
>         john.setName("John Smith");
>         List<Command> commands = new ArrayList<Command>();
>         commands.add(CommandFactory.newInsert(john, "john"));
>         BatchExecutionCommand batchExecutionCommand = CommandFactory.newBatchExecution(commands);
>         Map<String,Object> headers= new HashMap<String, Object>();
>         headers.put(headerName,headerValue);
>         
>         // set mock expectations
>         mockResult.expectedMessageCount(1);
>         mockResult.expectedHeaderReceived(headerName,headerValue);
>         
>         //do test
>         template.requestBodyAndHeaders("direct:test-with-session-withHeader",
>                 batchExecutionCommand,headers);
>         
>         ExecutionResults response = mockResult.getReceivedExchanges().get(0).getIn().getBody(ExecutionResults.class);
>         
>         assertTrue( "Expected valid ExecutionResults object",
>                 response != null );
>         assertTrue( "ExecutionResults missing expected fact",
>                 response.getFactHandle( "john" ) != null );
>         assertTrue( "ExecutionResults missing expected fact",
>                 response.getFactHandle( "john" ) instanceof FactHandle);
>         
>         mockResult.assertIsSatisfied();
>     }
> @Override
>     protected RouteBuilder createRouteBuilder() throws Exception {
>         return new RouteBuilder() {
>             public void configure() throws Exception {
>                 from( "direct:test-with-session" ).to( "drools://node/ksession1" );
>                 from( "direct:test-no-session" ).to( "drools://node" );
>                 from( "direct:test-with-session-withHeader" ).to( "drools://node/ksession1" ).to("mock:resultWithHeader");
>                 from( "direct:test-no-session-withHeader" ).to( "drools://node/ksession1" ).to("mock:resultWithHeader");
>             }
>         };
>     }
> {code}
> I am going to create a pull request to fix this issue. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list