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);