Redundant namespace prefixes when creating new components
---------------------------------------------------------

                 Key: TUSCANY-3874
                 URL: https://issues.apache.org/jira/browse/TUSCANY-3874
             Project: Tuscany
          Issue Type: Bug
          Components: Java SCA Assembly Model
    Affects Versions: Java-SCA-1.5.1, Java-SCA-1.6.2
         Environment: Windows XP, jre 1.6
            Reporter: Adrian Padilla


I am creating a couple of components using the following code:

import java.io.FileOutputStream;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.Component;
import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.implementation.widget.WidgetImplementation;
import org.apache.tuscany.sca.implementation.widget.WidgetImplementationFactory;

public class TuscanyCompositeSerializationTest {

        public static void main(String[] args) throws Exception {
                ExtensionPointRegistry registry = new 
DefaultExtensionPointRegistry();

                ModelFactoryExtensionPoint factories = registry
                                
.getExtensionPoint(ModelFactoryExtensionPoint.class);

                AssemblyFactory assemblyFactory = 
factories.getFactory(AssemblyFactory.class);
                XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
                XMLOutputFactory xmlOutputFactory = 
XMLOutputFactory.newInstance();
                factories.addFactory(xmlOutputFactory);
                factories.addFactory(xmlInputFactory);

                QName qName = new QName("http://www.example.org";, "test");
                Composite composite = assemblyFactory.createComposite();
                composite.setName(qName);

                List<Component> components = composite.getComponents();

                Component component = createWidgetComponent(factories, 
assemblyFactory,"A");
                components.add(component);

                component = createWidgetComponent(factories, assemblyFactory, 
"B");
                components.add(component);

                StAXArtifactProcessorExtensionPoint extensionPoint = registry
                                
.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
                StAXArtifactProcessor<Composite> processor = extensionPoint
                                .getProcessor(new QName(Constants.SCA10_NS, 
Constants.COMPOSITE));

                FileOutputStream fileOutputStream = new FileOutputStream(
                                "test.composite");
                XMLStreamWriter streamWriter = xmlOutputFactory
                                .createXMLStreamWriter(fileOutputStream);
                System.out.println(composite);
                processor.write(composite, streamWriter);
                fileOutputStream.close();
        }
        
        private static Component createWidgetComponent(
                        ModelFactoryExtensionPoint factories,
                        AssemblyFactory assemblyFactory, String name) {
                Component component = assemblyFactory.createComponent();
                component.setName(name);

                WidgetImplementationFactory widgetFactory = factories
                                .getFactory(WidgetImplementationFactory.class);
                WidgetImplementation widgetImpl = widgetFactory
                                .createWidgetImplementation();
                widgetImpl.setLocation(name + ".html");
                component.setImplementation(widgetImpl);
                return component;
        }
}


And the output of this run is:

<?xml version="1.0" encoding="UTF-8"?>
<composite targetNamespace="http://www.example.org"; name="test" local="true" 
xmlns="http://www.osoa.org/xmlns/sca/1.0";>
        <component name="A">
                <sp_0:implementation.widget 
                        location="A.html" 
                        xmlns:ns1="http://tuscany.apache.org/xmlns/sca/1.0"; 
                        xmlns:sp_0="http://tuscany.apache.org/xmlns/sca/1.0";>
                </sp_0:implementation.widget>
        </component>
        <component name="B">
                <sp_1:implementation.widget 
                        location="B.html" 
                        xmlns:ns1="http://tuscany.apache.org/xmlns/sca/1.0"; 
                        xmlns:sp_1="http://tuscany.apache.org/xmlns/sca/1.0";>
                </sp_1:implementation.widget>
        </component>
</composite>

Where http://tuscany.apache.org/xmlns/sca/1.0 is defined in every component I 
add to the composite.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to