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/12 21:28:11 UTC

svn commit: r517376 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/marshaller/extensions/ main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ main/java/org/apache/tuscany/core/marshaller/extensi...

Author: meerajk
Date: Mon Mar 12 13:28:06 2007
New Revision: 517376

URL: http://svn.apache.org/viewvc?view=rev&rev=517376
Log:
Added support for IFPD

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ByteCodeInstanceFactoryProviderDefinitionMarshaller.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveInstanceFactoryProviderDefinitionMarshaller.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractInstanceFactoryProviderDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractPhysicalComponentDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/ReflectiveInstanceFactoryProviderDefinition.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/marshaller/JavaPhysicalChangeSetMarshallerTest.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractInstanceFactoryProviderDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractInstanceFactoryProviderDefinitionMarshaller.java?view=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractInstanceFactoryProviderDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractInstanceFactoryProviderDefinitionMarshaller.java Mon Mar 12 13:28:06 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.core.marshaller.extensions;
 
+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;
@@ -60,9 +63,23 @@
      */
     public IFPD unmarshal(XMLStreamReader reader) throws MarshalException {
 
-        IFPD targetDefinition = getConcreteModelObject();
-        handleExtension(targetDefinition, reader);
-        return targetDefinition;
+        try {
+            IFPD ifpd = getConcreteModelObject();
+            while (true) {
+                switch (reader.next()) {
+                    case START_ELEMENT:
+                        handleExtension(ifpd, reader);
+                        break;
+                    case END_ELEMENT:
+                        if (getModelObjectQName().equals(reader.getName())) {
+                            return ifpd;
+                        }
+
+                }
+            }
+        } catch (XMLStreamException ex) {
+            throw new MarshalException(ex);
+        }
 
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractPhysicalComponentDefinitionMarshaller.java?view=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractPhysicalComponentDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/AbstractPhysicalComponentDefinitionMarshaller.java Mon Mar 12 13:28:06 2007
@@ -30,6 +30,7 @@
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.tuscany.spi.marshaller.MarshalException;
+import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
 
 /**
@@ -43,6 +44,9 @@
 
     // Component id attribute
     public static final String COMPONENT_ID = "componentId";
+    
+    // Instance factory provider
+    public static final String INSTANCE_FACTORY_PROVIDER = "instanceFactoryProvider";
 
     /**
      * Marshalls a physical change set to the xml writer.
@@ -56,6 +60,8 @@
             writer.writeAttribute(COMPONENT_ID, modelObject.getComponentId().toASCIIString());
             writer.writeNamespace(qname.getPrefix(), qname.getNamespaceURI());
             
+            registry.marshall(modelObject.getInstanceFactoryProviderDefinition(), writer);
+            
             handleExtension(modelObject, writer);
             
             writer.writeEndElement();
@@ -77,6 +83,12 @@
             while (true) {
                 switch (reader.next()) {
                     case START_ELEMENT:
+                        String name = reader.getName().getLocalPart();
+                        if(INSTANCE_FACTORY_PROVIDER.equals(name)) {
+                            InstanceFactoryProviderDefinition ipcd = 
+                                (InstanceFactoryProviderDefinition) registry.unmarshall(reader);
+                            componentDefinition.setInstanceFactoryProviderDefinition(ipcd);
+                        }
                         handleExtension(componentDefinition, reader);
                         break;
                     case END_ELEMENT:

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ByteCodeInstanceFactoryProviderDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ByteCodeInstanceFactoryProviderDefinitionMarshaller.java?view=auto&rev=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ByteCodeInstanceFactoryProviderDefinitionMarshaller.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ByteCodeInstanceFactoryProviderDefinitionMarshaller.java Mon Mar 12 13:28:06 2007
@@ -0,0 +1,101 @@
+/*
+ * 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.extensions.instancefactory;
+
+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.extensions.AbstractInstanceFactoryProviderDefinitionMarshaller;
+import org.apache.tuscany.core.marshaller.extensions.AbstractPhysicalComponentDefinitionMarshaller;
+import org.apache.tuscany.core.model.physical.instancefactory.ByteCodeInstanceFactoryProviderDefinition;
+import org.apache.tuscany.spi.marshaller.MarshalException;
+
+/**
+ * Byte code instance factory definition marshaller.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class ByteCodeInstanceFactoryProviderDefinitionMarshaller extends
+    AbstractInstanceFactoryProviderDefinitionMarshaller<ByteCodeInstanceFactoryProviderDefinition> {
+
+    // Byte code extension NS
+    public static final String BYTE_CODE_NS = "http://tuscany.apache.org/xmlns/marshaller/byteCode/1.0-SNAPSHOT";
+
+    // Byte code prefix
+    public static final String BYTE_CODE_PREFIX = "bc";
+    
+    // Byte code element
+    public static final String BYTE_CODE = "byteCode";
+
+    // QName for the root element
+    private static final QName QNAME =
+        new QName(BYTE_CODE_NS, AbstractPhysicalComponentDefinitionMarshaller.INSTANCE_FACTORY_PROVIDER, BYTE_CODE_PREFIX);
+
+    @Override
+    protected ByteCodeInstanceFactoryProviderDefinition getConcreteModelObject() {
+        return new ByteCodeInstanceFactoryProviderDefinition();
+    }
+
+    @Override
+    protected void handleExtension(ByteCodeInstanceFactoryProviderDefinition modelObject, XMLStreamReader reader)
+        throws MarshalException {
+        
+        try {
+            String name = reader.getName().getLocalPart();
+            if(BYTE_CODE.equals(name)) {
+                byte[] encodedByteCode = reader.getElementText().getBytes();
+                byte[] decodedByteCode = Base64.decodeBase64(encodedByteCode);
+                modelObject.setByteCode(decodedByteCode);
+            }
+        } catch(XMLStreamException ex) {
+            throw new MarshalException(ex);
+        }
+
+    }
+
+    @Override
+    protected void handleExtension(ByteCodeInstanceFactoryProviderDefinition modelObject, XMLStreamWriter writer)
+        throws MarshalException {
+        
+        try {
+            writer.writeStartElement(QNAME.getPrefix(), BYTE_CODE, QNAME.getNamespaceURI());
+            byte[] encodedByteCode = Base64.encodeBase64(modelObject.getByteCode());
+            writer.writeCharacters(new String(encodedByteCode));
+            writer.writeEndElement();
+        } catch (XMLStreamException ex) {
+            throw new MarshalException(ex);
+        }
+
+    }
+
+    @Override
+    protected QName getModelObjectQName() {
+        return QNAME;
+    }
+
+    @Override
+    protected Class<ByteCodeInstanceFactoryProviderDefinition> getModelObjectType() {
+        return ByteCodeInstanceFactoryProviderDefinition.class;
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveInstanceFactoryProviderDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveInstanceFactoryProviderDefinitionMarshaller.java?view=auto&rev=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveInstanceFactoryProviderDefinitionMarshaller.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveInstanceFactoryProviderDefinitionMarshaller.java Mon Mar 12 13:28:06 2007
@@ -0,0 +1,171 @@
+/*
+ * 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.extensions.instancefactory;
+
+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.tuscany.core.marshaller.extensions.AbstractInstanceFactoryProviderDefinitionMarshaller;
+import org.apache.tuscany.core.marshaller.extensions.AbstractPhysicalComponentDefinitionMarshaller;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSite;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSiteType;
+import org.apache.tuscany.core.model.physical.instancefactory.ReflectiveInstanceFactoryProviderDefinition;
+import org.apache.tuscany.spi.marshaller.MarshalException;
+
+/**
+ * Byte code instance factory definition marshaller.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class ReflectiveInstanceFactoryProviderDefinitionMarshaller extends
+    AbstractInstanceFactoryProviderDefinitionMarshaller<ReflectiveInstanceFactoryProviderDefinition> {
+    
+    // Byte code extension NS
+    public static final String REFLECTIVE_NS = "http://tuscany.apache.org/xmlns/marshaller/reflect/1.0-SNAPSHOT";
+
+    // Byte code prefix
+    public static final String REFLECTIVE_PREFIX = "reflect";
+    
+    // Implementation class
+    public static final String IMPL_CLASS = "implementationClass";
+    
+    // Init method
+    public static final String INIT_METHOD = "initMethod";
+    
+    // Destroy method
+    public static final String DESTROY_METHOD = "destroyMethod";
+    
+    // Constructor argument
+    public static final String CONSTRUCTOR_ARGUMENT = "constructorArgument";
+    
+    // Constructor injection name
+    public static final String CONSTRUCTOR_INJECTION_NAME = "constructorInjectionName";
+    
+    // Injection site
+    public static final String INJECTION_SITE = "injectionSite";
+    
+    // Injection site type
+    public static final String INJECTION_SITE_TYPE = "type";
+    
+    // Injection site class
+    public static final String INJECTION_SITE_CLASS = "class";
+    
+    // Injection site URI
+    public static final String INJECTION_SITE_URI = "uri";
+
+    // QName for the root element
+    private static final QName QNAME =
+        new QName(REFLECTIVE_NS, AbstractPhysicalComponentDefinitionMarshaller.INSTANCE_FACTORY_PROVIDER, REFLECTIVE_PREFIX);
+
+    @Override
+    protected ReflectiveInstanceFactoryProviderDefinition getConcreteModelObject() {
+        return new ReflectiveInstanceFactoryProviderDefinition();
+    }
+
+    @Override
+    protected void handleExtension(ReflectiveInstanceFactoryProviderDefinition modelObject, XMLStreamReader reader)
+        throws MarshalException {
+        
+        try {
+            String name = reader.getName().getLocalPart();
+            if(IMPL_CLASS.equals(name)) {
+                modelObject.setImplementationClass(reader.getElementText());
+            } else if(INIT_METHOD.equals(name)) {
+                modelObject.setInitMethod(reader.getElementText());
+            } else if(DESTROY_METHOD.equals(name)) {
+                modelObject.setDestroyMethod(reader.getElementText());
+            } else if(CONSTRUCTOR_ARGUMENT.equals(name)) {
+                modelObject.addConstructorArgument(reader.getElementText());
+            } else if(CONSTRUCTOR_INJECTION_NAME.equals(name)) {
+                modelObject.addConstructorNames(new URI(reader.getElementText()));
+            } else if(INJECTION_SITE.equals(name)) {
+                InjectionSite injectionSite = new InjectionSite();
+                injectionSite.setType(InjectionSiteType.valueOf(reader.getAttributeValue(null, INJECTION_SITE_TYPE)));
+                injectionSite.setInjectionClass(reader.getAttributeValue(null, INJECTION_SITE_CLASS));
+                injectionSite.setUri(new URI(reader.getAttributeValue(null, INJECTION_SITE_URI)));
+                modelObject.addInjectionSite(injectionSite);
+            }
+        } catch(URISyntaxException ex) {
+            throw new MarshalException(ex);
+        } catch (XMLStreamException ex) {
+            throw new MarshalException(ex);
+        }
+
+    }
+
+    @Override
+    protected void handleExtension(ReflectiveInstanceFactoryProviderDefinition modelObject, XMLStreamWriter writer)
+        throws MarshalException {
+        
+        try {
+            
+            writer.writeStartElement(QNAME.getPrefix(), IMPL_CLASS, QNAME.getNamespaceURI());
+            writer.writeCharacters(modelObject.getImplementationClass());
+            writer.writeEndElement();
+            
+            writer.writeStartElement(QNAME.getPrefix(), INIT_METHOD, QNAME.getNamespaceURI());
+            writer.writeCharacters(modelObject.getInitMethod());
+            writer.writeEndElement();
+            
+            writer.writeStartElement(QNAME.getPrefix(), DESTROY_METHOD, QNAME.getNamespaceURI());
+            writer.writeCharacters(modelObject.getDestroyMethod());
+            writer.writeEndElement();
+            
+            for(String constructorArgument : modelObject.getConstructorArguments()) {
+                writer.writeStartElement(QNAME.getPrefix(), CONSTRUCTOR_ARGUMENT, QNAME.getNamespaceURI());
+                writer.writeCharacters(constructorArgument);
+                writer.writeEndElement();
+            }
+            
+            for(URI conctructorName : modelObject.getConstructorNames()) {
+                writer.writeStartElement(QNAME.getPrefix(), CONSTRUCTOR_INJECTION_NAME, QNAME.getNamespaceURI());
+                writer.writeCharacters(conctructorName.toASCIIString());
+                writer.writeEndElement();
+            }
+            
+            for(InjectionSite injectionSite : modelObject.getInjectionSites()) {
+                writer.writeStartElement(QNAME.getPrefix(), INJECTION_SITE, QNAME.getNamespaceURI());
+                writer.writeAttribute(INJECTION_SITE_TYPE, injectionSite.getType().name());
+                writer.writeAttribute(INJECTION_SITE_CLASS, injectionSite.getInjectionClass());
+                writer.writeAttribute(INJECTION_SITE_URI, injectionSite.getUri().toASCIIString());
+                writer.writeEndElement();
+            }
+            
+        } catch (XMLStreamException ex) {
+            throw new MarshalException(ex);
+        }
+    }
+
+    @Override
+    protected QName getModelObjectQName() {
+        return QNAME;
+    }
+
+    @Override
+    protected Class<ReflectiveInstanceFactoryProviderDefinition> getModelObjectType() {
+        return ReflectiveInstanceFactoryProviderDefinition.class;
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java?view=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java Mon Mar 12 13:28:06 2007
@@ -46,11 +46,6 @@
     // Core marshaller prefix
     public static final String JAVA_PREFIX = "java";
 
-/*
-    // Instance factory
-    private static final String INSTANCE_FACTORY = "instanceFactory";
-*/
-
     // Scope
     private static final String SCOPE = "scope";
 
@@ -106,22 +101,15 @@
 
         try {
             String name = reader.getName().getLocalPart();
-            reader.next();
-/*            if (INSTANCE_FACTORY.equals(name)) {
-                byte[] base64ByteCode = reader.getText().getBytes();
-                byte[] byteCode = Base64.decodeBase64(base64ByteCode);
-                componentDefinition.setInstanceFactoryByteCode(byteCode);
-            } else
-*/
             if (SCOPE.equals(name)) {
-                componentDefinition.setScope(new Scope(reader.getText()));
+                componentDefinition.setScope(new Scope(reader.getElementText()));
             } else if (CLASSLOADER_ID.equals(name)) {
-                componentDefinition.setClassLoaderId(new URI(reader.getText()));
+                componentDefinition.setClassLoaderId(new URI(reader.getElementText()));
             }
-        } catch (XMLStreamException ex) {
-            throw new MarshalException(ex);
         } catch (URISyntaxException ex) {
             throw new MarshalException(ex);
+        } catch (XMLStreamException ex) {
+            throw new MarshalException(ex);
         }
 
     }
@@ -138,11 +126,6 @@
         throws MarshalException {
         try {
 
-/*
-            writer.writeStartElement(QNAME.getPrefix(), INSTANCE_FACTORY, QNAME.getNamespaceURI());
-            writer.writeCharacters(new String(Base64.encodeBase64(componentDefinition.getInstanceFactoryByteCode())));
-            writer.writeEndElement();
-*/
             writer.writeStartElement(QNAME.getPrefix(), SCOPE, QNAME.getNamespaceURI());
             writer.writeCharacters(componentDefinition.getScope().toString());
             writer.writeEndElement();

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java?view=auto&rev=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java Mon Mar 12 13:28:06 2007
@@ -0,0 +1,86 @@
+/*
+ * 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.model.physical.instancefactory;
+
+import java.net.URI;
+
+/**
+ * Represents an injection site.
+ */
+public class InjectionSite {
+    
+    // Type
+    private InjectionSiteType type;
+    
+    // Class
+    private String injectionClass;
+    
+    // URI
+    private URI uri;
+
+    /**
+     * Gets the class of the injected reference.
+     * @return Class of the injected reference.
+     */
+    public String getInjectionClass() {
+        return injectionClass;
+    }
+
+    /**
+     * Sets the class of the injected reference.
+     * @param injectionClass Class of the injected reference.
+     */
+    public void setInjectionClass(String injectionClass) {
+        this.injectionClass = injectionClass;
+    }
+
+    /**
+     * Gets the type of the injection site.
+     * @return Injection site type.
+     */
+    public InjectionSiteType getType() {
+        return type;
+    }
+
+    /**
+     * Gets the type of the injection site.
+     * @param type Injection site type.
+     */
+    public void setType(InjectionSiteType type) {
+        this.type = type;
+    }
+
+    /**
+     * Gets njection site URI.
+     * @return Injection site URI.
+     */
+    public URI getUri() {
+        return uri;
+    }
+
+    /**
+     * Gets njection site URI.
+     * @param uri Injection site URI.
+     */
+    public void setUri(URI uri) {
+        this.uri = uri;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java?view=auto&rev=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java Mon Mar 12 13:28:06 2007
@@ -0,0 +1,33 @@
+/*
+ * 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.model.physical.instancefactory;
+
+/**
+ * Represents an injection site type.
+ */
+public enum InjectionSiteType {
+    
+    FIELD,
+    
+    METHOD,
+    
+    CONSTRUCTOR;
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSiteType.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/ReflectiveInstanceFactoryProviderDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/ReflectiveInstanceFactoryProviderDefinition.java?view=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/ReflectiveInstanceFactoryProviderDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/ReflectiveInstanceFactoryProviderDefinition.java Mon Mar 12 13:28:06 2007
@@ -19,6 +19,11 @@
 
 package org.apache.tuscany.core.model.physical.instancefactory;
 
+import java.net.URI;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
 import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
 
 /**
@@ -27,5 +32,120 @@
  * @version $Revision$ $Date$
  */
 public class ReflectiveInstanceFactoryProviderDefinition extends InstanceFactoryProviderDefinition {
+    
+    // Implementation class
+    private String implementationClass;
+    
+    // Constructor arguments
+    private List<String> constructorArguments = new LinkedList<String>();
+    
+    // Init method
+    private String initMethod;
+    
+    // Destroy method
+    private String destroyMethod;
+    
+    // Constructor injection sites
+    private List<URI> constructorNames = new LinkedList<URI>();
+    
+    // Injection sites
+    private List<InjectionSite> injectionSites = new LinkedList<InjectionSite>();
+
+    /**
+     * returns the constructor argument.
+     * @return the constructorArguments Fully qualified names of the constructor 
+     * atgument types.
+     */
+    public List<String> getConstructorArguments() {
+        return Collections.unmodifiableList(constructorArguments);
+    }
+
+    /**
+     * Adds a constructor argument type.
+     * @param constructorArgument the constructorArguments to set
+     */
+    public void addConstructorArgument(String constructorArgument) {
+        constructorArguments.add(constructorArgument);
+    }
+
+    /**
+     * Returns constructor injection names.
+     * @return the constructorNames Constructor injection names.
+     */
+    public List<URI> getConstructorNames() {
+        return Collections.unmodifiableList(constructorNames);
+    }
+
+    /**
+     * Adds a constructor injection name.
+     * @param constructorName Constructor injection name.
+     */
+    public void addConstructorNames(URI constructorName) {
+        constructorNames.add(constructorName);
+    }
+
+    /**
+     * Gets the destroy method.
+     * @return Destroy method name.
+     */
+    public String getDestroyMethod() {
+        return destroyMethod;
+    }
+
+    /**
+     * Sets the destroy method.
+     * @param destroyMethod Destroy method name.
+     */
+    public void setDestroyMethod(String destroyMethod) {
+        this.destroyMethod = destroyMethod;
+    }
+
+    /**
+     * Gets the implementation class.
+     * @return Implementation class.
+     */
+    public String getImplementationClass() {
+        return implementationClass;
+    }
+
+    /**
+     * Sets the implementation class.
+     * @param implementationClass Implementation class.
+     */
+    public void setImplementationClass(String implementationClass) {
+        this.implementationClass = implementationClass;
+    }
+
+    /**
+     * Gets the init method.
+     * @return Init method name.
+     */
+    public String getInitMethod() {
+        return initMethod;
+    }
+
+    /**
+     * Sets the init method.
+     * @param initMethod Init method name.
+     */
+    public void setInitMethod(String initMethod) {
+        this.initMethod = initMethod;
+    }
+
+    /**
+     * Gets the injection sites.
+     * @return Injection sites.
+     */
+    public List<InjectionSite> getInjectionSites() {
+        return Collections.unmodifiableList(injectionSites);
+    }
+
+    /**
+     * Adds an injection site.
+     * @param injectionSiteInjection site.
+     */
+    public void addInjectionSite(InjectionSite injectionSite) {
+        injectionSites.add(injectionSite);
+    }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/marshaller/JavaPhysicalChangeSetMarshallerTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/marshaller/JavaPhysicalChangeSetMarshallerTest.java?view=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/marshaller/JavaPhysicalChangeSetMarshallerTest.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/marshaller/JavaPhysicalChangeSetMarshallerTest.java Mon Mar 12 13:28:06 2007
@@ -32,6 +32,8 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.core.marshaller.extensions.instancefactory.ByteCodeInstanceFactoryProviderDefinitionMarshaller;
+import org.apache.tuscany.core.marshaller.extensions.instancefactory.ReflectiveInstanceFactoryProviderDefinitionMarshaller;
 import org.apache.tuscany.core.marshaller.extensions.java.JavaPhysicalComponentDefinitionMarshaller;
 import org.apache.tuscany.core.marshaller.extensions.java.JavaPhysicalWireSourceDefinitionMarshaller;
 import org.apache.tuscany.core.marshaller.extensions.java.JavaPhysicalWireTargetDefinitionMarshaller;
@@ -60,7 +62,7 @@
 
         registry = new DefaultModelMarshallerRegistry();
 
-        AbstractMarshallerExtension<?>[] marshallers = new AbstractMarshallerExtension<?>[6];
+        AbstractMarshallerExtension<?>[] marshallers = new AbstractMarshallerExtension<?>[8];
 
         marshallers[0] = new JavaPhysicalComponentDefinitionMarshaller();
         marshallers[1] = new PhysicalOperationDefinitionMarshaller();
@@ -68,8 +70,10 @@
         marshallers[3] = new PhysicalChangeSetMarshaller();
         marshallers[4] = new JavaPhysicalWireSourceDefinitionMarshaller();
         marshallers[5] = new JavaPhysicalWireTargetDefinitionMarshaller();
+        marshallers[6] = new ByteCodeInstanceFactoryProviderDefinitionMarshaller();
+        marshallers[7] = new ReflectiveInstanceFactoryProviderDefinitionMarshaller();
 
-        for (int i = 0; i < 6; i++) {
+        for (int i = 0; i < 8; i++) {
             marshallers[i].setMarshallerRegistry(registry);
         }
 

Modified: 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=diff&rev=517376&r1=517375&r2=517376
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml Mon Mar 12 13:28:06 2007
@@ -23,12 +23,26 @@
 	<java:component xmlns:java="http://tuscany.apache.org/xmlns/marshaller/java/1.0-SNAPSHOT" componentId="cmp1">
 		<java:scope>STATELESS</java:scope>
 		<java:classLoaderId>#123</java:classLoaderId>
+		<bc:instanceFactoryProvider xmlns:bc="http://tuscany.apache.org/xmlns/marshaller/byteCode/1.0-SNAPSHOT">
+			<bc:byteCode>AB12345</bc:byteCode>
+		</bc:instanceFactoryProvider>
 	</java:component>
 	
 	<!-- Component 2 -->
 	<java:component xmlns:java="http://tuscany.apache.org/xmlns/marshaller/java/1.0-SNAPSHOT" componentId="cmp2">
 		<java:scope>STATELESS</java:scope>
 		<java:classLoaderId>#123</java:classLoaderId>
+		<reflect:instanceFactoryProvider xmlns:reflect="http://tuscany.apache.org/xmlns/marshaller/reflect/1.0-SNAPSHOT">
+			<reflect:implementationClass>com.acme.Foo</reflect:implementationClass>
+			<reflect:initMethod>init</reflect:initMethod>
+			<reflect:destroyMethod>destroy</reflect:destroyMethod>
+			<reflect:constructorArgument>java.lang.String</reflect:constructorArgument>
+			<reflect:constructorArgument>java.lang.Long</reflect:constructorArgument>
+			<reflect:constructorInjectionName>xy#z</reflect:constructorInjectionName>
+			<reflect:constructorInjectionName>ab#c</reflect:constructorInjectionName>
+			<reflect:injectionSite type="FIELD" class="com.acme.Bar" uri="A#B"/>
+			<reflect:injectionSite type="METHOD" class="com.acme.Bar" uri="D#E"/>
+		</reflect:instanceFactoryProvider>
 	</java:component>
 	
 	<!-- Wire 1 -->



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


Re: svn commit: r517376 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/marshaller/extensions/ main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ main/java/org/apache/tuscany/core/marshaller/extensi...

Posted by Jeremy Boynes <jb...@apache.org>.
On Mar 12, 2007, at 1:28 PM, meerajk@apache.org wrote:
> incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/ 
> tuscany/core/model/physical/instancefactory/ 
> InjectionSiteType.java   (with props)

How about using j.l.annotation.ElementType?
--
Jeremy

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