You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/05/01 07:09:48 UTC

svn commit: r533944 [4/4] - in /incubator/tuscany/java/sca/modules: core-spring/src/main/java/org/apache/tuscany/implementation/java/bean/impl/ core/src/main/java/org/apache/tuscany/core/builder/ databinding-sdo/src/main/java/org/apache/tuscany/databin...

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/JavaImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/JavaImplementation.java?view=diff&rev=533944&r1=533943&r2=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/JavaImplementation.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/JavaImplementation.java Mon Apr 30 22:09:44 2007
@@ -16,43 +16,171 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
+
 package org.apache.tuscany.implementation.java;
 
-import org.apache.tuscany.assembly.Implementation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.implementation.java.impl.JavaConstructorImpl;
+import org.apache.tuscany.implementation.java.impl.JavaElementImpl;
+import org.apache.tuscany.implementation.java.impl.JavaResourceImpl;
+import org.apache.tuscany.implementation.java.impl.JavaScopeImpl;
 
 /**
  * Represents a Java implementation.
- * 
+ *
  * @version $Rev$ $Date$
  */
-public interface JavaImplementation extends Implementation {
+public interface JavaImplementation extends BaseJavaImplementation {
 
     /**
-     * Returns the name of the Java implementation class.
-     * 
-     * @return the name of the Java implementation class
+     * Returns the constructor used to instantiate implementation instances.
+     *
+     * @return the constructor used to instantiate implementation instances
+     */
+    public JavaConstructorImpl<?> getConstructor();
+
+    /**
+     * Sets the constructor used to instantiate implementation instances
+     *
+     * @param definition the constructor used to instantiate implementation instances
+     */
+    public void setConstructor(JavaConstructorImpl<?> definition);
+
+    /**
+     * Returns the component initializer method.
+     *
+     * @return the component initializer method
+     */
+    public Method getInitMethod();
+
+    /**
+     * Sets the component initializer method.
+     *
+     * @param initMethod the component initializer method
+     */
+    public void setInitMethod(Method initMethod);
+
+    /**
+     * Returns the component destructor method.
+     *
+     * @return the component destructor method
+     */
+    public Method getDestroyMethod();
+
+    /**
+     * Sets the component destructor method.
+     *
+     * @param destroyMethod the component destructor method
      */
-    String getName();
+    public void setDestroyMethod(Method destroyMethod);
 
     /**
-     * Sets the name of the Java implementation class.
+     * Returns the resources injected into this implementation.
      * 
-     * @param className the name of the Java implementation class
+     * @return
      */
-    void setName(String className);
+    public Map<String, JavaResourceImpl> getResources();
 
     /**
-     * Returns the Java implementation class.
+     * Returns the Java member used to inject a conversation ID.
      * 
-     * @return the Java implementation class
+     * @return
      */
-    Class<?> getJavaClass();
+    public Member getConversationIDMember();
 
     /**
-     * Sets the Java implementation class.
+     * Sets the Java member used to inject a conversation ID.
      * 
-     * @param javaClass the Java implementation class
+     * @param conversationIDMember
+     */
+    public void setConversationIDMember(Member conversationIDMember);
+
+    /**
+     * Returns true if AllowsPassReference is set.
+     *  
+     * @return true if AllowsPassByReference is set
+     */
+    public boolean isAllowsPassByReference();
+
+    /**
+     * @param allowsPassByReference the allowsPassByReference to set
+     */
+    public void setAllowsPassByReference(boolean allowsPassByReference);
+
+    /**
+     * @return the allowsPassByReferenceMethods
+     */
+    public List<Method> getAllowsPassByReferenceMethods();
+    
+    /**
+     * @param method
+     * @return
+     */
+    public boolean isAllowsPassByReference(Method method);
+
+    /**
+     * @return the constructors
+     */
+    public Map<Constructor, JavaConstructorImpl> getConstructors();
+
+    /**
+     * @return the eagerInit
+     */
+    public boolean isEagerInit();
+
+    /**
+     * @param eagerInit the eagerInit to set
+     */
+    public void setEagerInit(boolean eagerInit);
+
+    /**
+     * @return the callbacks
+     */
+    public Map<String, JavaElementImpl> getCallbackMembers();
+
+    /**
+     * @return the properties
+     */
+    public Map<String, JavaElementImpl> getPropertyMembers();
+
+    /**
+     * @return the references
+     */
+    public Map<String, JavaElementImpl> getReferenceMembers();
+
+    /**
+     * @return the scope
+     */
+    public JavaScopeImpl getJavaScope();
+
+    /**
+     * @param scope the scope to set
+     */
+    public void setJavaScope(JavaScopeImpl scope);
+
+    /**
+     * @return the maxAge
+     */
+    public long getMaxAge();
+
+    /**
+     * @param maxAge the maxAge to set
+     */
+    public void setMaxAge(long maxAge);
+
+    /**
+     * @return the maxIdleTime
+     */
+    public long getMaxIdleTime();
+
+    /**
+     * @param maxIdleTime the maxIdleTime to set
      */
-    void setJavaClass(Class<?> javaClass);
+    public void setMaxIdleTime(long maxIdleTime);
 
 }

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,84 @@
+/*
+ * 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.implementation.java.impl;
+
+import org.apache.tuscany.assembly.impl.ComponentTypeImpl;
+import org.apache.tuscany.implementation.java.BaseJavaImplementation;
+
+/**
+ * Represents a Java implementation.
+ * 
+ * @version $Rev$ $Date$
+ */
+public abstract class BaseJavaImplementationImpl extends ComponentTypeImpl implements BaseJavaImplementation {
+
+    private String className;
+    private Class<?> javaClass;
+    
+    protected BaseJavaImplementationImpl() {
+    }
+
+    public String getName() {
+        if (isUnresolved()) {
+            return className;
+        } else if (javaClass != null) {
+            return javaClass.getName();
+        } else {
+            return null;
+        }
+    }
+
+    public void setName(String className) {
+        if (!isUnresolved()) {
+            throw new IllegalStateException();
+        }
+        this.className = className;
+    }
+
+    public Class<?> getJavaClass() {
+        return javaClass;
+    }
+
+    public void setJavaClass(Class<?> javaClass) {
+        this.javaClass = javaClass;
+        if (this.className == null) {
+            this.className = javaClass.getName();
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return String.valueOf(getName()).hashCode();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        } else if (obj instanceof BaseJavaImplementation) {
+            if (getName() != null) {
+                return getName().equals(((BaseJavaImplementation)obj).getName());
+            } else {
+                return ((BaseJavaImplementation)obj).getName() == null;
+            }
+        } else {
+            return false;
+        }
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/BaseJavaImplementationImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java?view=diff&rev=533944&r1=533943&r2=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java Mon Apr 30 22:09:44 2007
@@ -27,14 +27,14 @@
 
 public class DefaultJavaImplementationFactory implements JavaImplementationFactory {
 
-    private AssemblyFactory assemblyFactory;
+    //private AssemblyFactory assemblyFactory;
 
     public DefaultJavaImplementationFactory(AssemblyFactory assemblyFactory) {
-        this.assemblyFactory = assemblyFactory;
+        //this.assemblyFactory = assemblyFactory;
     }
 
     public JavaImplementation createJavaImplementation() {
-        JavaImplementation javaImplementation = new JavaImplementationDefinition();
+        JavaImplementation javaImplementation = new JavaImplementationImpl();
         return javaImplementation;
     }
 

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,53 @@
+/*
+ * 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.implementation.java.impl;
+
+import java.lang.reflect.Constructor;
+
+/**
+ * Hold injection information for the constructor used to instantiate a
+ * component implementation instance
+ * 
+ * @version $Rev$ $Date$
+ */
+public class JavaConstructorImpl<T> {
+
+    private Constructor<T> constructor;
+    private JavaParameterImpl[] parameters;
+
+    public JavaConstructorImpl(Constructor<T> constructor) {
+        this.constructor = constructor;
+        int size = constructor.getParameterTypes().length;
+        parameters = new JavaParameterImpl[size];
+        for (int i = 0; i < size; i++) {
+            parameters[i] = new JavaParameterImpl(constructor, i);
+        }
+    }
+
+    public Constructor<T> getConstructor() {
+        return constructor;
+    }
+
+    /**
+     * @return the parameters
+     */
+    public JavaParameterImpl[] getParameters() {
+        return parameters;
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaConstructorImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,223 @@
+/*
+ * 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.implementation.java.impl;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+
+/**
+ * This class represents a java element such as a Package, Class, Constructor,
+ * Field, Method or Parameter.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class JavaElementImpl {
+    private AnnotatedElement anchor;
+    private ElementType elementType;
+    private Class<?> type;
+    private Type genericType;
+    private int index = -1;
+    private String name;
+    private Class<? extends Annotation> classifer;
+
+    public JavaElementImpl(Package pkg) {
+        this.anchor = pkg;
+        this.elementType = ElementType.PACKAGE;
+        this.name = pkg.getName();
+    }
+
+    public JavaElementImpl(Class<?> cls) {
+        this.anchor = cls;
+        this.elementType = ElementType.TYPE;
+        this.type = cls;
+        this.genericType = cls;
+        this.name = cls.getName();
+    }
+
+    public JavaElementImpl(Field field) {
+        this.anchor = field;
+        this.elementType = ElementType.FIELD;
+        this.type = field.getType();
+        this.genericType = field.getGenericType();
+        this.name = field.getName();
+    }
+
+    public JavaElementImpl(Constructor<?> constructor, int index) {
+        this.anchor = constructor;
+        this.elementType = ElementType.PARAMETER;
+        this.type = constructor.getParameterTypes()[index];
+        this.genericType = constructor.getGenericParameterTypes()[index];
+        this.index = index;
+        this.name = "";
+    }
+
+    public JavaElementImpl(Method method, int index) {
+        this.anchor = method;
+        this.elementType = ElementType.PARAMETER;
+        this.type = method.getParameterTypes()[index];
+        this.genericType = method.getGenericParameterTypes()[index];
+        this.index = index;
+        this.name = "";
+    }
+
+    /**
+     * For testing purpose
+     * 
+     * @param name
+     * @param type
+     * @param classifer TODO
+     * @param elementType
+     */
+    public JavaElementImpl(String name, Class<?> type, Class<? extends Annotation> classifer) {
+        super();
+        this.type = type;
+        this.name = name;
+        this.classifer = classifer;
+    }
+
+    /**
+     * @return the anchor
+     */
+    public AnnotatedElement getAnchor() {
+        return anchor;
+    }
+
+    /**
+     * @return the elementType
+     */
+    public ElementType getElementType() {
+        return elementType;
+    }
+
+    /**
+     * @return the genericType
+     */
+    public Type getGenericType() {
+        return genericType;
+    }
+
+    /**
+     * @return the index
+     */
+    public int getIndex() {
+        return index;
+    }
+
+    /**
+     * @return the type
+     */
+    public Class<?> getType() {
+        return type;
+    }
+
+    public Annotation[] getAnnotations() {
+        if (elementType == ElementType.PARAMETER) {
+            if (anchor instanceof Method) {
+                // We only care about the method-level annotaions
+                return ((Method)anchor).getAnnotations();
+            }
+            if (anchor instanceof Constructor) {
+                return ((Constructor)anchor).getParameterAnnotations()[index];
+            }
+        }
+        return anchor.getAnnotations();
+    }
+
+    public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
+        for (Annotation a : getAnnotations()) {
+            if (a.annotationType() == annotationType) {
+                return annotationType.cast(a);
+            }
+        }
+        return null;
+    }
+
+    public String toString() {
+        return anchor.toString() + (elementType == ElementType.PARAMETER ? "[" + index + "]" : "");
+    }
+
+    @Override
+    public int hashCode() {
+        final int PRIME = 31;
+        int result = 1;
+        result = PRIME * result + ((anchor == null) ? 0 : anchor.hashCode());
+        result = PRIME * result + index;
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final JavaElementImpl other = (JavaElementImpl)obj;
+        if (anchor == null) {
+            if (other.anchor != null) {
+                return false;
+            }
+        } else if (!anchor.equals(other.anchor)) {
+            return false;
+        }
+        if (index != other.index) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return the classifer
+     */
+    public Class<? extends Annotation> getClassifer() {
+        return classifer;
+    }
+
+    /**
+     * @param classifer the classifer to set
+     */
+    public void setClassifer(Class<? extends Annotation> classifer) {
+        this.classifer = classifer;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaElementImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java?view=diff&rev=533944&r1=533943&r2=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationImpl.java Mon Apr 30 22:09:44 2007
@@ -18,67 +18,139 @@
  */
 package org.apache.tuscany.implementation.java.impl;
 
-import org.apache.tuscany.assembly.impl.ComponentTypeImpl;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.tuscany.implementation.java.JavaImplementation;
 
 /**
- * Represents a Java implementation.
- * 
- * @version $Rev$ $Date$
+ * A component type specialization for POJO implementations
+ *
+ * @version $$Rev$$ $$Date$$
  */
-public class JavaImplementationImpl extends ComponentTypeImpl implements JavaImplementation {
+public class JavaImplementationImpl extends BaseJavaImplementationImpl implements JavaImplementation {
+    private JavaConstructorImpl<?> constructorDefinition;
+    private Map<Constructor, JavaConstructorImpl> constructors = new HashMap<Constructor, JavaConstructorImpl>();
+    private Method initMethod;
+    private Method destroyMethod;
+    private final Map<String, JavaResourceImpl> resources = new HashMap<String, JavaResourceImpl>();
+    private final Map<String, JavaElementImpl> propertyMembers = new HashMap<String, JavaElementImpl>();
+    private final Map<String, JavaElementImpl> referenceMembers = new HashMap<String, JavaElementImpl>();
+    private final Map<String, JavaElementImpl> callbackMembers = new HashMap<String, JavaElementImpl>();
+    private Member conversationIDMember;
+    private boolean eagerInit;
+    private boolean allowsPassByReference;
+    private List<Method> allowsPassByReferenceMethods = new ArrayList<Method>();
+    private long maxAge = -1;
+    private long maxIdleTime = -1;
+    private JavaScopeImpl scope = JavaScopeImpl.STATELESS;
 
-    private String className;
-    private Class<?> javaClass;
-    
     protected JavaImplementationImpl() {
+        super();
+    }    
+
+    public JavaConstructorImpl<?> getConstructor() {
+        return constructorDefinition;
+    }
+
+    public void setConstructor(JavaConstructorImpl<?> definition) {
+        this.constructorDefinition = definition;
+    }
+
+    public Method getInitMethod() {
+        return initMethod;
+    }
+
+    public void setInitMethod(Method initMethod) {
+        this.initMethod = initMethod;
+    }
+
+    public Method getDestroyMethod() {
+        return destroyMethod;
+    }
+
+    public void setDestroyMethod(Method destroyMethod) {
+        this.destroyMethod = destroyMethod;
+    }
+
+    public Map<String, JavaResourceImpl> getResources() {
+        return resources;
     }
 
-    public String getName() {
-        if (isUnresolved()) {
-            return className;
-        } else if (javaClass != null) {
-            return javaClass.getName();
-        } else {
-            return null;
-        }
+    public Member getConversationIDMember() {
+        return this.conversationIDMember;
     }
 
-    public void setName(String className) {
-        if (!isUnresolved()) {
-            throw new IllegalStateException();
-        }
-        this.className = className;
+    public void setConversationIDMember(Member conversationIDMember) {
+        this.conversationIDMember = conversationIDMember;
     }
 
-    public Class<?> getJavaClass() {
-        return javaClass;
+    public boolean isAllowsPassByReference() {
+        return allowsPassByReference;
     }
 
-    public void setJavaClass(Class<?> javaClass) {
-        this.javaClass = javaClass;
-        if (this.className == null) {
-            this.className = javaClass.getName();
-        }
+    public void setAllowsPassByReference(boolean allowsPassByReference) {
+        this.allowsPassByReference = allowsPassByReference;
     }
 
-    @Override
-    public int hashCode() {
-        return String.valueOf(getName()).hashCode();
+    public List<Method> getAllowsPassByReferenceMethods() {
+        return allowsPassByReferenceMethods;
     }
     
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        } else if (obj instanceof JavaImplementation) {
-            if (getName() != null) {
-                return getName().equals(((JavaImplementation)obj).getName());
-            } else {
-                return ((JavaImplementation)obj).getName() == null;
-            }
-        } else {
-            return false;
-        }
+    public boolean isAllowsPassByReference(Method method) {
+        return allowsPassByReference || allowsPassByReferenceMethods.contains(method);
+    }
+
+    public Map<Constructor, JavaConstructorImpl> getConstructors() {
+        return constructors;
+    }
+
+    public boolean isEagerInit() {
+        return eagerInit;
+    }
+
+    public void setEagerInit(boolean eagerInit) {
+        this.eagerInit = eagerInit;
+    }
+
+    public Map<String, JavaElementImpl> getCallbackMembers() {
+        return callbackMembers;
+    }
+
+    public Map<String, JavaElementImpl> getPropertyMembers() {
+        return propertyMembers;
+    }
+
+    public Map<String, JavaElementImpl> getReferenceMembers() {
+        return referenceMembers;
+    }
+
+    public JavaScopeImpl getJavaScope() {
+        return scope;
+    }
+
+    public void setJavaScope(JavaScopeImpl scope) {
+        this.scope = scope;
+    }
+
+    public long getMaxAge() {
+        return maxAge;
+    }
+
+    public void setMaxAge(long maxAge) {
+        this.maxAge = maxAge;
+    }
+
+    public long getMaxIdleTime() {
+        return maxIdleTime;
+    }
+
+    public void setMaxIdleTime(long maxIdleTime) {
+        this.maxIdleTime = maxIdleTime;
     }
 }

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,35 @@
+/*
+ * 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.implementation.java.impl;
+
+import java.lang.reflect.Constructor;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JavaParameterImpl extends JavaElementImpl {
+    /**
+     * @param constructor
+     * @param index
+     */
+    public JavaParameterImpl(Constructor<?> constructor, int index) {
+        super(constructor, index);
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaParameterImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,85 @@
+/*
+ * 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.implementation.java.impl;
+
+
+/**
+ * A resource dependency declared by a Java component implementation
+ * 
+ * @version $Rev$ $Date$
+ */
+public class JavaResourceImpl {
+    private JavaElementImpl element;
+    private String mappedName;
+    private boolean optional;
+
+    public JavaResourceImpl(JavaElementImpl element) {
+        this.element = element;
+    }
+
+    /**
+     * The name of the resource
+     * 
+     * @return the name of the resource
+     */
+    public String getName() {
+        return element.getName();
+    }
+
+    /**
+     * Returns the URI of the resource
+     * 
+     * @return the URI of the resource
+     */
+    public String getMappedName() {
+        return mappedName;
+    }
+
+    /**
+     * Sets the resource URI
+     */
+    public void setMappedName(String mappedName) {
+        this.mappedName = mappedName;
+    }
+
+    /**
+     * If true, the resource is optional
+     * 
+     * @return true if the resource is optional
+     */
+    public boolean isOptional() {
+        return optional;
+    }
+
+    /**
+     * Sets whether the resource is optional
+     */
+    public void setOptional(boolean optional) {
+        this.optional = optional;
+    }
+
+    /**
+     * @return the element
+     */
+    public JavaElementImpl getElement() {
+        return element;
+    }
+
+
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaResourceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java?view=auto&rev=533944
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java Mon Apr 30 22:09:44 2007
@@ -0,0 +1,63 @@
+/*
+ * 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.implementation.java.impl;
+
+/**
+ * The default implementation scopes supported by assemblies.
+ *
+ * @version $Rev$ $Date$
+ */
+public class JavaScopeImpl {
+    public static final JavaScopeImpl STATELESS = new JavaScopeImpl("STATELESS");
+    public static final JavaScopeImpl REQUEST = new JavaScopeImpl("REQUEST");
+    public static final JavaScopeImpl SESSION = new JavaScopeImpl("SESSION");
+    public static final JavaScopeImpl CONVERSATION = new JavaScopeImpl("CONVERSATION");
+    public static final JavaScopeImpl COMPOSITE = new JavaScopeImpl("COMPOSITE");
+    public static final JavaScopeImpl SYSTEM = new JavaScopeImpl("SYSTEM");
+    public static final JavaScopeImpl UNDEFINED = new JavaScopeImpl("UNDEFINED");
+
+    private String scope;
+
+    public JavaScopeImpl(String scope) {
+        this.scope = scope.toUpperCase().intern();
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        final JavaScopeImpl scope1 = (JavaScopeImpl) o;
+        return !(scope != null ? scope != scope1.scope.intern() : scope1.scope != null);
+    }
+
+    public int hashCode() {
+        return scope != null ? scope.hashCode() : 0;
+    }
+
+    public String toString() {
+        return scope;
+    }
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaScopeImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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