Thanks Sebastien, all working now.

On 7/22/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
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]




--
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to