Hi,
It's a bit tricky here. What the path does is to convert a simple-type java
parameter to an AXIOM element to be consumed by the WS stack. The simple
java types are now treated as JAXB objects. So the path would be
JAXB-->AXIOM. At this moment, we don't have JAXB to XMLStreamer transformer,
so it goes through JAXB --> DOM --> XMLStreamReader --> AXIOM. Sure, the
path might be optimzed. With the current capability, we could try other
alternatives such as JAXB --> XMLString --> XMLStreamReader --> AXIOM, but
I'm not sure if it helps.
Thanks,
Raymond
----- Original Message -----
From: "Jean-Sebastien Delfino" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, January 08, 2008 11:16 AM
Subject: Re: Incorrect JAXB2Node transformer usage
Raymond Feng wrote:
What path did you see (source, target)? Do you expect String as
intermediate formats instead of Node? You can adjust the weighta of
transformers to make them more favorable.
[snip]
This happens as part of the domain/node exchanges when I start a node the
tutorial's LaunchClound program.
Here's the stack:
Thread [main] (Suspended (breakpoint at line 40 in JAXB2Node))
JAXB2Node.transform(Object, TransformationContext) line: 40
JAXB2Node.transform(Object, TransformationContext) line: 33
DefaultTransformerExtensionPoint$LazyPullTransformer.transform(Object,
TransformationContext) line: 199 MediatorImpl.mediate(Object, DataType,
DataType, Map<String,Object>) line: 73
Input2InputTransformer.transform(Object[], TransformationContext) line:
148 Input2InputTransformer.transform(Object, TransformationContext) line:
43 MediatorImpl.mediate(Object, DataType, DataType, Map<String,Object>)
line: 73 DataTransformationInterceptor.transform(Object, DataType,
DataType, boolean) line: 175 DataTransformationInterceptor.invoke(Message)
line: 72 JDKInvocationHandler.invoke(InvocationChain, Object[],
RuntimeWire) line: 249 JDKInvocationHandler.invoke(Object, Method,
Object[]) line: 146 $Proxy11.registerNode(String, String, Externalizable)
line: not available SCADomainEventServiceProxyImpl.registerNode(String,
String, Externalizable) line: 59 NativeMethodAccessorImpl.invoke0(Method,
Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 64
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 615
JavaImplementationInvoker.invoke(Message) line: 105
PassByValueInterceptor.invoke(Message) line: 88
JDKInvocationHandler.invoke(InvocationChain, Object[], RuntimeWire) line:
249 JDKInvocationHandler.invoke(Object, Method, Object[]) line: 146
$Proxy11.registerNode(String, String, Externalizable) line: not available
SCADomainProxyImpl.addNode() line: 376 SCADomainProxyImpl.createRuntime()
line: 283 SCADomainProxyImpl.addNode(SCANode) line: 350 SCANodeImpl.init()
line: 225 SCANodeImpl.<init>(String, String, String) line: 136
SCANodeFactoryImpl.createSCANode(String, String) line: 54
LaunchCloud.main(String[]) line: 48
The source and target data types are:
class java.lang.String java:simpleType Element:
{http://domain.sca.tuscany.apache.org/}arg0 Type:
{http://www.w3.org/2001/XMLSchema}string
class java.lang.Object org.w3c.dom.Node Element:
{http://domain.sca.tuscany.apache.org}param0 Type:
{http://www.w3.org/2001/XMLSchema}string
It's surprising is to see dom.Node here as there is no reason to go
through a Node at all as the invocation is a Web Service call to the
DomainEventService... We are still using Axiom, right? :)
Thanks.
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]