citrusframework / citrus-samples

Citrus sample projects using Java DSL tests and Spring Java configuration
https://citrusframework.org/samples/
70 stars 125 forks source link

Need solution for resolving the build issues for Camel spring boot application #62

Open suresh-devaki opened 2 years ago

suresh-devaki commented 2 years ago

Error and test case and POM flle details are as below. Please suggest solution for resolving this error.

Error details:

[ERROR] symbol: method camel() [ERROR] location: class com.consol.citrus.HelloGreetingIT [ERROR] /C:/suresh Devaki/D Drive/Suresh/Devaki/Telia/Misc/Tasks/Citus and Apache camel support/Source code-Citrus/citrus-sample-camel-context1/citrus-sample-camel-context1/src/test/java/com/consol/citrus/HelloGreetingIT.java:[25,39] cannot find symbol [ERROR] symbol: method direct(java.lang.String) [ERROR] location: class com.consol.citrus.HelloGreetingIT [ERROR] /C:/suresh Devaki/D Drive/Suresh/Devaki/Telia/Misc/Tasks/Citus and Apache camel support/Source code-Citrus/citrus-sample-camel-con


EndpointConfig.java

/*

package com.consol.citrus;

import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource;

@Configuration @PropertySource("citrus.properties") public class EndpointConfig {

@Bean
public CamelContext camelContext() throws Exception {
    CamelContext context = new DefaultCamelContext();

    context.addRoutes(new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            from("direct:hello")
                .routeId("helloRoute")
                .to("log:com.consol.citrus.camel?level=INFO")
                .to("seda:greetings");
        }
    });

    return context;
}

}

HelloGreetingIT.java package com.consol.citrus;

import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; //import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.Test;

import com.consol.citrus.annotations.CitrusTest; import com.consol.citrus.camel.message.CamelMessageProcessor; import com.consol.citrus.camel.message.CamelRouteProcessor; import com.consol.citrus.message.MessageType; import com.consol.citrus.testng.spring.TestNGCitrusSpringSupport;

@SuppressWarnings("deprecation") public class HelloGreetingIT extends TestNGCitrusSpringSupport {

//Endpoint DSL support
@CitrusTest(name = "HelloGreeting_Ok_IT")
public void helloGreeting_Ok_1_Test() {

    send(camel().endpoint(direct("hello")::getUri))
    .message()
    .body("Hello from Citrus!");

    receive(camel().endpoint(seda("greetings")::getUri))
    .message()
    .type(MessageType.PLAINTEXT)
    .body("Hello from Citrus!");

}

@Autowired
private CamelContext camelContext;

//Camel processor support
@Test
@CitrusTest
public void shouldProcessMessages() {
    CamelMessageProcessor.Builder toUppercase = camel(camelContext)
            .process(exchange -> exchange
                    .getMessage()
                    .setBody(exchange.getMessage().getBody(String.class).toUpperCase()));

    $(send(camel().endpoint(seda("test")::getUri))
            .message()
            .body("Citrus rocks!")
            .process(toUppercase)
    );

    $(receive(camel().endpoint(seda("test")::getUri))
            .process(toUppercase)
            .message()
            .type(MessageType.PLAINTEXT)
            .body("CITRUS ROCKS!"));
}

//support to apply transformations
@Test
@CitrusTest
public void shouldTransformMessageReceived() {
    $(send(camel().endpoint(seda("hello")::getUri))
            .message()
            .body("{\"message\": \"Citrus rocks!\"}")
    );

    $(receive(camel().endpoint(seda("hello")::getUri))
            .transform(
                camel()
                    .camelContext(camelContext)
                    .transform()
                    .jsonpath("$.message"))
            .message()
            .type(MessageType.PLAINTEXT)
            .body("Citrus rocks!"));
}

//message processor  - able to apply a complete route logic as part of the test action.
@Test
@CitrusTest
public void shouldProcessRoute() {
    CamelRouteProcessor.Builder beforeReceive = camel(camelContext).route(route ->
            route.choice()
                .when(jsonpath("$.greeting[?(@.language == 'EN')]"))
                    .setBody(constant("Hello!"))
                .when(jsonpath("$.greeting[?(@.language == 'DE')]"))
                    .setBody(constant("Hallo!"))
                .otherwise()
                    .setBody(constant("Hi!")));

    $(send(camel().endpoint(seda("greetings")::getUri))
            .message()
            .body("{" +
                    "\"greeting\": {" +
                        "\"language\": \"EN\"" +
                    "}" +
                  "}")
    );

    $(receive("camel:" + camel().endpoints().seda("greetings").getUri())
            .process(beforeReceive)
            .message()
            .type(MessageType.PLAINTEXT)
            .body("Hello!"));
}

//Camel data format support
@org.testng.annotations.Test
@CitrusTest
public void shouldApplyDataFormat() {
    when(send(camel().endpoint(seda("data")::getUri))
            .message()
            .body("Citrus rocks!")
            .transform(camel(camelContext)
                    .marshal()
                    .base64())
    );

    then(receive("camel:" + camel().endpoints().seda("data").getUri())
            .transform(camel(camelContext)
                    .unmarshal()
                    .base64())
            .transform(camel(camelContext)
                    .convertBodyTo(String.class))
            .message()
            .type(MessageType.PLAINTEXT)
            .body("Citrus rocks!"));
}

@Test
@CitrusTest
public void createCamelRoute() {
    $(camel().camelContext(camelContext)
        .route()
        .create(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:messages")
                    .routeId("message-tokenizer")
                    .split().tokenize(" ")
                    .to("seda:words");
            }
        }));
}

}

pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0 com.consol.citrus.samples citrus-sample-camel-context1 3.0.0 Citrus Samples:: Apache Camel Context UTF-8 UTF-8 5.3.6 3.0.10.RELEASE 2.4.8.RELEASE 3.9.0 5.16.2 1.7.30 3.1.0 embedded 7.4.0 org.apache.maven.plugins maven-compiler-plugin 3.8.1 ${project.build.sourceEncoding} 11 11 org.apache.maven.plugins maven-jar-plugin 3.0.2 org.apache.maven.plugins maven-surefire-plugin 2.22.2 false ${project.build.directory} org.apache.maven.plugins maven-failsafe-plugin 2.22.2 integration-tests integration-test verify org.apache.activemq.tooling activemq-maven-plugin ${activemq.version} false log4j.configuration log4j.properties org.springframework.ws spring-ws-core ${spring.ws.version} org.springframework.webflow spring-js ${spring.webflow.js.version} org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-orm ${spring.version} org.springframework spring-oxm ${spring.version} org.apache.activemq activemq-broker ${activemq.version} org.apache.activemq activemq-spring ${activemq.version} org.apache.xbean xbean-spring 4.5 org.apache.camel camel-spring-ws ${apache.camel.version} org.apache.camel camel-jms ${apache.camel.version} org.springframework spring-beans org.slf4j jcl-over-slf4j ${slf4j.version} test org.slf4j slf4j-log4j12 ${slf4j.version} test commons-logging commons-logging 1.2 provided org.springframework spring-test ${spring.version} provided com.consol.citrus citrus-api ${citrus.version} test com.consol.citrus citrus-base ${citrus.version} test com.consol.citrus citrus-spring ${citrus.version} test com.consol.citrus citrus-endpoint-catalog ${citrus.version} test com.consol.citrus citrus-testng ${citrus.version} test com.consol.citrus citrus-jms ${citrus.version} test com.consol.citrus citrus-http ${citrus.version} test com.consol.citrus citrus-ws ${citrus.version} test com.consol.citrus citrus-camel ${citrus.version} test com.consol.citrus citrus-junit 3.0.0-M3 com.consol.citrus citrus-validation-xml ${citrus.version} test com.consol.citrus citrus-core ${citrus.version} com.consol.citrus citrus-java-dsl ${citrus.version} com.consol.citrus citrus-http ${citrus.version} org.apache.camel camel-endpointdsl provided ${apache.camel.version} org.apache.camel camel-jms ${apache.camel.version} org.springframework spring-beans org.testng testng ${testng.version} test consol-labs-snapshots http://labs.consol.de/maven/snapshots-repository/ true interval:10080 activemq-embedded system.under.test.mode embedded com.consol.citrus.mvn citrus-maven-plugin ${citrus.version} org.apache.activemq.tooling activemq-maven-plugin start-activemq pre-integration-test run true stop-activemq post-integration-test stop

citrus-application.properties citrus.spring.java.config=com.consol.citrus.EndpointConfig