The camel example for using Spring and XML DSL routing has the following config 
file:

        <beans
            xmlns="http://www.springframework.org/schema/beans";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:camel="http://camel.apache.org/schema/spring";
            xsi:schemaLocation="
                    http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://camel.apache.org/schema/spring       
http://camel.apache.org/schema/spring/camel-spring.xsd";
        >

          <camelContext xmlns="http://camel.apache.org/schema/spring";>

            <route id="helloRoute">
              <!-- incoming requests from the servlet is routed -->
              <from uri="servlet:hello"/>
              <choice>
                <when>
                  <!-- is there a header with the key name? -->
                  <header>name</header>
                  <!-- yes so return back a message to the user -->
                  <transform>
                    <simple>Hi I am ${sysenv.HOSTNAME}. Hello ${header.name} 
how are you today?</simple>
                  </transform>
                </when>
                <otherwise>
                  <!-- if no name parameter then output a syntax to the user -->
                  <transform>
                    <constant>Add a name parameter to uri, eg 
?name=foo</constant>
                  </transform>
                </otherwise>
              </choice>
            </route>

          </camelContext>

        </beans>

I have this running; it puts the designated string on the browser page as a 
result after the user enters the correct URL in the browser address bar.

As an exercise, I'm attempting to do this in Java.  I have the following 
configuration:

<beans
    xmlns="http://www.springframework.org/schema/beans";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xmlns:camel="http://camel.apache.org/schema/spring";
    xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
            http://camel.apache.org/schema/spring       
http://camel.apache.org/schema/spring/camel-spring.xsd";
>

  <camelContext xmlns="http://camel.apache.org/schema/spring";>
      <packageScan>
          <package>com.api.cameltwo.camelroutes</package>
      </packageScan>
  </camelContext>

</beans>

and the following Java file:

package com.api.cameltwo.camelroutes;

import org.apache.camel.Expression;
import org.apache.camel.spring.SpringRouteBuilder;

public class IncomingUrlRouteBuilder extends SpringRouteBuilder {
    Expression e;

    public void configure() {
        from("servlet:hello")
          .choice()
             .when(header("name"))
                .transform().simple("Hi ${header.name}")
                .to("file:target/messages?fileName=messageOne.txt")

             .otherwise()
                .transform().constant("no name")
                .to("file:target/messages?fileName=messageEmpty.txt")
;
    }
}

This works; the indicated string goes back to the browser screen, and gets 
written to the file. The thing I don't understand yet is the requirement for 
the '.to("file...")' clauses/calls in the Java version. I put in "file..." as 
an experiment; it seems that something is required after 
'.transform().simple()', but I don't know what. If I don't put that there, the 
compiler gives the error:

cannot find symbol
  symbol:   method otherwise()
  location: class ProcessorDefinition<ChoiceDefinition>

So what is it I need to put after the '.when()' to indicate that this route is 
done? I gather the .transform().simple() already puts the required output where 
it needs to go to get back to the browser result page.



The contents of this email and any attachments to it may contain Customer 
Proprietary Network Information (CPNI) as defined by the FCC and/or privileged 
and confidential information from Access Point, Inc. Any and all of this 
information is only for the viewing or use of the intended recipient. If you 
are not the intended recipient, you are hereby notified that any disclosure, 
copying, distribution or use of, or the taking of any action in reliance upon, 
the information contained in this e-mail, or any of the attachments to this 
e-mail, is strictly prohibited and that this e-mail and all of the attachments 
to this e-mail, if any, must be immediately returned to Access Point, Inc. or 
destroyed and, in either case, this e-mail and all attachments to this e-mail 
must be immediately deleted from your computer without making any copies 
hereof. If you have received this e-mail in error, please notify Access Point, 
Inc. by e-mail immediately.

Reply via email to