You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by me...@apache.org on 2007/03/03 13:08:21 UTC

svn commit: r514136 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/marshaller/ main/java/org/apache/tuscany/core/marshaller/java/ test/resources/marshall/

Author: meerajk
Date: Sat Mar  3 04:08:20 2007
New Revision: 514136

URL: http://svn.apache.org/viewvc?view=rev&rev=514136
Log:
Added support to abstract extensions

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/
    incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalComponentDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalReferenceDefinitionMarshaller.java

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java?view=auto&rev=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java Sat Mar  3 04:08:20 2007
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.core.marshaller;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.spi.model.ModelObject;
+
+/**
+ * Abstract marshaller that supports extensible model objects.
+ * 
+ * @version $Revision$ $Date$
+ *
+ * @param <MD>
+ */
+public abstract class AbstractExtensibleMarshallerExtension<MD extends ModelObject> extends AbstractMarshallerExtension<MD> {
+
+    /**
+     * Create the concrete model object.
+     * @return Concrete model object.
+     */
+    protected abstract MD getConcreteModelObject();
+    
+    /**
+     * Handles extensions for unmarshalling.
+     * @param modelObject Concrete model object.
+     * @param reader Reader from which marshalled data is read.
+     */
+    protected abstract void handleExtensions(MD modelObject, XMLStreamReader reader);
+    
+    /**
+     * Handles extensions for marshalling.
+     * @param modelObject Concrete model object.
+     * @param reader Writer to which marshalled data is written.
+     */
+    protected abstract void handleExtensions(MD modelObject, XMLStreamWriter writer);
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractExtensibleMarshallerExtension.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java?view=diff&rev=514136&r1=514135&r2=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java Sat Mar  3 04:08:20 2007
@@ -20,12 +20,18 @@
 
 import javax.xml.namespace.QName;
 
-import org.osoa.sca.annotations.Reference;
-
 import org.apache.tuscany.spi.marshaller.ModelMarshaller;
 import org.apache.tuscany.spi.marshaller.ModelMarshallerRegistry;
 import org.apache.tuscany.spi.model.ModelObject;
+import org.osoa.sca.annotations.Reference;
 
+/**
+ * Abstract marshaller that supports marshaller registry.
+ * 
+ * @version $Revision$ $Date$
+ *
+ * @param <MD>
+ */
 public abstract class AbstractMarshallerExtension<MD extends ModelObject> implements ModelMarshaller<MD> {
 
     // Private Model marshaller registry
@@ -33,7 +39,6 @@
 
     /**
      * Injects the model marshaller registry.
-     *
      * @param registry Model marshaller registry.
      */
     @Reference
@@ -50,14 +55,12 @@
 
     /**
      * Gets the qualified name of the XML fragment for the marshalled model object.
-     *
      * @return Qualified name of the XML fragment.
      */
     protected abstract QName getModelObjectQName();
 
     /**
      * Retursn the type of the model object.
-     *
      * @return Model object type.
      */
     protected abstract Class<MD> getModelObjectType();

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java?view=auto&rev=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java Sat Mar  3 04:08:20 2007
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.core.marshaller;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.spi.marshaller.MarshallException;
+import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalReferenceDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalServiceDefinition;
+
+/**
+ * Abstract super class for all PCD marshallers.
+ * 
+ * @version $Revision$ $Date$
+ */
+public abstract class AbstractPhysicalComponentDefinitionMarshaller<PCD extends PhysicalComponentDefinition> extends AbstractExtensibleMarshallerExtension<PCD> {
+
+    // Component id attribute
+    private static final String COMPONENT_ID = "componentId";
+
+    // Reference
+    private static final String REFERENCE = "reference";
+
+    // Service
+    private static final String SERVICE = "service";
+
+    /**
+     * Marshalls a physical change set to the xml writer.
+     */
+    public final void marshall(PCD modelObject, XMLStreamWriter writer) throws MarshallException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Unmarshalls a physical change set from the xml reader.
+     */
+    public final PCD unmarshall(XMLStreamReader reader) throws MarshallException {
+
+        try {
+            PCD componentDefinition = getConcreteModelObject();
+            componentDefinition.setComponentId(new URI(reader.getAttributeValue(null, COMPONENT_ID)));
+            while (true) {
+                switch (reader.next()) {
+                    case START_ELEMENT:
+                        String name = reader.getName().getLocalPart();
+                        if(REFERENCE.equals(name)) {
+                            PhysicalReferenceDefinition reference = (PhysicalReferenceDefinition) registry.unmarshall(reader);
+                            componentDefinition.addReference(reference);
+                        } else if(SERVICE.equals(name)) {
+                            PhysicalServiceDefinition service = (PhysicalServiceDefinition) registry.unmarshall(reader);
+                            componentDefinition.addService(service);
+                        } else {
+                            handleExtensions(componentDefinition, reader);
+                        }
+                        break;
+                    case END_ELEMENT:
+                        return componentDefinition;
+
+                }
+            }
+        } catch (XMLStreamException ex) {
+            throw new MarshallException(ex);
+        } catch (URISyntaxException ex) {
+            throw new MarshallException(ex);
+        }
+
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalComponentDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java?view=auto&rev=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java Sat Mar  3 04:08:20 2007
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.core.marshaller;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.spi.marshaller.MarshallException;
+import org.apache.tuscany.spi.model.ModelObject;
+import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalReferenceDefinition;
+
+/**
+ * Marshaller for java physical reference definition.
+ * 
+ * @version $Revision$ $Date$
+ */
+public abstract class AbstractPhysicalReferenceDefinitionMarshaller<PRD extends PhysicalReferenceDefinition> extends AbstractExtensibleMarshallerExtension<PRD> {
+
+    // Local part for operation
+    private static final String OPERATION = "operation";
+    
+    // Source name attribute
+    private static final String NAME = "name";
+
+    /**
+     * Marshalls a physical java reference definition to the xml writer.
+     */
+    public void marshall(PRD modelObject, XMLStreamWriter writer) throws MarshallException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Unmarshalls a java physical reference definition from the xml reader.
+     */
+    public PRD unmarshall(XMLStreamReader reader) throws MarshallException {
+        
+        try {
+            PRD referenceDefinition = getConcreteModelObject();
+            referenceDefinition.setName(reader.getAttributeValue(null, NAME));
+            while (true) {
+                switch (reader.next()) {
+                    case START_ELEMENT:
+                        ModelObject modelObject = registry.unmarshall(reader);
+                        String name = reader.getName().getLocalPart();
+                        if(OPERATION.equals(name)) {
+                            referenceDefinition.addOperation((PhysicalOperationDefinition)modelObject);
+                        } else {
+                            handleExtensions(referenceDefinition, reader);
+                        }
+                        break;
+                    case END_ELEMENT:
+                        return referenceDefinition;
+
+                }
+            }
+        } catch (XMLStreamException ex) {
+            throw new MarshallException(ex);
+        }
+        
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalReferenceDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java?view=auto&rev=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java Sat Mar  3 04:08:20 2007
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.core.marshaller;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.spi.marshaller.MarshallException;
+import org.apache.tuscany.spi.model.ModelObject;
+import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalServiceDefinition;
+
+/**
+ * Marshaller for java physical service definition.
+ * 
+ * @version $Revision$ $Date$
+ */
+public abstract class AbstractPhysicalServiceDefinitionMarshaller<PSD extends PhysicalServiceDefinition> extends AbstractExtensibleMarshallerExtension<PSD> {
+
+//  Local part for operation
+    private static final String OPERATION = "operation";
+    
+    // Source name attribute
+    private static final String NAME = "name";
+
+    /**
+     * Marshalls a physical java reference definition to the xml writer.
+     */
+    public void marshall(PSD modelObject, XMLStreamWriter writer) throws MarshallException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Unmarshalls a java physical reference definition from the xml reader.
+     */
+    public PSD unmarshall(XMLStreamReader reader) throws MarshallException {
+        
+        try {
+            PSD serviceDefinition = getConcreteModelObject();
+            serviceDefinition.setName(reader.getAttributeValue(null, NAME));
+            while (true) {
+                switch (reader.next()) {
+                    case START_ELEMENT:
+                        ModelObject modelObject = registry.unmarshall(reader);
+                        String name = reader.getName().getLocalPart();
+                        if(OPERATION.equals(name)) {
+                            serviceDefinition.addOperation((PhysicalOperationDefinition)modelObject);
+                        } else {
+                            handleExtensions(serviceDefinition, reader);
+                        }
+                        break;
+                    case END_ELEMENT:
+                        return serviceDefinition;
+
+                }
+            }
+        } catch (XMLStreamException ex) {
+            throw new MarshallException(ex);
+        }
+        
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractPhysicalServiceDefinitionMarshaller.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalComponentDefinitionMarshaller.java?view=diff&rev=514136&r1=514135&r2=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalComponentDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalComponentDefinitionMarshaller.java Sat Mar  3 04:08:20 2007
@@ -18,95 +18,73 @@
  */
 package org.apache.tuscany.core.marshaller.java;
 
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
 import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.commons.codec.binary.Base64;
-import org.apache.tuscany.core.marshaller.AbstractMarshallerExtension;
+import org.apache.tuscany.core.marshaller.AbstractPhysicalComponentDefinitionMarshaller;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
-import org.apache.tuscany.spi.marshaller.MarshallException;
-import org.apache.tuscany.spi.model.physical.PhysicalReferenceDefinition;
-import org.apache.tuscany.spi.model.physical.PhysicalServiceDefinition;
 
 /**
  * Marshaller for physical wire definition.
  * 
  * @version $Revision$ $Date$
  */
-public class JavaPhysicalComponentDefinitionMarshaller extends AbstractMarshallerExtension<JavaPhysicalComponentDefinition> {
-
-    // Component id attribute
-    private static final String COMPONENT_ID = "componentId";
-
-    // Reference
-    private static final String REFERENCE = "reference";
-
-    // Service
-    private static final String SERVICE = "service";
+public class JavaPhysicalComponentDefinitionMarshaller extends AbstractPhysicalComponentDefinitionMarshaller<JavaPhysicalComponentDefinition> {
 
     // Instance factory
     private static final String INSTANCE_FACTORY = "instanceFactory";
 
     // QName for the root element
     private static final QName QNAME = new QName("http://tuscany.apache.org/xmlns/marshaller/component/java/1.0-SNAPSHOT", "component");
-
+    
     /**
-     * Marshalls a physical change set to the xml writer.
+     * Create the concrete PCD.
+     * @return Java physical component definition
      */
-    public void marshall(JavaPhysicalComponentDefinition modelObject, XMLStreamWriter writer) throws MarshallException {
-        throw new UnsupportedOperationException();
+    @Override
+    protected JavaPhysicalComponentDefinition getConcreteModelObject() {
+        return new JavaPhysicalComponentDefinition();
     }
-
+    
     /**
-     * Unmarshalls a physical change set from the xml reader.
+     * Handles extensions for unmarshalling.
+     * @param componentDefinition Physical component definition.
+     * @param reader Reader from which marshalled data is read.
      */
-    public JavaPhysicalComponentDefinition unmarshall(XMLStreamReader reader) throws MarshallException {
-
-        try {
-            JavaPhysicalComponentDefinition javaPhysicalComponentDefinition = new JavaPhysicalComponentDefinition();
-            javaPhysicalComponentDefinition.setComponentId(new URI(reader.getAttributeValue(null, COMPONENT_ID)));
-            while (true) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        String name = reader.getName().getLocalPart();
-                        if(REFERENCE.equals(name)) {
-                            PhysicalReferenceDefinition reference = (PhysicalReferenceDefinition) registry.unmarshall(reader);
-                            javaPhysicalComponentDefinition.addReference(reference);
-                        } else if(SERVICE.equals(name)) {
-                            PhysicalServiceDefinition service = (PhysicalServiceDefinition) registry.unmarshall(reader);
-                            javaPhysicalComponentDefinition.addService(service);
-                        } else if(INSTANCE_FACTORY.equals(name)) {
-                            byte[] base64ByteCode = reader.getText().getBytes();
-                            byte[] byteCode = Base64.decodeBase64(base64ByteCode);
-                            javaPhysicalComponentDefinition.setInstanceFactoryByteCode(byteCode);
-                        }
-                        break;
-                    case END_ELEMENT:
-                        return javaPhysicalComponentDefinition;
-
-                }
-            }
-        } catch (XMLStreamException ex) {
-            throw new MarshallException(ex);
-        } catch (URISyntaxException ex) {
-            throw new MarshallException(ex);
+    @Override
+    protected void handleExtensions(JavaPhysicalComponentDefinition componentDefinition, XMLStreamReader reader) {
+        String name = reader.getName().getLocalPart();
+        if(INSTANCE_FACTORY.equals(name)) {
+            byte[] base64ByteCode = reader.getText().getBytes();
+            byte[] byteCode = Base64.decodeBase64(base64ByteCode);
+            componentDefinition.setInstanceFactoryByteCode(byteCode);
         }
-
+    }
+    
+    /**
+     * Handles extensions for marshalling.
+     * @param componentDefinition Physical component definition.
+     * @param reader Writer to which marshalled data is written.
+     */
+    @Override
+    protected void handleExtensions(JavaPhysicalComponentDefinition componentDefinition, XMLStreamWriter writer) {
     }
 
+    /**
+     * Gets the qualified name of the XML fragment for the marshalled model object.
+     * @return Qualified name of the XML fragment.
+     */
     @Override
     protected QName getModelObjectQName() {
         return QNAME;
     }
 
+    /**
+     * Retursn the type of the model object.
+     * @return Model object type.
+     */
     @Override
     protected Class<JavaPhysicalComponentDefinition> getModelObjectType() {
         return JavaPhysicalComponentDefinition.class;

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalReferenceDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalReferenceDefinitionMarshaller.java?view=diff&rev=514136&r1=514135&r2=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalReferenceDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/java/JavaPhysicalReferenceDefinitionMarshaller.java Sat Mar  3 04:08:20 2007
@@ -18,79 +18,70 @@
  */
 package org.apache.tuscany.core.marshaller.java;
 
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-
 import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
-import org.apache.tuscany.core.marshaller.AbstractMarshallerExtension;
+import org.apache.tuscany.core.marshaller.AbstractPhysicalReferenceDefinitionMarshaller;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalReferenceDefinition;
-import org.apache.tuscany.spi.marshaller.MarshallException;
-import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
 
 /**
  * Marshaller for java physical reference definition.
  * 
  * @version $Revision$ $Date$
  */
-public class JavaPhysicalReferenceDefinitionMarshaller extends AbstractMarshallerExtension<JavaPhysicalReferenceDefinition> {
-
-    // Local part for operation
-    private static final String OPERATION = "operation";
-    
-    // Source name attribute
-    private static final String NAME = "name";
+public class JavaPhysicalReferenceDefinitionMarshaller extends AbstractPhysicalReferenceDefinitionMarshaller<JavaPhysicalReferenceDefinition> {
     
     // QName for the root element
     private static final QName QNAME = new QName("http://tuscany.apache.org/xmlns/marshaller/reference/java/1.0-SNAPSHOT", "service");
 
     /**
-     * Marshalls a physical java reference definition to the xml writer.
+     * Gets the qualified name of the XML fragment for the marshalled model object.
+     * @return Qualified name of the XML fragment.
      */
-    public void marshall(JavaPhysicalReferenceDefinition modelObject, XMLStreamWriter writer) throws MarshallException {
-        throw new UnsupportedOperationException();
+    @Override
+    protected QName getModelObjectQName() {
+        return QNAME;
     }
 
     /**
-     * Unmarshalls a java physical reference definition from the xml reader.
+     * Retursn the type of the model object.
+     * @return Model object type.
      */
-    public JavaPhysicalReferenceDefinition unmarshall(XMLStreamReader reader) throws MarshallException {
-        
-        try {
-            JavaPhysicalReferenceDefinition referenceDefinition = new JavaPhysicalReferenceDefinition();
-            referenceDefinition.setName(reader.getAttributeValue(null, NAME));
-            while (true) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        ModelObject modelObject = registry.unmarshall(reader);
-                        String name = reader.getName().getLocalPart();
-                        if(OPERATION.equals(name)) {
-                            referenceDefinition.addOperation((PhysicalOperationDefinition)modelObject);
-                        }
-                        break;
-                    case END_ELEMENT:
-                        return referenceDefinition;
-
-                }
-            }
-        } catch (XMLStreamException ex) {
-            throw new MarshallException(ex);
-        }
-        
+    @Override
+    protected Class<JavaPhysicalReferenceDefinition> getModelObjectType() {
+        return JavaPhysicalReferenceDefinition.class;
+    }
+
+    /**
+     * Create the concrete model object.
+     * @return Concrete model object.
+     */
+    @Override
+    protected JavaPhysicalReferenceDefinition getConcreteModelObject() {
+        return new JavaPhysicalReferenceDefinition();
     }
 
+    /**
+     * Handles extensions for unmarshalling.
+     * @param modelObject Concrete model object.
+     * @param reader Reader from which marshalled data is read.
+     */
     @Override
-    protected QName getModelObjectQName() {
-        return QNAME;
+    protected void handleExtensions(JavaPhysicalReferenceDefinition modelObject, XMLStreamReader reader) {
+        // TODO Auto-generated method stub
+        
     }
 
+    /**
+     * Handles extensions for marshalling.
+     * @param modelObject Concrete model object.
+     * @param reader Writer to which marshalled data is written.
+     */
     @Override
-    protected Class<JavaPhysicalReferenceDefinition> getModelObjectType() {
-        return JavaPhysicalReferenceDefinition.class;
+    protected void handleExtensions(JavaPhysicalReferenceDefinition modelObject, XMLStreamWriter writer) {
+        // TODO Auto-generated method stub
+        
     }
 
 }

Added: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml?view=auto&rev=514136
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml Sat Mar  3 04:08:20 2007
@@ -0,0 +1,19 @@
+<changeSet>
+	
+	<component>
+		
+	</component>
+	
+	<component>
+		
+	</component>
+	
+	<wire>
+		
+	</wire>
+	
+	<wire>
+		
+	</wire>
+	
+</changeSet>
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org