Hi, Luciano.

I'll review it.

Thanks,
Raymond

----- Original Message ----- From: "Luciano Resende" <[EMAIL PROTECTED]>
To: "tuscany-dev" <tuscany-dev@ws.apache.org>
Sent: Sunday, January 21, 2007 12:03 PM
Subject: Patch for Tuscany-914, was Re: Help on handling duplicated components via include files.


I have attached a patch for Tuscany-914 issue :
http://issues.apache.org/jira/browse/TUSCANY-914

Please, someone more familiar with the kernel area, take a quick look before
I check it in.

--
Luciano Resende
http://people.apache.org/~lresende

On 1/19/07, Luciano Resende <[EMAIL PROTECTED]> wrote:

Hi All

   Issue TUSCANY-914 is about handling duplicated component defined using
include SCDL files. The current behavior is that, the latest overrides
previous defined components, and this cause some side effects like
overriding properties values, etc. The JIRA suggests that an exception is
thrown. Looking at the Assembly spec 0.96, looks like the duplication
should be consider as an error, so please correct me if I'm wrong (and if
I'm wrong, disregard the rest of this e-mail :)   )

   I'm trying to find the right place to handle these duplicated
components, so far, I have tried compositeLoader.load and
compositeComponentType.add(componentDefinition), this last one was the
more promissor one, but looks like when loading the SCDL from my application (the one that has the duplicated components) the compositeComponentType does not find a previous component with the same name, even navigating trough all
the includes...

   Here is a debug code I was adding to the add method, to transverse all
the components :

    public void add(ComponentDefinition<? extends Implementation<?>>
componentDefinition) {
        //lresende - check for duplicated components
        System.out.println("=====================");
        System.out.println("Include : ");

        for (Include i : includes.values()) {
            System.out.println("   - " + i.getName());

            Iterator itComponents = i.getIncluded
().getComponents().values().iterator();
            while(itComponents.hasNext()){
ComponentDefinition<? extends Implementation<?>> component
= (ComponentDefinition<? extends Implementation<?>>) itComponents.next();
                System.out.println("   -   - " + component.getName());
            }
        }

        System.out.println("Adding component : " +
componentDefinition.getName ());
        if(components.containsKey(componentDefinition.getName()))
            System.out.println("Duplicated component : " +
componentDefinition.getName());

        if(componentNameList.containsKey (componentDefinition.getName()))
            System.out.println("Duplicated component : " +
componentDefinition.getName());

        components.put(componentDefinition.getName(),
componentDefinition);
    }


   As a result, i was getting something like :

Adding component : localBindingLoader
=====================
Include :
   - org.apache.tuscany.core.JavaImplementation
   -   - java.componentBuilder
   -   - java.implementationLoader
   -   - java.componentTypeLoader
   - org.apache.tuscany.core.InterfaceJava
   -   - interfaceJava.loader
   ...........
Adding component : localBindingBuilder
=====================
Include :
Adding component : HelloComponent
=====================
Include :
Adding component : HelloComponent
Hello2


   Would you guys help me understand this load phase little better, and
where would be a better place for me to try to handle these duplicated
components ?

--
Luciano Resende
http://people.apache.org/~lresende <http://people.apache.org/%7Elresende>



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

Reply via email to