Uploaded image for project: 'Tuscany'
  1. Tuscany
  2. TUSCANY-3874

Redundant namespace prefixes when creating new components

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • Java-SCA-1.5.1, Java-SCA-1.6.2
    • None
    • None
    • Windows XP, jre 1.6

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            adrianp@mx1.ibm.com Adrian Padilla
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: