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/02/26 23:55:34 UTC

svn commit: r512057 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/deployer/federation/ core/src/main/java/org/apache/tuscany/core/marshaller/ spi/src/main/java/org/apache/tuscany/spi/marshaller/

Author: meerajk
Date: Mon Feb 26 14:55:33 2007
New Revision: 512057

URL: http://svn.apache.org/viewvc?view=rev&rev=512057
Log:
half-baked marshaller and physical model definitions that build

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshallException.java
      - copied, changed from r511874, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshalException.java
Removed:
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshalException.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/FederatedDeployer.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/JavaComponentDeployer.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/DefaultModelMarshallerRegistry.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/JavaPhysicalComponentDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshaller.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshallerRegistry.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/FederatedDeployer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/FederatedDeployer.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/FederatedDeployer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/FederatedDeployer.java Mon Feb 26 14:55:33 2007
@@ -25,7 +25,7 @@
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
 import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.marshaller.MarshalException;
+import org.apache.tuscany.spi.marshaller.MarshallException;
 import org.apache.tuscany.spi.marshaller.ModelMarshallerRegistry;
 import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
 import org.apache.tuscany.spi.services.discovery.DiscoveryService;
@@ -65,7 +65,7 @@
             final C component = buildComponent(definition);
             component.start();
 
-        } catch (MarshalException ex) {
+        } catch (MarshallException ex) {
             return null;
         } catch (BuilderException ex) {
             return null;
@@ -136,9 +136,9 @@
      *
      * @param content XML content stream.
      * @return Physical component definition.
-     * @throws MarshalException If unable to marshall the component definition.
+     * @throws MarshallException If unable to marshall the component definition.
      */
-    protected abstract PCD unmarshallDefinition(XMLStreamReader content) throws MarshalException;
+    protected abstract PCD unmarshallDefinition(XMLStreamReader content) throws MarshallException;
 
     /**
      * Builds the component from the physical component definition.

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/JavaComponentDeployer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/JavaComponentDeployer.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/JavaComponentDeployer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/federation/JavaComponentDeployer.java Mon Feb 26 14:55:33 2007
@@ -27,9 +27,7 @@
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
-import org.apache.tuscany.spi.marshaller.MarshalException;
-import org.apache.tuscany.spi.marshaller.ModelMarshaller;
-import org.apache.tuscany.spi.marshaller.ModelMarshallerRegistry;
+import org.apache.tuscany.spi.marshaller.MarshallException;
 
 /**
  * Federated deployer responsible for deploying Java components.
@@ -43,7 +41,7 @@
      * 
      * @param content XML content stream.
      * @return Physical component definition.
-     * @throws MarshalException If unable to marshall the component definition.
+     * @throws MarshallException If unable to marshall the component definition.
      */
     @Override
     protected QName getQualifiedName() {
@@ -74,13 +72,8 @@
      * @return The qualified name of the document element.
      */
     @Override
-    protected JavaPhysicalComponentDefinition unmarshallDefinition(XMLStreamReader content) throws MarshalException {
-
-        ModelMarshallerRegistry marshallerRegistry = getMarshallerRegistry();
-        ModelMarshaller<JavaPhysicalComponentDefinition> marshaller =
-            marshallerRegistry.getMarshaller(JavaPhysicalComponentDefinition.class);
-        return marshaller.unmarshall(content);
-
+    protected JavaPhysicalComponentDefinition unmarshallDefinition(XMLStreamReader content) throws MarshallException {
+        throw new UnsupportedOperationException();
     }
 
 }

Added: 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=auto&rev=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/AbstractMarshallerExtension.java Mon Feb 26 14:55:33 2007
@@ -0,0 +1,64 @@
+/*
+ * 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.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.marshaller.MarshallException;
+import org.apache.tuscany.spi.marshaller.ModelMarshaller;
+import org.apache.tuscany.spi.marshaller.ModelMarshallerRegistry;
+import org.apache.tuscany.spi.model.ModelObject;
+
+public abstract class AbstractMarshallerExtension<MD extends ModelObject> implements ModelMarshaller<MD> {
+
+    // Private Model marshaller registry
+    private ModelMarshallerRegistry registry;
+    
+    /**
+     * Injects the model marshaller registry.
+     * @param registry Model marshaller registry.
+     */
+    @Autowire
+    public void setRegistry(ModelMarshallerRegistry registry) {
+        
+        this.registry = registry;
+        
+        Class<MD> marshallerType = getModelObjectType();
+        QName marshallerQName = getModelObjectQName();
+        
+        registry.registerMarshaller(marshallerType, marshallerQName, this);
+        
+    }
+    
+    /**
+     * 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();
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/DefaultModelMarshallerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/DefaultModelMarshallerRegistry.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/DefaultModelMarshallerRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/DefaultModelMarshallerRegistry.java Mon Feb 26 14:55:33 2007
@@ -18,14 +18,17 @@
  */
 package org.apache.tuscany.core.marshaller;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.spi.marshaller.MarshallException;
 import org.apache.tuscany.spi.marshaller.ModelMarshaller;
 import org.apache.tuscany.spi.marshaller.ModelMarshallerRegistry;
 import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.model.physical.PhysicalChangeSet;
 
 /**
  * Default map-based implementation of the model marshaller registry.
@@ -33,59 +36,61 @@
  * @version $Rev$ $Date$
  */
 public class DefaultModelMarshallerRegistry implements ModelMarshallerRegistry {
+    
+    // Marshaller registry
+    private final Map<Class<? extends ModelObject>, ModelMarshaller> marshallerRegistry = new ConcurrentHashMap<Class<? extends ModelObject>, ModelMarshaller>();
+    
+    // Unmarshaller registry
+    private final Map<QName, ModelMarshaller> unmarshallerRegistry = new ConcurrentHashMap<QName, ModelMarshaller>();
 
     /**
-     * Gets a marshaller for marshalling.
+     * Registers a model object marshaller.
      * 
      * @param <MD> Model object type.
      * @param modelClass Model obejct class.
-     * @return Model object marshaller.
-     */
-    public <MD extends ModelObject> ModelMarshaller<MD> getMarshaller(Class<MD> modelClass) {
-        return null;
-    }
-
-    /**
-     * Gets a marshaller for unmarshalling.
-     * 
-     * @param <MD> Model object type.
      * @param qname Qualified name of the root element of the marshalled XML.
-     * @return Model object marshaller.
+     * @param marshaller Model object marshaller.
      */
-    public <MD extends ModelObject> ModelMarshaller<MD> getMarshaller(QName qname) {
-        return null;
+    public <MD extends ModelObject> void registerMarshaller(Class<MD> modelClass,
+                                                            QName qname,
+                                                            ModelMarshaller<MD> marshaller) {
+        marshallerRegistry.put(modelClass, marshaller);
+        unmarshallerRegistry.put(qname, marshaller);
     }
 
     /**
-     * Marshalls a physical change set.
+     * Marshalls a model object.
      * 
-     * @param changeSet Physical chaneg set to be marshalled.
+     * @param modelObject Model object to be marshalled.
      * @param writer Writer to which marshalled information is written.
      */
-    public void marshall(PhysicalChangeSet changeSet, XMLStreamWriter writer) {
-    }
-
-    /**
-     * Registers a model object marshaller.
-     * 
-     * @param <MD> Model object type.
-     * @param modelClass Model obejct class.
-     * @param qname Qualified name of the root element of the marshalled XML.
-     * @param marshaller Model object marshaller.
-     */
-    public <MD extends ModelObject> void registerMarshaller(Class<MD> modelClass,
-                                                            QName qname,
-                                                            ModelMarshaller<MD> marshaller) {
+    @SuppressWarnings("unchecked")
+    public void marshall(ModelObject modelObject, XMLStreamWriter writer) throws MarshallException {
+        
+        ModelMarshaller marshaller = marshallerRegistry.get(modelObject.getClass());
+        if(marshaller == null) {
+            throw new MarshallException("No marshaller defined for " + modelObject.getClass());
+        }
+        marshaller.marshall(modelObject, writer);
+        
     }
 
     /**
-     * Unmarshalls an XML stream to a physical change set.
+     * Unmarshalls an XML stream to a model object.
      * 
      * @param reader Reader from which marshalled information is read.
-     * @return Physical chnage set from the marshalled stream.
+     * @return Model object from the marshalled stream.
      */
-    public PhysicalChangeSet unmarshall(XMLStreamReader reader) {
-        return null;
+    public ModelObject unmarshall(XMLStreamReader reader) throws MarshallException {
+        
+        QName qname = reader.getName();
+        
+        ModelMarshaller marshaller = unmarshallerRegistry.get(qname);
+        if(marshaller == null) {
+            throw new MarshallException("No marshaller defined for " + qname);
+        }
+        return marshaller.unmarshall(reader);
+        
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/JavaPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/JavaPhysicalComponentDefinitionMarshaller.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/JavaPhysicalComponentDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/JavaPhysicalComponentDefinitionMarshaller.java Mon Feb 26 14:55:33 2007
@@ -31,7 +31,7 @@
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.tuscany.core.component.JavaPhysicalComponentDefinition;
-import org.apache.tuscany.spi.marshaller.MarshalException;
+import org.apache.tuscany.spi.marshaller.MarshallException;
 import org.apache.tuscany.spi.marshaller.ModelMarshaller;
 
 /**
@@ -65,9 +65,9 @@
      * 
      * @param modelObject Component definition object to be serialized.
      * @param writer Stream writer to which the infoset is serialized.
-     * @throws MarshalException In case of any marshalling error.
+     * @throws MarshallException In case of any marshalling error.
      */
-    public void marshall(JavaPhysicalComponentDefinition modelObject, XMLStreamWriter writer) throws MarshalException {
+    public void marshall(JavaPhysicalComponentDefinition modelObject, XMLStreamWriter writer) throws MarshallException {
         
         try {
             
@@ -90,7 +90,7 @@
             writer.flush();
             
         } catch (XMLStreamException ex) {
-            throw new MarshalException(ex);
+            throw new MarshallException(ex);
         }
     }
 
@@ -99,9 +99,9 @@
      * 
      * @param reader XML stream from where the marshalled XML is read.
      * @return Hydrated component definition object.
-     * @throws MarshalException In case of any unmarshalling error.
+     * @throws MarshallException In case of any unmarshalling error.
      */
-    public JavaPhysicalComponentDefinition unmarshall(XMLStreamReader reader) throws MarshalException {
+    public JavaPhysicalComponentDefinition unmarshall(XMLStreamReader reader) throws MarshallException {
         
         try {
             
@@ -121,15 +121,15 @@
             }
             
             if (definition.getComponentId() == null || definition.getInstanceFactoryByteCode() == null) {
-                throw new MarshalException("Invalid component definition");
+                throw new MarshallException("Invalid component definition");
             }
             
             return definition;
             
         } catch (XMLStreamException ex) {
-            throw new MarshalException(ex);
+            throw new MarshallException(ex);
         } catch (URISyntaxException ex) {
-            throw new MarshalException(ex);
+            throw new MarshallException(ex);
         }
         
     }

Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshallException.java (from r511874, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshalException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshallException.java?view=diff&rev=512057&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshalException.java&r1=511874&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshallException.java&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshalException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/MarshallException.java Mon Feb 26 14:55:33 2007
@@ -26,14 +26,14 @@
  * @version $Rev$ $Date$
  */
 @SuppressWarnings("serial")
-public class MarshalException extends TuscanyException {
+public class MarshallException extends TuscanyException {
 
     /**
      * Initializes the exception message.
      * 
      * @param message Message for the exception.
      */
-    public MarshalException(String message) {
+    public MarshallException(String message) {
         super(message);
     }
 
@@ -42,7 +42,7 @@
      * 
      * @param cause Root cause for the exception.
      */
-    public MarshalException(Throwable cause) {
+    public MarshallException(Throwable cause) {
         super(cause);
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshaller.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshaller.java Mon Feb 26 14:55:33 2007
@@ -36,17 +36,17 @@
      * 
      * @param modelObject Physical component definition to be serialized.
      * @param writer Stream writer to which the infoset is serialized.
-     * @throws MarshalException In case of any marshalling error.
+     * @throws MarshallException In case of any marshalling error.
      */
-    void marshall(MD modelObject, XMLStreamWriter writer) throws MarshalException;
+    void marshall(MD modelObject, XMLStreamWriter writer) throws MarshallException;
 
     /**
      * Unmarshalls an XML stream to a model object.
      * 
      * @param reader XML stream from where the marshalled XML is read.
      * @return Physical component definition.
-     * @throws MarshalException In case of any unmarshalling error.
+     * @throws MarshallException In case of any unmarshalling error.
      */
-    MD unmarshall(XMLStreamReader reader) throws MarshalException;
+    MD unmarshall(XMLStreamReader reader) throws MarshallException;
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshallerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshallerRegistry.java?view=diff&rev=512057&r1=512056&r2=512057
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshallerRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/marshaller/ModelMarshallerRegistry.java Mon Feb 26 14:55:33 2007
@@ -23,7 +23,6 @@
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.model.physical.PhysicalChangeSet;
 
 /**
  * A registry for model object marshallers.
@@ -43,37 +42,19 @@
     <MD extends ModelObject> void registerMarshaller(Class<MD> modelClass, QName qname, ModelMarshaller<MD> marshaller);
 
     /**
-     * Gets a marshaller for marshalling.
+     * Marshalls a model object.
      * 
-     * @param <MD> Model object type.
-     * @param modelClass Model obejct class.
-     * @return Model object marshaller.
-     */
-    <MD extends ModelObject> ModelMarshaller<MD> getMarshaller(Class<MD> modelClass);
-    
-    /**
-     * Gets a marshaller for unmarshalling.
-     * 
-     * @param <MD> Model object type.
-     * @param qname Qualified name of the root element of the marshalled XML.
-     * @return Model object marshaller.
-     */
-    <MD extends ModelObject> ModelMarshaller<MD> getMarshaller(QName qname);
-
-    /**
-     * Marshalls a physical change set.
-     * 
-     * @param changeSet Physical chaneg set to be marshalled.
+     * @param modelObject Model object to be marshalled.
      * @param writer Writer to which marshalled information is written.
      */
-    void marshall(PhysicalChangeSet changeSet, XMLStreamWriter writer);
+    void marshall(ModelObject modelObject, XMLStreamWriter writer) throws MarshallException;
 
     /**
-     * Unmarshalls an XML stream to a physical change set.
+     * Unmarshalls an XML stream to a model object.
      * 
      * @param reader Reader from which marshalled information is read.
-     * @return Physical chnage set from the marshalled stream.
+     * @return Model object from the marshalled stream.
      */
-    PhysicalChangeSet unmarshall(XMLStreamReader reader);
+    ModelObject unmarshall(XMLStreamReader reader) throws MarshallException;
 
 }



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