You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/06/24 17:26:13 UTC

svn commit: r416931 [1/3] - in /incubator/tuscany/sandbox/jboynes/sca: core2/src/main/java/org/apache/tuscany/core/implementation/ core2/src/main/java/org/apache/tuscany/core/implementation/java/ core2/src/main/java/org/apache/tuscany/core/implementati...

Author: jmarino
Date: Sat Jun 24 08:26:09 2006
New Revision: 416931

URL: http://svn.apache.org/viewvc?rev=416931&view=rev
Log:
initial checkin of annotation processing, still not integrated; related spi spec changes and switchover to use sandbox sca-spi project; cleanup of dead mock code previously used for property testing

Added:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java   (contents, props changed)
      - copied, changed from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedComponentType.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java   (contents, props changed)
      - copied, changed from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedProperty.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java   (contents, props changed)
      - copied, changed from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedReference.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java   (contents, props changed)
      - copied, changed from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedService.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java   (contents, props changed)
      - copied, changed from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaServiceContract.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalInitException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalPropertyException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalReferenceException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalServiceDefinitionException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/InitProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/InvalidServiceType.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/PropertyProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ReferenceProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ServiceProcessor.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/UnknownContextTypeException.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/IntrospectionRegistryTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/DestroyProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/InitProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/PropertyProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/ReferenceProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/ScopeProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/processor/ServiceProcessorTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/java/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/JavaBuilderPropertyTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/system/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderPropertyTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java   (contents, props changed)
      - copied, changed from r416333, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/builder/SystemBuildersTestCase.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/builder/
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/AbstractGenericComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/DataObject.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/GenericComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/HelloWorldClient.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/HelloWorldService.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/LocalComponentImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OtherTarget.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OtherTargetImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RemotableService.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RemotableServiceImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopeComponentImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopedOrderedInitPojo.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopeDestroyOnlyComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopedOrderedInitPojo.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SimpleSource.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SimpleSourceImpl.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/annotation/Constructor.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedComponentType.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedProperty.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedReference.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedService.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaServiceContract.java
Modified:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoComponentType.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/system/loader/SystemComponentTypeLoader.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodEventInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/MethodInjector.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/injection/PojoObjectFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/InterfaceJavaLoader.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ServiceLoader.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/policy/async/AsyncInterceptor.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/util/JavaIntrospectionHelper.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/PojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilderTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/java/JavaReferenceWireTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/java/mock/MockFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/implementation/system/wire/AtomicComponentWireInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/injection/FieldInjectorTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/injection/MethodInjectorTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/ModuleScopeComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/ModuleScopeComponentImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopeComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopeComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopeComponentImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/StatelessComponent.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/StatelessComponentImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/util/JavaIntrospectionHelperTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/pom.xml
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/Property.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/ReferenceDefinition.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/ServiceDefinition.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/test/java/org/apache/tuscany/spi/annotation/ConstructorAnnotationTest.java

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,100 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+/**
+ * Implementations process class-level metadata, typically parsing annotations and updating the corresponding
+ * <code>ComponentType</code>. A processor may, for example, create a {@link JavaMappedProperty} which is responsible
+ * for injecting a complex type on a component implementation instance when it is instantiated.
+ * <p/>
+ * Processors will receive callbacks as the implementation class is walked while evalauting an assembly. It is the
+ * responsibility of the parser to determine whether to perform an action during the callback.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ImplementationProcessor {
+
+    /**
+     * A callback received when the component implementation class is first loaded
+     *
+     * @param clazz   the component implementation class
+     * @param type    the incomplete component type associated with the implementation class
+     * @param context the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitClass(Class<?> clazz, PojoComponentType type, DeploymentContext context) throws ProcessingException;
+
+    /**
+     * A callback received as the component implementation class hierarchy is evaluated
+     *
+     * @param clazz   the superclass in the component implmentation's class hierarchy
+     * @param type    the incomplete component type associated with the implementation class
+     * @param context the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitSuperClass(Class<?> clazz, PojoComponentType type, DeploymentContext context) throws ProcessingException;
+
+    /**
+     * A callback received as the component implementation's public and protected methods are evaluated
+     *
+     * @param method  the current public or protected method being evaluated
+     * @param type    the incomplete component type associated with the implementation class
+     * @param context the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitMethod(Method method, PojoComponentType type, DeploymentContext context) throws ProcessingException;
+
+    /**
+     * A callback received as the component implementation's constructor used for instantiation by the runtime is
+     * evaluated. If an implementation contains more than one constructor, the constructor passed to the callback will
+     * be chosen according to the algorithm described in the SCA Java Client and Implementation Model Specification.
+     *
+     * @param constructor the constructor used for instantiating component implementation instances
+     * @param type        the incomplete component type associated with the implementation class
+     * @param context     the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitConstructor(Constructor<?> constructor,
+                          PojoComponentType type,
+                          DeploymentContext context)
+        throws ProcessingException;
+
+    /**
+     * A callback received as the component implementation's public and protected fields are evaluated
+     *
+     * @param field   the current public or protected field being evaluated
+     * @param type    the incomplete component type associated with the implementation class
+     * @param context the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitField(Field field, PojoComponentType type, DeploymentContext context) throws ProcessingException;
+
+    /**
+     * The final callback received when all other callbacks during evaluation of the component implementation have been
+     * issued
+     *
+     * @param clazz   the component implementation class
+     * @param type    the incomplete component type associated with the implementation class
+     * @param context the current deployment context
+     * @throws ProcessingException if an error is encountered while processing metadata
+     */
+    void visitEnd(Class<?> clazz, PojoComponentType type, DeploymentContext context) throws ProcessingException;
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+/**
+ * A convenience class for annotation processors which alleviates the need to implement unused callbacks
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class ImplementationProcessorSupport implements ImplementationProcessor {
+
+    public void visitClass(Class<?> clazz, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+    }
+
+    public void visitSuperClass(Class<?> clazz, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+    }
+
+    public void visitMethod(Method method, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+    }
+
+    public void visitConstructor(Constructor<?> constructor, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+    }
+
+    public void visitField(Field field, PojoComponentType type, DeploymentContext context) throws ProcessingException {
+    }
+
+    public void visitEnd(Class<?> clazz, PojoComponentType type, DeploymentContext context) throws ProcessingException {
+
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ImplementationProcessorSupport.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,20 @@
+package org.apache.tuscany.core.implementation;
+
+/**
+ * A system service which tracks {@link ImplementationProcessor}s
+ *
+ * @version $Rev$ $Date$
+ */
+public interface IntrospectionRegistry extends Introspector {
+
+    /**
+     * Registers the given processor and makes it available during assembly evaluation (i.e. build)
+     */
+    void registerProcessor(ImplementationProcessor processor);
+
+    /**
+     * Deregisters the given processor 
+     */
+    void unregisterProcessor(ImplementationProcessor processor);
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistry.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,127 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.tuscany.spi.annotation.Monitor;
+
+import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+
+/**
+ * Default implementation of the <code>IntrospectionRegistry</code>
+ *
+ * @version $Rev$ $Date$
+ */
+public class IntrospectionRegistryImpl implements IntrospectionRegistry {
+
+    private IntrospectionMonitor monitor;
+    private List<ImplementationProcessor> cache = new ArrayList<ImplementationProcessor>();
+
+    public IntrospectionRegistryImpl() {
+    }
+
+    public IntrospectionRegistryImpl(IntrospectionMonitor monitor) {
+        this.monitor = monitor;
+    }
+
+    @Monitor
+    public void setMonitor(IntrospectionMonitor monitor) {
+        this.monitor = monitor;
+    }
+
+    public void registerProcessor(ImplementationProcessor processor) {
+        monitor.register(processor);
+        cache.add(processor);
+    }
+
+    public void unregisterProcessor(ImplementationProcessor processor) {
+        monitor.unregister(processor);
+        cache.remove(processor);
+    }
+
+    public PojoComponentType introspect(Class<?> clazz, PojoComponentType type) throws ProcessingException {
+        for (ImplementationProcessor processor : cache) {
+            processor.visitClass(clazz, type, null);
+        }
+
+        for (Constructor constructor : clazz.getConstructors()) {
+            for (ImplementationProcessor processor : cache) {
+                processor.visitConstructor(constructor, type, null);
+            }
+        }
+
+//        Constructor componentConstructor = null;
+//        Constructor[] constructors = clazz.getConstructors();
+//        for (Constructor constructor : constructors) {
+//            if (componentConstructor == null) {
+//                componentConstructor = constructor;
+//            }else{
+//                if componentConstructor.getAnnotation()
+//            }
+//            for (ImplementationProcessor processor : cache) {
+//                processor.visitConstructor(constructor, type, null);
+//            }
+//        }
+
+        Set<Method> methods = JavaIntrospectionHelper.getAllUniquePublicProtectedMethods(clazz);
+        for (Method method : methods) {
+            for (ImplementationProcessor processor : cache) {
+                processor.visitMethod(method, type, null);
+            }
+        }
+
+        Set<Field> fields = JavaIntrospectionHelper.getAllPublicAndProtectedFields(clazz);
+        for (Field field : fields) {
+            for (ImplementationProcessor processor : cache) {
+                processor.visitField(field, type, null);
+            }
+        }
+
+        Class superClass = clazz.getSuperclass();
+        if (superClass != null) {
+            visitSuperClass(superClass, type);
+        }
+
+        for (ImplementationProcessor processor : cache) {
+            processor.visitEnd(clazz, type, null);
+        }
+        return type;
+    }
+
+    private void visitSuperClass(Class<?> clazz, PojoComponentType type) throws ProcessingException {
+        if (!Object.class.equals(clazz)) {
+            for (ImplementationProcessor processor : cache) {
+                processor.visitSuperClass(clazz, type, null);
+            }
+            clazz = clazz.getSuperclass();
+            if (clazz != null) {
+                visitSuperClass(clazz, type);
+            }
+        }
+    }
+
+    public static interface IntrospectionMonitor {
+        void register(ImplementationProcessor processor);
+
+        void unregister(ImplementationProcessor processor);
+
+        void processing(ImplementationProcessor processor);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/IntrospectionRegistryImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,34 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation;
+
+/**
+ * Implementations are responsible for walking a component implementation class, adding additional component type
+ * information as appropriate
+ *
+ * @version $Rev$ $Date$
+ */
+public interface Introspector {
+
+    /**
+     * Walks the given component implementation class
+     *
+     * @param clazz the component implementation class
+     * @param type  the component type associated with the implementation class
+     * @return the updated component type
+     * @throws ProcessingException if an error is encountered evaluating the implementation class
+     */
+    PojoComponentType introspect(Class<?> clazz, PojoComponentType type) throws ProcessingException;
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/Introspector.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java (from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedComponentType.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java&p1=incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedComponentType.java&r1=416331&r2=416931&rev=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedComponentType.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java Sat Jun 24 08:26:09 2006
@@ -14,7 +14,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.spi.model;
+package org.apache.tuscany.core.implementation;
+
+import org.apache.tuscany.spi.model.ComponentType;
 
 /**
  * A specialized component type definition whose services, references and properties can be mapped to the Java

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedComponentType.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java (from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedProperty.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java&p1=incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedProperty.java&r1=416331&r2=416931&rev=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedProperty.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java Sat Jun 24 08:26:09 2006
@@ -14,10 +14,12 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.spi.model;
+package org.apache.tuscany.core.implementation;
 
 import java.lang.reflect.Member;
 import javax.xml.namespace.QName;
+
+import org.apache.tuscany.spi.model.Property;
 
 /**
  * A Property definition that is mapped to a specific location in the implementation class. This location will typically

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedProperty.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java (from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedReference.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java&p1=incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedReference.java&r1=416331&r2=416931&rev=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedReference.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java Sat Jun 24 08:26:09 2006
@@ -14,9 +14,12 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.spi.model;
+package org.apache.tuscany.core.implementation;
 
 import java.lang.reflect.Member;
+
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceContract;
 
 /**
  * A ReferenceDefinition definition that is mapped to a specific location in the implementation class. This location

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedReference.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java (from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedService.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java&p1=incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedService.java&r1=416331&r2=416931&rev=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaMappedService.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java Sat Jun 24 08:26:09 2006
@@ -14,7 +14,10 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.spi.model;
+package org.apache.tuscany.core.implementation;
+
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * A ServiceDefinition definition that is mapped to a Java interface. The mapped interface is not required to be the
@@ -34,12 +37,12 @@
         this.serviceInterface = serviceInterface;
     }
 
-    public JavaMappedService(String name, ServiceContract serviceContract) {
-        super(name, serviceContract);
+    public JavaMappedService(String name, ServiceContract contract, boolean remotable) {
+        super(name, contract, remotable);
     }
 
-    public JavaMappedService(String name, ServiceContract serviceContract, Class<?> serviceInterface) {
-        super(name, serviceContract);
+    public JavaMappedService(String name, ServiceContract contract, Class<?> serviceInterface, boolean remotable) {
+        super(name, contract, remotable);
         this.serviceInterface = serviceInterface;
     }
 

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaMappedService.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java (from r416331, incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaServiceContract.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java&p1=incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaServiceContract.java&r1=416331&r2=416931&rev=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/JavaServiceContract.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java Sat Jun 24 08:26:09 2006
@@ -14,7 +14,9 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.tuscany.spi.model;
+package org.apache.tuscany.core.implementation;
+
+import org.apache.tuscany.spi.model.ServiceContract;
 
 /**
  * Represents a service contract specified using a Java interface

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/JavaServiceContract.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?rev=416931&r1=416930&r2=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Sat Jun 24 08:26:09 2006
@@ -50,8 +50,11 @@
         destroyInvoker = configuration.getDestroyInvoker();
         objectFactory = configuration.getObjectFactory();
         serviceInterfaces = configuration.getServiceInterfaces();
-        this.injectors = (injectors == null) ? new ArrayList<Injector>() : injectors;
-        this.members = configuration.getMembers() != null ? configuration.getMembers() : new HashMap<String, Member>();
+        this.injectors =
+            (configuration.getPropertyInjectors() == null) ? new ArrayList<Injector>() :
+                configuration.getPropertyInjectors();
+        this.members = configuration.getReferenceMembers() != null ? configuration.getReferenceMembers() :
+            new HashMap<String, Member>();
     }
 
     public List<Class<?>> getServiceInterfaces() {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoComponentType.java?rev=416931&r1=416930&r2=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoComponentType.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoComponentType.java Sat Jun 24 08:26:09 2006
@@ -1,18 +1,12 @@
 package org.apache.tuscany.core.implementation;
 
-import java.lang.reflect.Member;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.lang.reflect.Method;
 
-import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ComponentType;
+import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * A component type specialization for POJO implementations
@@ -23,10 +17,8 @@
     extends ComponentType<S, R, P> {
 
     private Scope lifecycleScope = Scope.UNDEFINED;
-    private EventInvoker<Object> initInvoker;
-    private EventInvoker<Object> destroyInvoker;
-    private final List<Injector> injectors = new ArrayList<Injector>();
-    private final Map<String, Member> members = new HashMap<String, Member>();
+    private Method initMethod;
+    private Method destroyMethod;
 
     public Scope getLifecycleScope() {
         return lifecycleScope;
@@ -36,40 +28,20 @@
         this.lifecycleScope = lifecycleScope;
     }
 
-    public EventInvoker<Object> getInitInvoker() {
-        return initInvoker;
-    }
-
-    public void setInitInvoker(EventInvoker<Object> initInvoker) {
-        this.initInvoker = initInvoker;
-    }
-
-    public EventInvoker<Object> getDestroyInvoker() {
-        return destroyInvoker;
-    }
-
-    public void setDestroyInvoker(EventInvoker<Object> destroyInvoker) {
-        this.destroyInvoker = destroyInvoker;
-    }
-
-    public List<Injector> getInjectors() {
-        return injectors;
-    }
-
-    public void addInjector(Injector injector) {
-        injectors.add(injector);
+    public Method getInitMethod() {
+        return initMethod;
     }
 
-    public Member getReferenceMember(String name) {
-        return members.get(name);
+    public void setInitMethod(Method initMethod) {
+        this.initMethod = initMethod;
     }
 
-    public void addReferenceMember(String name, Member member) {
-        members.put(name, member);
+    public Method getDestroyMethod() {
+        return destroyMethod;
     }
 
-    public Map<String, Member> getReferenceMembers() {
-        return members;
+    public void setDestroyMethod(Method destroyMethod) {
+        this.destroyMethod = destroyMethod;
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java?rev=416931&r1=416930&r2=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java Sat Jun 24 08:26:09 2006
@@ -101,19 +101,19 @@
         this.destroyInvoker = destroyInvoker;
     }
 
-    public List<Injector> getInjectors() {
+    public List<Injector> getPropertyInjectors() {
         return injectors;
     }
 
-    public void addInjectors(Injector injector) {
+    public void addPropertyInjector(Injector injector) {
         injectors.add(injector);
     }
 
-    public Map<String, Member> getMembers() {
+    public Map<String, Member> getReferenceMembers() {
         return members;
     }
 
-    public void addMember(String name, Member member) {
+    public void addReferenceMember(String name, Member member) {
         members.put(name, member);
     }
 

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation;
+
+import org.apache.tuscany.spi.loader.LoaderException;
+
+/**
+ * Denotes a problem processing annotations on a POJO implementation
+ *
+ * @version $Rev$ $Date$
+ */
+public class ProcessingException extends LoaderException {
+    public ProcessingException() {
+    }
+
+    public ProcessingException(String message) {
+        super(message);
+    }
+
+    public ProcessingException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ProcessingException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/ProcessingException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java?rev=416931&r1=416930&r2=416931&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponentBuilder.java Sat Jun 24 08:26:09 2006
@@ -1,82 +1,97 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.java;
 
 import java.lang.reflect.Constructor;
-import java.lang.reflect.Member;
-import java.util.Map;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 
+import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
-import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.core.implementation.PojoConfiguration;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-import org.apache.tuscany.core.injection.ContextInjector;
-import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.spi.model.ComponentDefinition;
-import org.apache.tuscany.core.implementation.PojoComponentType;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
+import org.apache.tuscany.core.implementation.JavaMappedProperty;
+import org.apache.tuscany.core.implementation.JavaMappedReference;
+import org.apache.tuscany.core.implementation.PojoComponentType;
+import org.apache.tuscany.core.implementation.PojoConfiguration;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
 
 /**
+ * Builds an <code>AtomicContext</code> for a Java-based component
+ *
  * @version $$Rev$$ $$Date$$
  */
 public class JavaComponentBuilder extends ComponentBuilderExtension<JavaImplementation> {
 
     @SuppressWarnings("unchecked")
-    public Component<?> build(CompositeComponent<?> parent,
-                              ComponentDefinition<JavaImplementation> definition,
-                              DeploymentContext deployment)
+    public AtomicComponent<?> build(CompositeComponent<?> parent,
+                                    ComponentDefinition<JavaImplementation> definition,
+                                    DeploymentContext deployment)
         throws BuilderConfigException {
-        PojoComponentType<?, ?, ?> componentType = definition.getImplementation().getComponentType();
+        PojoComponentType<ServiceDefinition, JavaMappedReference, JavaMappedProperty<?>> componentType =
+            definition.getImplementation().getComponentType();
 
         PojoConfiguration configuration = new PojoConfiguration();
         configuration.setParent(parent);
+        Scope scope = componentType.getLifecycleScope();
+        if (Scope.MODULE == scope) {
+            configuration.setScopeContainer(deployment.getModuleScope());
+        } else {
+            configuration.setScopeContainer(scopeRegistry.getScopeContainer(scope));
+        }
         configuration.setEagerInit(componentType.isEagerInit());
-        configuration.setInitInvoker(componentType.getInitInvoker());
-        configuration.setDestroyInvoker(componentType.getDestroyInvoker());
         configuration.setWireService(wireService);
-        for (Map.Entry<String, Member> entry : componentType.getReferenceMembers().entrySet()) {
-            configuration.addMember(entry.getKey(), entry.getValue());
-        }
-
-        for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            configuration.addServiceInterface(serviceDefinition.getServiceContract().getInterfaceClass());
-        }
-        Constructor<?> constr;
         try {
-            constr = JavaIntrospectionHelper
+            Constructor<?> constr = JavaIntrospectionHelper
                 .getDefaultConstructor(definition.getImplementation().getImplementationClass());
+            configuration.setObjectFactory(new PojoObjectFactory(constr));
         } catch (NoSuchMethodException e) {
             BuilderConfigException bce = new BuilderConfigException("Error building definition", e);
             bce.setIdentifier(definition.getName());
             bce.addContextName(parent.getName());
             throw bce;
         }
-        configuration.setObjectFactory(new PojoObjectFactory(constr));
-        configuration.getInjectors().addAll(componentType.getInjectors());
-        for (Injector injector : configuration.getInjectors()) {
-            if (injector instanceof ContextInjector) {
-                //iterate and determine if the parent context implements the interface
-                Class contextType = JavaIntrospectionHelper.introspectGeneric(injector.getClass(), 0);
-                if (contextType.isAssignableFrom(parent.getClass())) {
-                    ((ContextInjector) injector).setContext(parent);
-                } else {
-                    BuilderConfigException e = new BuilderConfigException("SCAObject not found for type");
-                    e.setIdentifier(contextType.getName());
-                    throw e;
-                }
-            }
+        for (ServiceDefinition serviceDefinition : componentType.getServices().values()) {
+            configuration.addServiceInterface(serviceDefinition.getServiceContract().getInterfaceClass());
         }
 
-        Scope scope = componentType.getLifecycleScope();
-        if (Scope.MODULE == scope) {
-            configuration.setScopeContainer(deployment.getModuleScope());
-        } else {
-            configuration.setScopeContainer(scopeRegistry.getScopeContainer(scope));
+        // handle properties
+        for (JavaMappedProperty<?> property : componentType.getProperties().values()) {
+            ObjectFactory<?> factory = property.getDefaultValueFactory();
+            if (property.getMember() instanceof Field) {
+                configuration.addPropertyInjector(new FieldInjector((Field) property.getMember(), factory));
+            } else if (property.getMember() instanceof Method) {
+                configuration.addPropertyInjector(new MethodInjector((Method) property.getMember(), factory));
+            } else {
+                BuilderConfigException e = new BuilderConfigException("Invalid property injection site");
+                e.setIdentifier(property.getName());
+                throw e;
+            }
         }
+        for (JavaMappedReference reference : componentType.getReferences().values()) {
+            configuration.addReferenceMember(reference.getName(), reference.getMember());
+        }
+
         return new JavaAtomicComponent(definition.getName(), configuration);
     }
 
@@ -84,4 +99,5 @@
     protected Class<JavaImplementation> getImplementationType() {
         return JavaImplementation.class;
     }
+
 }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,84 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.annotations.Context;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+import org.apache.tuscany.core.implementation.ImplementationProcessorSupport;
+import org.apache.tuscany.core.implementation.JavaMappedProperty;
+import org.apache.tuscany.core.implementation.PojoComponentType;
+import org.apache.tuscany.core.implementation.ProcessingException;
+import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+
+/**
+ * Processes {@link @Context} annotations on a component implementation and adds a {@link JavaMappedProperty} to the
+ * component type which will be used to inject the appropriate context
+ *
+ * @version $Rev$ $Date$
+ */
+public class ContextProcessor extends ImplementationProcessorSupport {
+
+    public void visitMethod(Method method, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+        if (method.getAnnotation(Context.class) == null) {
+            return;
+        }
+        if (method.getParameterTypes().length != 1) {
+            IllegalContextException e = new IllegalContextException("Context setter must have one parameter");
+            e.setIdentifier(method.getName());
+            throw e;
+        }
+        Class<?> paramType = method.getParameterTypes()[0];
+        if (CompositeContext.class.equals(paramType)) {
+            String name = method.getName();
+            if (name.startsWith("set")) {
+                name = JavaIntrospectionHelper.toPropertyName(name);
+            }
+            JavaMappedProperty property = new JavaMappedProperty();
+            property.setName(name);
+            property.setMember(method);
+            throw new UnsupportedOperationException();
+            // TODO pass in composite context
+            //SingletonObjectFactory factory = new SingletonObjectFactory(compositeContext);
+            //property.setDefaultValueFactory(factory);
+            //type.getProperties().put(name,property);
+        } else if (RequestContext.class.equals(paramType)) {
+            String name = method.getName();
+            if (name.startsWith("set")) {
+                name = JavaIntrospectionHelper.toPropertyName(name);
+            }
+            JavaMappedProperty property = new JavaMappedProperty();
+            property.setName(name);
+            property.setMember(method);
+            throw new UnsupportedOperationException();
+            // TODO pass in request context
+            //property.setDefaultValueFactory(factory);
+            //type.getProperties().put(name,property);
+        } else {
+            throw new UnknownContextTypeException(paramType.getName());
+        }
+
+    }
+
+    public void visitField(Field field, PojoComponentType type, DeploymentContext context) throws ProcessingException {
+        super.visitField(field, type, context);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,51 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import java.lang.reflect.Method;
+
+import org.osoa.sca.annotations.Destroy;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+import org.apache.tuscany.core.implementation.ImplementationProcessorSupport;
+import org.apache.tuscany.core.implementation.PojoComponentType;
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Processes the {@link @Destroy} annotation on a component implementation and updates the component type with the
+ * decorated destructor method
+ *
+ * @version $Rev$ $Date$
+ */
+public class DestroyProcessor extends ImplementationProcessorSupport {
+
+    public void visitMethod(Method method, PojoComponentType type, DeploymentContext context)
+        throws ProcessingException {
+        Destroy annotation = method.getAnnotation(Destroy.class);
+        if (annotation == null) {
+            return;
+        }
+        if (method.getParameterTypes().length != 0) {
+            IllegalDestructorException e = new IllegalDestructorException("Destructor must not have argments");
+            e.setIdentifier(method.getName());
+            throw e;
+        }
+        if (type.getDestroyMethod() != null) {
+            throw new DuplicateDestructorException("More than one destructor found on implementation");
+        }
+        method.setAccessible(true);
+        type.setDestroyMethod(method);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DestroyProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Thrown when an implementation is annotated multiple times with {@link org.osoa.sca.annotations.Destroy}
+ *
+ * @version $Rev$ $Date$
+ */
+public class DuplicateDestructorException extends ProcessingException {
+    public DuplicateDestructorException() {
+    }
+
+    public DuplicateDestructorException(String message) {
+        super(message);
+    }
+
+    public DuplicateDestructorException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public DuplicateDestructorException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateDestructorException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Thrown when an implementation is annotated multiple times with {@link @org.osoa.sca.annotations.Init}
+ *
+ * @version $Rev$ $Date$
+ */
+public class DuplicateInitException extends ProcessingException {
+    public DuplicateInitException() {
+    }
+
+    public DuplicateInitException(String message) {
+        super(message);
+    }
+
+    public DuplicateInitException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public DuplicateInitException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateInitException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Thrown when an implementation has more than one property injection site with the same name
+ * 
+ * @version $Rev$ $Date$
+ */
+public class DuplicatePropertyException extends ProcessingException {
+    public DuplicatePropertyException() {
+    }
+
+    public DuplicatePropertyException(String message) {
+        super(message);
+    }
+
+    public DuplicatePropertyException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public DuplicatePropertyException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicatePropertyException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Thrown when an implementation has more than one reference injection site with the same name
+ *
+ * @version $Rev$ $Date$
+ */
+public class DuplicateReferenceException extends ProcessingException {
+    public DuplicateReferenceException() {
+    }
+
+    public DuplicateReferenceException(String message) {
+        super(message);
+    }
+
+    public DuplicateReferenceException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public DuplicateReferenceException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/DuplicateReferenceException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+import org.apache.tuscany.core.implementation.ImplementationProcessorSupport;
+import org.apache.tuscany.core.implementation.PojoComponentType;
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class HeuristicPropertyReferenceProcessor extends ImplementationProcessorSupport {
+    public void visitEnd(Class<?> clazz, PojoComponentType type, DeploymentContext context) throws ProcessingException {
+        if (!type.getServices().isEmpty()) {
+            // services have been explicitly defined
+            return;
+        }
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/HeuristicPropertyReferenceProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Denotes an illegal signature for a method decorated with {@link org.osoa.sca.annotations.Context}
+ *
+ * @version $Rev$ $Date$
+ */
+public class IllegalContextException extends ProcessingException {
+    public IllegalContextException() {
+    }
+
+    public IllegalContextException(String message) {
+        super(message);
+    }
+
+    public IllegalContextException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public IllegalContextException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalContextException.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java?rev=416931&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java Sat Jun 24 08:26:09 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.implementation.processor;
+
+import org.apache.tuscany.core.implementation.ProcessingException;
+
+/**
+ * Denotes an illegal signature for a method decorated with {@link org.osoa.sca.annotations.Destroy}
+ *
+ * @version $Rev$ $Date$
+ */
+public class IllegalDestructorException extends ProcessingException {
+    public IllegalDestructorException() {
+    }
+
+    public IllegalDestructorException(String message) {
+        super(message);
+    }
+
+    public IllegalDestructorException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public IllegalDestructorException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/processor/IllegalDestructorException.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