Luciano Resende wrote:
I'm in the process of integrating the Model Resolver extensibility to
the DefaultSCADomain, and came across some issues on how the
ExtensionHelper is performing resolution of component types, looks
like it traverse all the models in the ModelResolver to find any
componentTypes [1]. I was trying to use the resolver to actually
resolve the componentType, but looks like there isn't enough
information on the PojoImplementation, as the call to
SCDLProcessor.addSideFileComponentType always get the "name" parameter
as null, and impl.getUri() is also always null.
Can someone more familiar with the
ExtensionHelper/implementation-script give me some hints on what tasks
need to be performed during the resolve phase ? I'll be on IRC, if a
quick chat is easier.
I have made a patch available on the following JIRA[2], in case people
can give some help.
[1]
https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java
[2] https://issues.apache.org/jira/browse/TUSCANY-1475
The logic in getComponentType looks like it's trying all componentTypes
against all properties of the bean. I think this needs to be cleaned up
a little as it'll lead to pretty unpredictable behavior but in the
meantime, try this:
private ComponentType getComponentType(ModelResolver resolver,
Implementation impl) throws IllegalArgumentException,
IllegalAccessException, InvocationTargetException {
for (Method m : getGetters()) {
Object io;
if (impl instanceof PojoImplementation) {
io = ((PojoImplementation)impl).getUserImpl();
} else {
io = impl;
}
String value = (String) m.invoke(io, new Object[]{});
if (value != null) {
value = value.substring(0, value.lastIndexOf('.'));
ComponentType componentType =
assemblyFactory.createComponentType();
componentType.setUnresolved(true);
componentType.setURI(value + ".componentType");
componentType =
resolver.resolveModel(ComponentType.class, componentType);
if (!componentType.isUnresolved()) {
return componentType;
}
}
}
return null;
}
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]