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/04/30 00:02:50 UTC

svn commit: r398248 - in /incubator/tuscany/java/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/ containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/ containers/container.java/src/tes...

Author: jmarino
Date: Sat Apr 29 15:02:47 2006
New Revision: 398248

URL: http://svn.apache.org/viewcvs?rev=398248&view=rev
Log:
make annotation extensions more extensbile by refactoring extensiblility types; removal of erroneous assertion in Tomcat integration test

Added:
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java
      - copied, changed from r398221, incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java
      - copied, changed from r398221, incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/JavaExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java
Removed:
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/JavaExtensibilityElement.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/impl/JavaExtensibilityElementImpl.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/JavaExtensibilityHelper.java
Modified:
    incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaContextFactoryBuilder.java
    incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaImplementationLoader.java
    incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
    incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/BasicModuleScopeTestCase.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/config/impl/IntrospectorFactory.java
    incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/ComponentLoaderTestCase.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Implementation.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyObjectImpl.java
    incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java
    incubator/tuscany/java/sca/tomcat/src/test/java/org/apache/tuscany/tomcat/integration/TomcatIntegrationTestCase.java

Modified: incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaContextFactoryBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaContextFactoryBuilder.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaContextFactoryBuilder.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaContextFactoryBuilder.java Sat Apr 29 15:02:47 2006
@@ -1,26 +1,22 @@
 package org.apache.tuscany.container.java.builder;
 
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.tuscany.container.java.assembly.JavaImplementation;
 import org.apache.tuscany.container.java.config.JavaContextFactory;
-import org.apache.tuscany.core.assembly.JavaExtensibilityElement;
+import org.apache.tuscany.core.extension.config.extensibility.ComponentNameExtensibilityElement;
+import org.apache.tuscany.core.extension.config.extensibility.ContextExtensibilityElement;
+import org.apache.tuscany.core.extension.config.extensibility.DestroyInvokerExtensibilityElement;
+import org.apache.tuscany.core.extension.config.extensibility.InitInvokerExtensibilityElement;
+import org.apache.tuscany.core.extension.config.InjectorExtensibilityElement;
 import org.apache.tuscany.core.builder.BuilderConfigException;
 import org.apache.tuscany.core.builder.BuilderException;
 import org.apache.tuscany.core.builder.ContextFactory;
-import org.apache.tuscany.core.config.JavaExtensibilityHelper;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.extension.ContextFactoryBuilderSupport;
-import org.apache.tuscany.core.injection.ContextObjectFactory;
 import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
-import org.apache.tuscany.core.injection.MethodInjector;
-import org.apache.tuscany.core.injection.SingletonObjectFactory;
 import org.apache.tuscany.core.wire.service.WireFactoryService;
 import org.apache.tuscany.model.assembly.Scope;
 
@@ -62,36 +58,28 @@
                     .getDefaultConstructor(implClass), scope);
 
             List<Injector> injectors = new ArrayList<Injector>();
-            EventInvoker<Object> initInvoker;
-            boolean eagerInit;
-            EventInvoker<Object> destroyInvoker;
-            ContextObjectFactory contextObjectFactory = new ContextObjectFactory(contextFactory);
-            JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(javaImpl.getComponentInfo());
-            AccessibleObject ao = element.getComponentName();
-            if (ao instanceof Field) {
-                Injector injector = new FieldInjector((Field) ao, new SingletonObjectFactory<Object>(name));
-                injectors.add(injector);
-            } else if (ao instanceof Method) {
-                Injector injector = new MethodInjector((Method) ao, new SingletonObjectFactory<Object>(name));
-                injectors.add(injector);
-            }
-            ao = element.getContext();
-            if (ao instanceof Field) {
-                Injector injector = new FieldInjector((Field) ao, contextObjectFactory);
-                injectors.add(injector);
-            } else if (ao instanceof Method) {
-                Injector injector = new MethodInjector((Method) ao, contextObjectFactory);
-                injectors.add(injector);
-            }
-            initInvoker = element.getInit();
-            eagerInit = element.isEagerInit();
-            destroyInvoker = element.getDestroy();
-            if (initInvoker != null) {
-                contextFactory.setEagerInit(eagerInit);
-                contextFactory.setInitInvoker(initInvoker);
-            }
-            if (destroyInvoker != null) {
-                contextFactory.setDestroyInvoker(destroyInvoker);
+            List<Object> elements = javaImpl.getComponentInfo().getExtensibilityElements();
+            for (Object element : elements) {
+                if (element instanceof InitInvokerExtensibilityElement) {
+                    InitInvokerExtensibilityElement invokerElement = (InitInvokerExtensibilityElement) element;
+                    EventInvoker<Object> initInvoker = invokerElement.getEventInvoker();
+                    boolean eagerInit = invokerElement.isEager();
+                    contextFactory.setEagerInit(eagerInit);
+                    contextFactory.setInitInvoker(initInvoker);
+                } else if (element instanceof DestroyInvokerExtensibilityElement) {
+                    DestroyInvokerExtensibilityElement invokerElement = (DestroyInvokerExtensibilityElement) element;
+                    EventInvoker<Object> destroyInvoker = invokerElement.getEventInvoker();
+                    contextFactory.setDestroyInvoker(destroyInvoker);
+                } else if (element instanceof ComponentNameExtensibilityElement) {
+                    ComponentNameExtensibilityElement nameElement = (ComponentNameExtensibilityElement) element;
+                    injectors.add(nameElement.getEventInvoker(name));
+                } else if (element instanceof ContextExtensibilityElement) {
+                    ContextExtensibilityElement contextElement = (ContextExtensibilityElement) element;
+                    injectors.add(contextElement.getInjector(contextFactory));
+                }else if (element instanceof InjectorExtensibilityElement){
+                    InjectorExtensibilityElement injectorElement = (InjectorExtensibilityElement)element;
+                    injectors.add(injectorElement.getInjector(contextFactory));
+                }
             }
             contextFactory.setSetters(injectors);
             return contextFactory;

Modified: incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaImplementationLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaImplementationLoader.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/loader/JavaImplementationLoader.java Sat Apr 29 15:02:47 2006
@@ -33,7 +33,7 @@
 import org.apache.tuscany.core.config.InvalidRootElementException;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.config.SidefileLoadException;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.loader.LoaderContext;

Modified: incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/MockFactory.java Sat Apr 29 15:02:47 2006
@@ -39,7 +39,6 @@
 import org.apache.tuscany.container.java.mock.components.SourceImpl;
 import org.apache.tuscany.container.java.mock.components.Target;
 import org.apache.tuscany.container.java.mock.components.TargetImpl;
-import org.apache.tuscany.container.java.mock.components.ModuleScopeInitDestroyComponent;
 import org.apache.tuscany.core.builder.BuilderException;
 import org.apache.tuscany.core.builder.ContextFactory;
 import org.apache.tuscany.core.builder.ContextFactoryBuilder;
@@ -52,7 +51,7 @@
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
 import org.apache.tuscany.core.context.CompositeContext;
@@ -92,7 +91,6 @@
 import org.apache.tuscany.model.assembly.Reference;
 import org.apache.tuscany.model.assembly.Scope;
 import org.apache.tuscany.model.assembly.Service;
-import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.impl.AssemblyContextImpl;
 import org.apache.tuscany.model.types.java.JavaServiceContract;
 import org.osoa.sca.annotations.ComponentName;

Modified: incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/BasicModuleScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/BasicModuleScopeTestCase.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/BasicModuleScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/BasicModuleScopeTestCase.java Sat Apr 29 15:02:47 2006
@@ -21,7 +21,6 @@
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
-import org.apache.tuscany.container.java.assembly.impl.JavaAssemblyFactoryImpl;
 import org.apache.tuscany.container.java.builder.JavaContextFactoryBuilder;
 import org.apache.tuscany.container.java.mock.MockFactory;
 import org.apache.tuscany.container.java.mock.components.ModuleScopeComponentImpl;
@@ -32,9 +31,6 @@
 import org.apache.tuscany.core.builder.system.PolicyBuilderRegistry;
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.ImplementationProcessor;
-import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
-import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.context.Context;
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.event.ModuleStart;
@@ -45,7 +41,6 @@
 import org.apache.tuscany.core.wire.jdk.JDKWireFactoryFactory;
 import org.apache.tuscany.core.wire.service.DefaultWireFactoryService;
 import org.apache.tuscany.core.wire.service.WireFactoryService;
-import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AtomicComponent;
 import org.apache.tuscany.model.assembly.ComponentInfo;
 import org.apache.tuscany.model.assembly.Scope;

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/BuilderConfigException.java Sat Apr 29 15:02:47 2006
@@ -1,7 +1,7 @@
 package org.apache.tuscany.core.builder;
 
 /**
- * Represents an error processing a logical configuration model
+ * Represents an error processing an assembly model
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ComponentTypeIntrospector.java Sat Apr 29 15:02:47 2006
@@ -17,6 +17,7 @@
 package org.apache.tuscany.core.config;
 
 import org.apache.tuscany.model.assembly.ComponentInfo;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 
 /**
  * Interface for implementations that are able create SCA definitions by inspecting Java classes.

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/impl/Java5ComponentTypeIntrospector.java Sat Apr 29 15:02:47 2006
@@ -25,7 +25,7 @@
 
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.JavaIntrospectionHelper;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.system.annotation.Autowire;
@@ -72,7 +72,7 @@
     }
 
     /**
-     * Visits the given implementation type and calls back to {@link ImplementationProcessor}s registered with
+     * Visits the given implementation type and calls back to {@link org.apache.tuscany.core.extension.config.ImplementationProcessor}s registered with
      * this introspector to build up a {@link ComponentInfo}
      *
      * @return ComponentInfo representing the implementation type metadata

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ComponentNameProcessor.java Sat Apr 29 15:02:47 2006
@@ -13,14 +13,13 @@
  */
 package org.apache.tuscany.core.config.processor;
 
-import java.lang.reflect.Method;
 import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 
+import org.apache.tuscany.core.extension.config.extensibility.ComponentNameExtensibilityElement;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.ComponentInfo;
-import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.JavaExtensibilityHelper;
-import org.apache.tuscany.core.assembly.JavaExtensibilityElement;
 import org.osoa.sca.annotations.ComponentName;
 
 /**
@@ -39,8 +38,7 @@
         if (name == null) {
             return;
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setContext(method);
+        type.getExtensibilityElements().add(new ComponentNameExtensibilityElement(method));
     }
 
     public void visitField(Field field, ComponentInfo type) throws ConfigurationLoadException {
@@ -48,7 +46,6 @@
         if (name == null) {
             return;
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setComponentName(field);
+        type.getExtensibilityElements().add(new ComponentNameExtensibilityElement(field));
     }
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ContextProcessor.java Sat Apr 29 15:02:47 2006
@@ -1,19 +1,31 @@
+/**
+ *
+ * Copyright 2005 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.config.processor;
 
-import java.lang.reflect.Method;
 import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 
+import org.apache.tuscany.core.extension.config.extensibility.ContextExtensibilityElement;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.ComponentInfo;
-import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.JavaExtensibilityHelper;
-import org.apache.tuscany.core.assembly.JavaExtensibilityElement;
 import org.osoa.sca.annotations.Context;
 
 /**
  * Processes the {@link org.osoa.sca.annotations.Context} annotation
  *
- *  @version $$Rev$$ $$Date$$
+ * @version $$Rev$$ $$Date$$
  */
 public class ContextProcessor extends ImplementationProcessorSupport {
 
@@ -26,8 +38,7 @@
         if (context == null) {
             return;
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setContext(method);
+        type.getExtensibilityElements().add(new ContextExtensibilityElement(method));
     }
 
     public void visitField(Field field, ComponentInfo type) throws ConfigurationLoadException {
@@ -35,8 +46,7 @@
         if (context == null) {
             return;
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setContext(field);
+        type.getExtensibilityElements().add(new ContextExtensibilityElement(field));
     }
 
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/DestroyProcessor.java Sat Apr 29 15:02:47 2006
@@ -2,17 +2,15 @@
 
 import java.lang.reflect.Method;
 
+import org.apache.tuscany.core.extension.config.extensibility.DestroyInvokerExtensibilityElement;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.ComponentInfo;
-import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.JavaExtensibilityHelper;
-import org.apache.tuscany.core.assembly.JavaExtensibilityElement;
-import org.apache.tuscany.core.injection.MethodEventInvoker;
 import org.osoa.sca.annotations.Destroy;
 
 /**
  * Processes a {@link Destroy}
- * 
+ *
  * @version $$Rev$$ $$Date$$
  */
 public class DestroyProcessor extends ImplementationProcessorSupport {
@@ -26,10 +24,9 @@
         if (destroy == null) {
             return;
         }
-        if (method.getParameterTypes().length != 0){
+        if (method.getParameterTypes().length != 0) {
             throw new ConfigurationLoadException("Destroy methods cannot take parameters");
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setDestroy(new MethodEventInvoker(method));
+        type.getExtensibilityElements().add(new DestroyInvokerExtensibilityElement(method));
     }
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ImplementationProcessorSupport.java Sat Apr 29 15:02:47 2006
@@ -18,12 +18,12 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.core.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.system.annotation.Autowire;
-import org.apache.tuscany.model.assembly.ComponentInfo;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
+import org.apache.tuscany.model.assembly.ComponentInfo;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Scope;
 
@@ -92,4 +92,16 @@
     public void visitEnd(Class<?> clazz, ComponentInfo type) throws ConfigurationLoadException {
 
     }
+
+//    /**
+//     * Creates a {@link JavaExtensibilityElement} subclasses may update while processing annotations
+//     */
+//    protected JavaExtensibilityElement getExtensibilityElement(ComponentInfo type) {
+//        JavaExtensibilityElement element = (JavaExtensibilityElement) type.getExtensibilityElements().get(JAVA_ELEMENT);
+//        if (element == null) {
+//            element = new JavaExtensibilityElementImpl();
+//            type.getExtensibilityElements().put(JAVA_ELEMENT, element);
+//        }
+//        return element;
+//    }
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/InitProcessor.java Sat Apr 29 15:02:47 2006
@@ -1,11 +1,22 @@
+/**
+ *
+ * Copyright 2005 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.config.processor;
 
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.core.assembly.JavaExtensibilityElement;
+import org.apache.tuscany.core.extension.config.extensibility.InitInvokerExtensibilityElement;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.JavaExtensibilityHelper;
-import org.apache.tuscany.core.injection.MethodEventInvoker;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.ComponentInfo;
 import org.osoa.sca.annotations.Init;
@@ -29,11 +40,9 @@
         if (init == null) {
             return;
         }
-        if (method.getParameterTypes().length != 0){
+        if (method.getParameterTypes().length != 0) {
             throw new ConfigurationLoadException("Initialize methods cannot take parameters");
         }
-        JavaExtensibilityElement element = JavaExtensibilityHelper.getExtensibilityElement(type);
-        element.setEagerInit(init.eager());
-        element.setInit(new MethodEventInvoker(method));
+        type.getExtensibilityElements().add(new InitInvokerExtensibilityElement(method,init.eager()));
     }
 }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorHelper.java Sat Apr 29 15:02:47 2006
@@ -19,7 +19,7 @@
 import org.apache.tuscany.model.assembly.Service;
 
 /**
- * Provides utility functions for {@link org.apache.tuscany.core.config.ImplementationProcessor}s
+ * Provides utility functions for {@link org.apache.tuscany.core.extension.config.ImplementationProcessor}s
  *
  * @version $$Rev$$ $$Date$$
  */

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java Sat Apr 29 15:02:47 2006
@@ -16,7 +16,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 
 /**

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/PropertyReferenceValidator.java Sat Apr 29 15:02:47 2006
@@ -1,3 +1,16 @@
+/**
+ *
+ * Copyright 2005 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.config.processor;
 
 import java.lang.annotation.Annotation;

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ReferenceProcessor.java Sat Apr 29 15:02:47 2006
@@ -1,3 +1,16 @@
+/**
+ *
+ * Copyright 2005 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.config.processor;
 
 import java.lang.reflect.Field;

Copied: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java (from r398221, incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationProcessor.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java?p2=incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java&p1=incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationProcessor.java&r1=398221&r2=398248&rev=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/ImplementationProcessor.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/ImplementationProcessor.java Sat Apr 29 15:02:47 2006
@@ -11,24 +11,25 @@
  * 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.config;
+package org.apache.tuscany.core.extension.config;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
 import org.apache.tuscany.model.assembly.ComponentInfo;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
 
 /**
  * Implementations process a Java class and contribute to a {@link org.apache.tuscany.model.assembly.ComponentInfo}
  * or provide some validation function. Implementations may contribute to defined <code>ComponentInfo</code>
  * metadata, a general <code>ComponentType</code> extensibility element, or a more specific Java extensibility
- * element, which is associated with {@link org.apache.tuscany.core.assembly.JavaExtensibilityElement} and
+ * element, which is associated with {@link org.apache.tuscany.core.extension.config.JavaExtensibilityElement} and
  * stored in the <code>ComponentInfo</code>'s extensibility collection. Processors will typically use {@link
  * JavaExtensibilityHelper#getExtensibilityElement(org.apache.tuscany.model.assembly.Extensible)}, which
  * provides methods for retrieving the Java extensibility element.
  * <p/>
- * In the runtime, a {@link ComponentTypeIntrospector} system service introspects component implementation
+ * In the runtime, a {@link org.apache.tuscany.core.config.ComponentTypeIntrospector} system service introspects component implementation
  * types when an assembly is loaded, calling out to registered processors in the order defined by {@link
  * ComponentTypeIntrospector#introspect(Class<?>)}. Generally, processors are also system services which
  * register themeselves with a <code>ComponentTypeIntrospector</code>. For convenience, a processor

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/InjectorExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2005 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.extension.config;
+
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.injection.Injector;
+
+/**
+ * An extensiblity element which provides {@link Injector}s based on component type metadata
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface InjectorExtensibilityElement extends JavaExtensibilityElement {
+
+    /**
+     * Creates an injector
+     * @param resolver that returns the current composite context
+     */
+    public Injector<?> getInjector(ContextResolver resolver);
+
+}

Copied: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java (from r398221, incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/JavaExtensibilityElement.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java?p2=incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java&p1=incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/JavaExtensibilityElement.java&r1=398221&r2=398248&rev=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/assembly/JavaExtensibilityElement.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/JavaExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -11,88 +11,15 @@
  * 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.assembly;
-
-import java.lang.reflect.AccessibleObject;
-import java.util.List;
-
-import org.apache.tuscany.core.injection.EventInvoker;
-import org.apache.tuscany.core.injection.Injector;
+package org.apache.tuscany.core.extension.config;
 
 /**
- * Serves as a holder for metadata associated with SCA Java component types
+ * Serves as a marker for a metadata extensibility point. For example, {@link ImplementationProcessor}s may
+ * create extensibility elements which are responsible for implementing injection functionality prescribed by
+ * a Java source annotation.
  *
  * @version $$Rev$$ $$Date$$
  */
 public interface JavaExtensibilityElement {
 
-    /**
-     * Returns the {@link EventInvoker} associated with the intialize callback
-     */
-    EventInvoker getInit();
-
-    /**
-     * Sets the {@link EventInvoker} associated with the intialize callback
-     */
-    void setInit(EventInvoker init);
-
-    /**
-     * Returns true if the implementation must be eagerly initialized
-     */
-    boolean isEagerInit();
-
-    /**
-     * Determines if the implementation must be eagerly initialized
-     */
-    boolean setEagerInit(boolean val);
-
-    /**
-     * Returns the {@link EventInvoker} associated with the destroy callback
-     */
-    EventInvoker getDestroy();
-
-    /**
-     * Sets the {@link EventInvoker} associated with the destroy callback
-     */
-    void setDestroy(EventInvoker destroy);
-
-    /**
-     * Returns the field, method, or constructor marked with an {@link org.osoa.sca.annotations.ComponentName}
-     * annotation
-     */
-    AccessibleObject getComponentName();
-
-    /**
-     * Sets the field, method, or constructor marked with an {@link org.osoa.sca.annotations.ComponentName}
-     * annotation
-     */
-    void setComponentName(AccessibleObject componentName);
-
-    /**
-     * Returns the field, method, or constructor marked with an {@link org.osoa.sca.annotations.Context}
-     * annotation
-     */
-    AccessibleObject getContext();
-
-    /**
-     * Sets the field, method, or constructor marked with an {@link org.osoa.sca.annotations.Context}
-     * annotation
-     */
-    void setContext(AccessibleObject context);
-
-    /**
-     * Returns a list of generic extensibility {@link EventInvoker}s. Extension processors that add support
-     * for custom annotations types may add an <code>EventInvoker</code> to this collection. The invoker will
-     * be available to the component type's {@link org.apache.tuscany.core.builder.ContextFactoryBuilder} to
-     * pass to a {@link org.apache.tuscany.core.builder.ContextFactory}.
-     */
-    List<EventInvoker> getInvokers();
-
-    /**
-     * Returns a list of generic extensibility {@link Injector}s. Extension processors that add support
-     * for custom annotations types may add an <code>Injector</code> to this collection. The injector will
-     * be available to the component type's {@link org.apache.tuscany.core.builder.ContextFactoryBuilder} to
-     * pass to a {@link org.apache.tuscany.core.builder.ContextFactory}.
-     */
-    List<Injector> getInjectors();
 }

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ComponentNameExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,36 @@
+package org.apache.tuscany.core.extension.config.extensibility;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.SingletonObjectFactory;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.extension.config.JavaExtensibilityElement;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ComponentNameExtensibilityElement implements JavaExtensibilityElement {
+
+    private Method method;
+    private Field field;
+
+    public ComponentNameExtensibilityElement(Method m) {
+        method = m;
+    }
+
+    public ComponentNameExtensibilityElement(Field f) {
+        field = f;
+    }
+
+    public Injector<?> getEventInvoker(String name) {
+        if (method != null) {
+            return new MethodInjector(method, new SingletonObjectFactory<Object>(name));
+        }else{
+            return new FieldInjector(field, new SingletonObjectFactory<Object>(name));
+        }
+    }
+
+}

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/ContextExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,36 @@
+package org.apache.tuscany.core.extension.config.extensibility;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.extension.config.JavaExtensibilityElement;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.injection.ContextObjectFactory;
+import org.apache.tuscany.core.builder.ContextResolver;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ContextExtensibilityElement implements JavaExtensibilityElement {
+
+    private Method method;
+    private Field field;
+
+    public ContextExtensibilityElement(Method m) {
+        method = m;
+    }
+
+    public ContextExtensibilityElement(Field f) {
+        field = f;
+    }
+
+    public Injector<?> getInjector(ContextResolver resolver) {
+        if (method != null) {
+            return new MethodInjector(method, new ContextObjectFactory(resolver));
+        } else {
+            return new FieldInjector(field, new ContextObjectFactory(resolver));
+        }
+    }
+}

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/DestroyInvokerExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,13 @@
+package org.apache.tuscany.core.extension.config.extensibility;
+
+import java.lang.reflect.Method;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class DestroyInvokerExtensibilityElement extends InvokerExtensibilityElement{
+
+    public DestroyInvokerExtensibilityElement(Method m) {
+        super(m);
+    }
+}

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InitInvokerExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,21 @@
+package org.apache.tuscany.core.extension.config.extensibility;
+
+import java.lang.reflect.Method;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class InitInvokerExtensibilityElement extends InvokerExtensibilityElement{
+
+    private boolean eager;
+
+    public InitInvokerExtensibilityElement(Method m, boolean eager) {
+        super(m);
+        this.eager = eager;
+    }
+
+    public boolean isEager() {
+        return eager;
+    }
+
+}

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/extension/config/extensibility/InvokerExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,26 @@
+package org.apache.tuscany.core.extension.config.extensibility;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.extension.config.JavaExtensibilityElement;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class InvokerExtensibilityElement implements JavaExtensibilityElement {
+
+    private Method method;
+    private MethodEventInvoker invoker;
+
+    public InvokerExtensibilityElement(Method m) {
+        method = m;
+    }
+
+    public MethodEventInvoker getEventInvoker() {
+        if (invoker == null) {
+            invoker = new MethodEventInvoker(method);
+        }
+        return invoker;
+    }
+}

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/injection/FieldInjector.java Sat Apr 29 15:02:47 2006
@@ -15,10 +15,6 @@
 
     private final ObjectFactory<?> objectFactory;
 
-    // //----------------------------------
-    // Constructors
-    // ----------------------------------
-
     /**
      * Create an injector and have it use the given <code>ObjectFactory</code>
      * to inject a value on the instance using the reflected <code>Field</code>
@@ -27,10 +23,6 @@
         this.field = field;
         this.objectFactory = objectFactory;
     }
-
-    // ----------------------------------
-    // Methods
-    // ----------------------------------
 
     /**
      * Inject a new value on the given isntance

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/StAXUtil.java Sat Apr 29 15:02:47 2006
@@ -26,7 +26,7 @@
 
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.ConfigurationException;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
 import org.apache.tuscany.core.loader.assembly.ComponentLoader;

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/SystemExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,23 @@
+/**
+ *
+ * Copyright 2005 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.system.config;
+
+/**
+ * Base marker for system metadata extensions
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SystemExtensibilityElement {
+
+}

Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java?rev=398248&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/config/extensibility/AutowireExtensibilityElement.java Sat Apr 29 15:02:47 2006
@@ -0,0 +1,53 @@
+/**
+ *
+ * Copyright 2005 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.system.config.extensibility;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.system.config.SystemExtensibilityElement;
+import org.apache.tuscany.core.system.injection.AutowireObjectFactory;
+
+/**
+ * A metadata extensbility element for autowires; creates injectors which return the target of an autowire
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class AutowireExtensibilityElement implements SystemExtensibilityElement {
+
+    private Method method;
+    private Field field;
+
+    public AutowireExtensibilityElement(Method m) {
+        assert(method.getParameterTypes().length == 1): "Illegal number of parameters";
+        method = m;
+    }
+
+    public AutowireExtensibilityElement(Field f) {
+        field = f;
+    }
+
+    @SuppressWarnings("unchecked")
+    public Injector<?> getInjector(ContextResolver resolver) {
+        if (method != null) {
+            return new MethodInjector(method, new AutowireObjectFactory(method.getParameterTypes()[0], resolver));
+        } else {
+            return new FieldInjector(field, new AutowireObjectFactory(field.getType(), resolver));
+        }
+    }
+}

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/config/impl/IntrospectorFactory.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/config/impl/IntrospectorFactory.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/config/impl/IntrospectorFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/config/impl/IntrospectorFactory.java Sat Apr 29 15:02:47 2006
@@ -3,7 +3,7 @@
 import java.util.List;
 
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.system.assembly.impl.SystemAssemblyFactoryImpl;
 import org.apache.tuscany.model.assembly.AssemblyFactory;

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/ComponentLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/ComponentLoaderTestCase.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/ComponentLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/loader/assembly/ComponentLoaderTestCase.java Sat Apr 29 15:02:47 2006
@@ -24,7 +24,7 @@
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.ConfigurationLoadException;
-import org.apache.tuscany.core.config.ImplementationProcessor;
+import org.apache.tuscany.core.extension.config.ImplementationProcessor;
 import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.processor.ProcessorUtils;
 import org.apache.tuscany.core.injection.SingletonObjectFactory;

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Extensible.java Sat Apr 29 15:02:47 2006
@@ -19,19 +19,19 @@
 import java.util.List;
 
 /**
- * An extensible model object.
- * We actually need this even though we have the ability to load specializations of individual model objects
+ * An extensible model object. We actually need this even though we have the ability to load specializations
+ * of individual model objects
  */
 public interface Extensible extends AssemblyObject {
 
     /**
      * Returns the extensibility elements.
      */
-    List getExtensibilityElements();
+    List<Object> getExtensibilityElements();
 
     /**
      * Returns the extensibility attributes.
      */
-    List getExtensibilityAttributes();
+    List<Object> getExtensibilityAttributes();
 
 }

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Implementation.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Implementation.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Implementation.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/Implementation.java Sat Apr 29 15:02:47 2006
@@ -33,7 +33,7 @@
     
     /**
      * Sets the generic component type corresponding to this implementation.
-     * @param componentType the generic component type corresponding to this implementation
+     * @param componentInfo the generic component type corresponding to this implementation
      */
     void setComponentInfo(ComponentInfo componentInfo);
 

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyObjectImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyObjectImpl.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyObjectImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/AssemblyObjectImpl.java Sat Apr 29 15:02:47 2006
@@ -43,7 +43,6 @@
      * Walk a visitor through a collection of model objects.
      * @param collection
      * @param visitor
-     * @return
      */
     protected boolean accept(Collection collection, AssemblyVisitor visitor) {
         for (Object member : collection) {

Modified: incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java (original)
+++ incubator/tuscany/java/sca/model/src/main/java/org/apache/tuscany/model/assembly/impl/ExtensibleImpl.java Sat Apr 29 15:02:47 2006
@@ -27,21 +27,21 @@
  * An implementation of Extensible.
  */
 public abstract class ExtensibleImpl extends AssemblyObjectImpl implements Extensible {
-    
-    private List<Object> extensibilityElements=new ArrayList<Object>();
-    private List<Object> extensibilityAttributes=new ArrayList<Object>();
+
+    private List<Object> extensibilityElements = new ArrayList<Object>();
+    private List<Object> extensibilityAttributes = new ArrayList<Object>();
 
     protected ExtensibleImpl() {
     }
 
-    public List getExtensibilityElements() {
+    public List<Object> getExtensibilityElements() {
         return extensibilityElements;
     }
 
-    public List getExtensibilityAttributes() {
+    public List<Object> getExtensibilityAttributes() {
         return extensibilityAttributes;
     }
-    
+
     public void initialize(AssemblyContext modelContext) {
         if (isInitialized())
             return;
@@ -56,22 +56,20 @@
         if (isFrozen())
             return;
         super.freeze();
-        
+
         // Freeze extensibility elements and attributes
         freeze(extensibilityElements);
         freeze(extensibilityAttributes);
     }
-    
+
     public boolean accept(AssemblyVisitor visitor) {
         if (!super.accept(visitor))
             return false;
-        
+
         if (!accept(extensibilityElements, visitor))
             return false;
-        if (!accept(extensibilityAttributes, visitor))
-            return false;
-        
-        return true;
+        return accept(extensibilityAttributes, visitor);
+
     }
 
 }

Modified: incubator/tuscany/java/sca/tomcat/src/test/java/org/apache/tuscany/tomcat/integration/TomcatIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/test/java/org/apache/tuscany/tomcat/integration/TomcatIntegrationTestCase.java?rev=398248&r1=398247&r2=398248&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tomcat/src/test/java/org/apache/tuscany/tomcat/integration/TomcatIntegrationTestCase.java (original)
+++ incubator/tuscany/java/sca/tomcat/src/test/java/org/apache/tuscany/tomcat/integration/TomcatIntegrationTestCase.java Sat Apr 29 15:02:47 2006
@@ -125,7 +125,6 @@
         assertEquals(200, response.getStatus());
 
         String s = response.getOutputStream().toString(); // would be better to validate with WSDl4J
-        assertTrue(s.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<wsdl:definitions"));
         assertTrue(s.contains("<wsdl:service name=\"HelloWorldServiceImplService\">"));
 
         host.removeChild(ctx);