Hi again!
So, I have become desperate :-) and started poking around in the Tuscany
source code.
The NullPointerException that I experienced earlier is caused by a
component type property having a null XSD element. I modified the code,
as below, to avoid the NullPointerException.
[code]
...
// check that the types specified in the component type and
component property match
if (componentProperty.getXSDElement() != null
&& !componentProperty.getXSDElement().equals(
componentTypeProperty.getXSDElement()))
{
// MY MODIFICATION HERE.
String theCompTypePropXSDElem = "[not available]";
if (componentTypeProperty
.getXSDElement() != null)
{
theCompTypePropXSDElem =
componentTypeProperty.getXSDElement().toString();
}
Monitor.error(monitor, this, Messages.ASSEMBLY_VALIDATION,
"PropertXSDElementsDontMatch", component.getName(),
componentProperty.getName(), componentProperty
.getXSDElement().toString(),
theCompTypePropXSDElem);
}
...
[/code]
With this modification in place, I now receive the following messages in
the log:
Dec 17, 2009 10:28:54 PM
org.apache.tuscany.sca.builder.impl.ComponentBuilderImpl [Composite:
{http://docs.oasis-open.org/ns/opencsa/sca/200
903}, Component: ServiceComponent1] (PropertXSDElementsDontMatch)
SEVERE: [ASM_5036] The property component ServiceComponent1 property
myComplexProp has XSD element {http://foo.com}fooElement while its comp
onent type property has the XSD element [not available]
java.lang.IllegalStateException:
org.oasisopen.sca.ServiceRuntimeException: [Composite:
{http://docs.oasis-open.org/ns/opencsa/sca/200903},
Component: ServiceComponent1] - [ASM_5036] The property component
ServiceComponent1 property myComplexProp has XSD element {http://foo.com}f
ooElement while its component type property has the XSD element [not
available]
at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:176)
at
com.ivan.SmallPropertyTestMain.doStuffTuscany2(SmallPropertyTestMain.java:58)
at com.ivan.SmallPropertyTestMain.main(SmallPropertyTestMain.java:29)
Caused by: org.oasisopen.sca.ServiceRuntimeException: [Composite:
{http://docs.oasis-open.org/ns/opencsa/sca/200903}, Component: ServiceComp
onent1] - [ASM_5036] The property component ServiceComponent1 property
myComplexProp has XSD element {http://foo.com}fooElement while its co
mponent type property has the XSD element [not available]
at
org.apache.tuscany.sca.node.impl.NodeFactoryImpl.analyzeProblems(NodeFactoryImpl.java:174)
at
org.apache.tuscany.sca.node.impl.NodeFactoryImpl.configureNode(NodeFactoryImpl.java:275)
at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:135)
... 2 more
Exception in thread "main" java.lang.NullPointerException
at com.ivan.SmallPropertyTestMain.main(SmallPropertyTestMain.java:31)
The question is: Why is the component type property null?
Isn't the property type supposed to be inferred from the field annotated
by the @Property annotation or have I misunderstood?
Best wishes,
Ivan