Hi,
I am trying to integrate another part of our system that will publish
XML events to a camel route. I am having difficulty getting JAXB and my
camel route to work correctly and I've narrowed it down to the following
that shows my xpath expression I expect to match isn't.
At this point I'd appreciate any help on this - I *really* need to get
this finished, and I've spent days trying to resolve this.
Info:
1 - Route definition
2 - Log file
3 - XML
Thanks,
John
[1] Route:
DataFormat jaxb = new JaxbDataFormat("com.example.services.schemas.events");
Namespaces ns = new Namespaces("",
"http://www.example.com/services/resource/schemas/events");
from("activemq:my.events")
.choice()
.when(ns.xpath("/event/context[type='inbound:file-receive']"))
.to("direct:inboundHandler")
.otherwise().log("Processing ${id} did not match namespace.");
from("direct:inboundHandler")
.unmarshal(jaxb)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("trying to get the marshalled event");
Event evt = exchange.getIn().getBody(Event.class);
System.out.println("event.type = " + EventUtils.getType(evt));
}
});
[2] Log File:
00:29:05,656 | DEBUG | umer[my.events] |
EndpointMessageListener | 106 - org.apache.camel.camel-jms -
2.10.7 | Endpoint[activemq://my.events] consumer received JMS message:
ActiveMQTextMessage {commandId = 3, responseRequired = false, messageId
= ID:dubchak-mbp-53315-1395991558715-8:1:-1:1:1, originalDestination =
null, originalTransactionId = null, producerId =
ID:dubchak-mbp-53315-1395991558715-8:1:-1:1, destination =
queue://my.events, transactionId = null, expiration = 0, timestamp =
1395991745644, arrival = 0, brokerInTime = 1395991745644, brokerOutTime
= 1395991745647, correlationId = null, replyTo = null, persistent =
false, type = null, priority = 4, groupID = null, groupSequence = 0,
targetConsumerId = null, compressed = false, userID = null, content =
null, marshalledProperties = null, dataStructure = null,
redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties =
true, readOnlyBody = true, droppable = false, text = <?xml version="1.0"
encoding="UTF-8" standalo.../tns:event>
}
*00:29:05,676 | DEBUG | umer[my.events] |
ChoiceProcessor | 100 - org.apache.camel.camel-core -
2.10.7 | #0 - XPath: /event/context[type='inbound:file-receive']
matches: false for: Exchange[JmsMessage[JmsMessageID:
ID:dubchak-mbp-53315-1395991558715-8:1:-1:1:1]]**
**00:29:05,676 | INFO | umer[my.events] |
route3 | 100 - org.apache.camel.camel-core -
2.10.7 | Processing ID:dubchak-mbp-53315-1395991558715-8:1:-1:1:1 did
not match namespace.**
**00:29:07,634 | DEBUG | .0.1:53353@61613 |
Transport | 63 -
org.apache.activemq.activemq-core - 5.7.0 | Transport Connection to:
tcp://127.0.0.1:53353 failed: java.io.EOFException**
**java.io.EOFException**
** at
java.io.DataInputStream.readByte(DataInputStream.java:267)[:1.7.0_45]**
** at
org.apache.activemq.transport.stomp.StompWireFormat.readHeaderLine(StompWireFormat.java:155)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.stomp.StompWireFormat.readLine(StompWireFormat.java:148)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.stomp.StompWireFormat.parseAction(StompWireFormat.java:170)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.stomp.StompWireFormat.unmarshal(StompWireFormat.java:98)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:229)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:221)[63:org.apache.activemq.activemq-core:5.7.0]**
** at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:204)[63:org.apache.activemq.activemq-core:5.7.0]**
** at java.lang.Thread.run(Thread.java:744)[:1.7.0_45]*
00:29:07,636 | DEBUG | .0.1:53353@61613 |
ManagementContext | 63 -
org.apache.activemq.activemq-core - 5.7.0 | Unregistering MBean
org.apache.activemq:BrokerName=default,Type=Connection,ConnectorName=stomp,Connection=ID_dubchak-mbp-53315-1395991558715-8_1
0
[3] XML:
<?xml version="1.0" encoding="UTF-8"?>
<event xmlns="http://www.example.com/services/resource/schemas/events"
event-id="12345" timestamp="2014-03-27T12:50:10.993-07:00">
<context>
<type>inbound:file-receive</type>
<attributes>
<attribute>
<name>source</name>
<value>file:///integration/work/provider_directory/in/infile.tar.gz</value>
</attribute>
<attribute>
<name>target</name>
<value>file:///integration/work/provider_directory/ready/reformatted.tar.gz</value>
</attribute>
<attribute>
<name>datasource</name>
<value>foo</value>
</attribute>
</attributes>
</context>
<source>
<uri>
<host-name>localhost</host-name>
<host-id>localhost</host-id>
<domain>example.com</domain>
<fully-qualified>file:///integration/work/provider_directory/in/infile.tar.gz</fully-qualified>
</uri>
</source>
<target>
<uri>
<host-name>localhost</host-name>
<host-id>internal2.example.com</host-id>
<domain>example.com</domain>
<fully-qualified>file:///integration/work/provider_directory/ready/aetna_v4_05.zip</fully-qualified>
</uri>
</target>
<event-data>
<payload/>
</event-data>
</event>