I have  exposed userservice in Spring Rest service  using spring boot and in
that calling  userDataWebService using camel cxf component. in  junit
skipping cxf endpoing and invoke process to return response  then it is
giving null in "mock:result" but if I throw exception then it comes to 
"mock:wsError" and works fine.
Cod as below

<cxf:cxfEndpoint id="WebServiceUserData"
                address="http://${tos.hostname}/crmtos/USERDATAWS";
wsdlURL="src/main/resources/wsdl/USERDATAWS.wsdl"
                                serviceClass="com. UserData.USERDATAWS" 
endpointName="ws:USERDATAWSPort"
                                serviceName="ws:USERDATAWSService" 
xmlns:ws="http://UserData.wsif /">
                                <cxf:properties>
                                        <entry key="dataFormat" value="POJO" />
                                </cxf:properties>
                        </cxf:cxfEndpoint>



                <route id="wsUserDataClient" handleFault="true">
                        <from uri="direct:UserDataWsRoute" />
                        <onException>
                                <exception>java.net.ConnectException</exception>
                                                
                                <redeliveryPolicy  maximumRedeliveries="2" 
retryAttemptedLogLevel="INFO" 
redeliveryDelay="2000"/>
                                <handled>
                                        <constant>true</constant>
                                </handled>
                                <to uri="mock:error" />
                        </onException> 
                        
                
                        <to
uri="cxf:bean:WebServiceUserData?defaultOperationName=UserDataCommand" 
id="TosCallSer1"/>                      
                        <to uri="mock:result" id="mockr2" />                    
                                
                </route>

Calling camel by template in rest 

        @Produce(uri = "direct:UserDataWsRoute")
        ProducerTemplate UserWsRoute;
        @EndpointInject(uri = "mock:result")
        protected MockEndpoint wsResultEndpoint;
        
        @EndpointInject(uri = "mock:wsError")
        protected MockEndpoint wsErrorResultEndpoint;
        
public UserResponseType getPostUser(UserRequestType request) {
                UserResponseType response = new UserResponseType();
        
                LOG.info("-----------------------------WS 
Request-----------------");
                
                if(wsResultEndpoint!= null && wsResultEndpoint.getExchanges()!= 
null &&
!wsResultEndpoint.getExchanges().isEmpty()){
                        wsResultEndpoint.getExchanges().clear();
                }
                if(wsErrorResultEndpoint!= null && 
wsErrorResultEndpoint.getExchanges()!=
null && !wsErrorResultEndpoint.getExchanges().isEmpty()){
                        wsErrorResultEndpoint.getExchanges().clear();
                }
                
                UserWsRoute.sendBody(request);
                
// i am getting   empty for this wsResultEndpoint.getExchanges() 
                if(!wsResultEndpoint.getExchanges().isEmpty()){
                        Exchange exchange = 
wsResultEndpoint.getExchanges().get(0);
                        UserCommandResponse wsResponse =
exchange.getIn().getBody(UserCommandResponse.class);
                
                
                        
                
response.getResponse().setResponseCode(wsResponse.getUserResponse().getResponseCode().value());
                
response.getResponse().setResponseDescription(wsResponse.getUserResponse().getResponseDescription());

                        

                }else{
// this is working when we get exception
                        if(!wsErrorResultEndpoint.getExchanges().isEmpty()){    
                        
                                Exchange exchange 
=wsErrorResultEndpoint.getExchanges().get(0);
                                ResponseType 
resType=exchange.getIn().getBody(ResponseType.class);
                        //      LOG.info("-----------------------------WS error
-----------------"+errorMessage);
                
                                response.setResponse(resType);
                                
                                
                        }
                        
Junit :



@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebIntegrationTest(randomPort = true)
public class RestJunitWithSimulater {

           private MediaType contentType = new
MediaType(MediaType.APPLICATION_JSON.getType(),
                    MediaType.APPLICATION_JSON.getSubtype(),
                    Charset.forName("utf8"));
           
           private MockMvc mockMvc;



            private HttpMessageConverter mappingJackson2HttpMessageConverter;

        
            @Autowired
            private CamelContext context;

        
            @Autowired
            private WebApplicationContext webApplicationContext;

            @Before
            public void setup() throws Exception {
                this.mockMvc = 
webAppContextSetup(webApplicationContext).build();
        
                                        AdviceWithRouteBuilder mocker = new 
AdviceWithRouteBuilder() {
                            @Override
                            public void configure() throws Exception {
                                
                                interceptSendToEndpoint("cxf:bean:*")
                                .skipSendToOriginalEndpoint()
                                .process(new SimulateResponseProcessor()); // 
coustome
response or exception                       
                                        
                            }
                        };
                        
context.getRouteDefinition("wsUserDataClient").adviceWith(context,
mocker);
            }
            
            @Autowired
            void setConverters(HttpMessageConverter<?>[] converters) {

                this.mappingJackson2HttpMessageConverter =
Arrays.asList(converters).stream().filter(
                        hmc -> hmc instanceof
MappingJackson2HttpMessageConverter).findAny().get();

                Assert.assertNotNull("the JSON message converter must not be 
null",
                        this.mappingJackson2HttpMessageConverter);
            }
            
            protected String json(Object o) throws IOException {
                MockHttpOutputMessage mockHttpOutputMessage = new
MockHttpOutputMessage();
                this.mappingJackson2HttpMessageConverter.write(
                        o, MediaType.APPLICATION_JSON, mockHttpOutputMessage);
                return mockHttpOutputMessage.getBodyAsString();
            }
            

            
            
        
                   
                   @Test
                    public void testSuccess() throws Exception {
                   
                          User restReqObj=getResUserRequest("jhon");
                         String restReqJson = json(restReqObj);
                        mockMvc.perform(post("/getPostUser")
                                        .contentType(contentType)
                                        .content(restReqJson))                  
                
                                .andExpect(jsonPath("$.response.responseCode",
is("Success")));
                    }

                   @Test //
                    public void testConnError() throws Exception {              
 
                        User restReqObj=getResUserRequest("mike");
                         String restReqJson = json(restReqObj);
                        mockMvc.perform(post("/getPostUser")
                                        .contentType(contentType)
                                        .content(restReqJson))                  
                
                                .andExpect(jsonPath("$.response.responseCode",
is("ConnectException")));
                    }









--
View this message in context: 
http://camel.465427.n5.nabble.com/Junit-camel-with-spring-boot-tp5779653.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to