Author: jmarino
Date: Tue May 9 20:55:24 2006
New Revision: 405621
URL: http://svn.apache.org/viewcvs?rev=405621&view=rev
Log:
SDOHelper support; still needs testing
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
(with props)
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
(with props)
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
(with props)
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
(with props)
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
Removed:
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.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/context/CompositeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
Tue May 9 20:55:24 2006
@@ -19,6 +19,9 @@
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
import org.osoa.sca.annotations.Service;
+import org.apache.tuscany.core.sdo.helper.SDOHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.DataFactory;
/**
* @version $Rev$ $Date$
@@ -53,5 +56,6 @@
public String getGreetings(String name) {
return greetingProvider2.getGreeting(name, locale);
}
+
}
Modified:
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
(original)
+++
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
Tue May 9 20:55:24 2006
@@ -20,11 +20,10 @@
import java.net.URLClassLoader;
import junit.framework.TestCase;
+import org.apache.tuscany.core.client.TuscanyRuntime;
import org.osoa.sca.CurrentModuleContext;
import org.osoa.sca.ModuleContext;
-import org.apache.tuscany.core.client.TuscanyRuntime;
-
/**
* @version $Rev$ $Date$
*/
@@ -33,16 +32,15 @@
public void testHelloWorld() throws Exception {
TuscanyRuntime tuscany = new TuscanyRuntime("test", "foo");
- tuscany.start();
+ tuscany.start();
ModuleContext moduleContext = CurrentModuleContext.getContext();
assertNotNull(moduleContext);
- assertEquals("foo",moduleContext.getURI());
+ assertEquals("foo", moduleContext.getURI());
HelloWorldService helloworldService = (HelloWorldService)
moduleContext.locateService("HelloWorld");
assertNotNull(helloworldService);
String value = helloworldService .getGreetings("World");
assertEquals("Hello World", value);
-
tuscany.stop();
}
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
Tue May 9 20:55:24 2006
@@ -105,6 +105,8 @@
if (moduleContext.getURI() == null){
moduleContext.setURI(uri);
}
+ //TODO remove hack
+ moduleContext.setAssemblyContext(modelContext);
}
/**
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=405621&r1=405620&r2=405621&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
Tue May 9 20:55:24 2006
@@ -22,6 +22,7 @@
import org.apache.tuscany.core.system.config.processor.ParentContextProcessor;
import org.apache.tuscany.core.config.ComponentTypeIntrospector;
import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
+import org.apache.tuscany.core.sdo.helper.SDOHelperProcessor;
import org.apache.tuscany.model.assembly.AssemblyFactory;
/**
@@ -48,6 +49,7 @@
processors.add(new AutowireProcessor());
processors.add(new MonitorProcessor());
processors.add(new ParentContextProcessor());
+ processors.add(new SDOHelperProcessor());
return processors;
}
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
Tue May 9 20:55:24 2006
@@ -4,6 +4,7 @@
import org.apache.tuscany.model.assembly.Composite;
import org.apache.tuscany.model.assembly.Part;
import org.apache.tuscany.model.assembly.Extensible;
+import org.apache.tuscany.model.assembly.AssemblyContext;
import java.util.List;
@@ -17,6 +18,12 @@
public String getURI();
public void setURI(String uri);
+
+ /**
+ * TODO remove this method
+ * @deprecated
+ */
+ public void setAssemblyContext(AssemblyContext context);
/**
* Returns the parent context, or null if the context does not have one
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
Tue May 9 20:55:24 2006
@@ -13,10 +13,22 @@
*/
package org.apache.tuscany.core.context.impl;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.tuscany.common.TuscanyRuntimeException;
import org.apache.tuscany.core.builder.BuilderConfigException;
import org.apache.tuscany.core.builder.ContextFactory;
import org.apache.tuscany.core.config.ConfigurationException;
import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.AutowireResolutionException;
import org.apache.tuscany.core.context.CompositeContext;
import org.apache.tuscany.core.context.ConfigurationContext;
import org.apache.tuscany.core.context.Context;
@@ -26,55 +38,44 @@
import org.apache.tuscany.core.context.EntryPointContext;
import org.apache.tuscany.core.context.EventContext;
import org.apache.tuscany.core.context.EventException;
+import org.apache.tuscany.core.context.Lifecycle;
+import org.apache.tuscany.core.context.MissingContextFactoryException;
+import org.apache.tuscany.core.context.MissingImplementationException;
+import org.apache.tuscany.core.context.MissingScopeException;
+import org.apache.tuscany.core.context.ProxyConfigurationException;
import org.apache.tuscany.core.context.QualifiedName;
import org.apache.tuscany.core.context.ScopeAwareContext;
import org.apache.tuscany.core.context.ScopeContext;
import org.apache.tuscany.core.context.ScopeStrategy;
import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.context.MissingImplementationException;
-import org.apache.tuscany.core.context.MissingContextFactoryException;
-import org.apache.tuscany.core.context.ProxyConfigurationException;
-import org.apache.tuscany.core.context.MissingScopeException;
-import org.apache.tuscany.core.context.AutowireResolutionException;
-import org.apache.tuscany.core.context.Lifecycle;
-import org.apache.tuscany.core.context.event.RequestEnd;
import org.apache.tuscany.core.context.event.Event;
+import org.apache.tuscany.core.context.event.RequestEnd;
import org.apache.tuscany.core.context.event.SessionBound;
import org.apache.tuscany.core.context.event.SessionEvent;
import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.system.annotation.Autowire;
+import org.apache.tuscany.core.system.annotation.ParentContext;
+import org.apache.tuscany.core.system.assembly.SystemBinding;
import org.apache.tuscany.core.wire.InvocationConfiguration;
+import org.apache.tuscany.core.wire.SourceWireFactory;
+import org.apache.tuscany.core.wire.TargetWireFactory;
import org.apache.tuscany.core.wire.WireConfiguration;
import org.apache.tuscany.core.wire.WireFactory;
import org.apache.tuscany.core.wire.WireFactoryInitException;
-import org.apache.tuscany.core.wire.SourceWireFactory;
-import org.apache.tuscany.core.wire.TargetWireFactory;
-import org.apache.tuscany.core.system.annotation.Autowire;
-import org.apache.tuscany.core.system.annotation.ParentContext;
-import org.apache.tuscany.core.system.assembly.SystemBinding;
-import org.apache.tuscany.model.assembly.Composite;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.model.assembly.AssemblyObject;
+import org.apache.tuscany.model.assembly.Binding;
import org.apache.tuscany.model.assembly.Component;
-import org.apache.tuscany.model.assembly.Implementation;
+import org.apache.tuscany.model.assembly.Composite;
import org.apache.tuscany.model.assembly.EntryPoint;
import org.apache.tuscany.model.assembly.Extensible;
import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.Implementation;
import org.apache.tuscany.model.assembly.Module;
-import org.apache.tuscany.model.assembly.Scope;
-import org.apache.tuscany.model.assembly.Binding;
import org.apache.tuscany.model.assembly.ModuleComponent;
+import org.apache.tuscany.model.assembly.Scope;
import org.apache.tuscany.model.assembly.Service;
-import org.apache.tuscany.model.assembly.AssemblyObject;
import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
-import org.apache.tuscany.common.TuscanyRuntimeException;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.EnumMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
/**
* The base implementation of a composite context
@@ -86,6 +87,8 @@
public static final int DEFAULT_WAIT = 1000 * 60;
+ protected AssemblyContext assemblyContext;
+
protected CompositeContext parentContext;
// The parent configuration context, if one exists
@@ -147,6 +150,10 @@
module = new AssemblyFactoryImpl().createModule();
}
+ public void setAssemblyContext(AssemblyContext assemblyContext) {
+ this.assemblyContext = assemblyContext;
+ }
+
private String uri;
public String getURI() {
@@ -161,10 +168,10 @@
public void start() {
synchronized (lock) {
try {
- if (lifecycleState == STOPPED){
+ if (lifecycleState == STOPPED) {
throw new IllegalStateException("Context cannot be
restarted - create a new one");
- }else if (lifecycleState != UNINITIALIZED) {
- throw new IllegalStateException("Context not in
UNINITIALIZED state");
+ } else if (lifecycleState != UNINITIALIZED) {
+ throw new IllegalStateException("Context not in
UNINITIALIZED state");
}
lifecycleState = INITIALIZING;
@@ -199,7 +206,8 @@
for (ExternalService es : module.getExternalServices()) {
registerAutowire(es);
}
- for (Map.Entry<Scope, List<ContextFactory<Context>>> entries :
configurationsByScope.entrySet()) {
+ for (Map.Entry<Scope, List<ContextFactory<Context>>> entries :
configurationsByScope.entrySet())
+ {
// register configurations with scope contexts
ScopeContext scope = scopeContexts.get(entries.getKey());
scope.registerFactories(entries.getValue());
@@ -270,7 +278,7 @@
}
@ParentContext
- public void setParent(CompositeContext parent){
+ public void setParent(CompositeContext parent) {
parentContext = parent;
}
@@ -350,7 +358,8 @@
contextFactory.prepare(this);
try {
if (contextFactory.getSourceWireFactories() != null) {
- for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories()) {
+ for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories())
+ {
sourceWireFactory.initialize();
}
}
@@ -374,7 +383,8 @@
contextFactory.prepare(this);
try {
if (contextFactory.getSourceWireFactories() != null) {
- for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories()) {
+ for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories())
+ {
sourceWireFactory.initialize();
}
}
@@ -398,7 +408,8 @@
contextFactory.prepare(this);
try {
if (contextFactory.getSourceWireFactories() != null) {
- for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories()) {
+ for (SourceWireFactory sourceWireFactory :
contextFactory.getSourceWireFactories())
+ {
sourceWireFactory.initialize();
}
}
@@ -505,12 +516,12 @@
throw new UnsupportedOperationException();
}
- public void publish(Event event){
+ public void publish(Event event) {
checkInit();
if (event instanceof SessionBound) {
SessionEvent sessionEvent = ((SessionBound) event);
// update context
- eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier()
,sessionEvent.getId());
+
eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier(),
sessionEvent.getId());
} else if (event instanceof RequestEnd) {
// be very careful with pooled threads, ensuring threadlocals are
cleaned up
eventContext.clearIdentifiers();
@@ -555,9 +566,9 @@
* Blocks until the module context has been initialized
*/
protected void checkInit() {
- if (lifecycleState == STOPPED){
+ if (lifecycleState == STOPPED) {
throw new IllegalStateException("Context cannot be restarted -
create a new one");
- }
+ }
if (!initialized) {
try {
/* block until the module has initialized */
@@ -678,6 +689,8 @@
return instanceInterface.cast(this);
} else if (AutowireContext.class.equals(instanceInterface)) {
return instanceInterface.cast(this);
+ } else if (AssemblyContext.class.equals(instanceInterface)) {
+ return instanceInterface.cast(assemblyContext);
}
NameToScope nts = autowireInternal.get(instanceInterface);
@@ -804,7 +817,7 @@
}
public void connect(SourceWireFactory sourceFactory, TargetWireFactory
targetFactory, Class targetType, boolean downScope,
- ScopeContext targetScopeContext) throws BuilderConfigException {
+ ScopeContext targetScopeContext) throws
BuilderConfigException {
if (configurationContext != null) {
try {
configurationContext.connect(sourceFactory, targetFactory,
targetType, downScope, targetScopeContext);
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
Tue May 9 20:55:24 2006
@@ -41,6 +41,7 @@
import org.apache.tuscany.core.system.context.SystemScopeStrategy;
import org.apache.tuscany.core.wire.SourceWireFactory;
import org.apache.tuscany.core.wire.TargetWireFactory;
+import org.apache.tuscany.model.assembly.AssemblyContext;
import org.apache.tuscany.model.assembly.AssemblyObject;
import org.apache.tuscany.model.assembly.Composite;
import org.apache.tuscany.model.assembly.Extensible;
@@ -144,6 +145,10 @@
}
public void setURI(String uri) {
+ }
+
+ public void setAssemblyContext(AssemblyContext context) {
+
}
//TODO remove
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.DataFactory;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class DataFactoryObjectFactory implements ObjectFactory<DataFactory> {
+
+ private ContextResolver resolver;
+
+ /**
+ * @throws org.apache.tuscany.core.injection.FactoryInitException
+ *
+ */
+ public DataFactoryObjectFactory(ContextResolver resolver) {
+ this.resolver = resolver;
+ }
+
+
+ public DataFactory getInstance() throws ObjectCreationException {
+ CompositeContext parent = resolver.getCurrentContext();
+ if (parent == null) {
+ return null;// FIXME semantic here means required is not followed
+ }
+ if (!(parent instanceof AutowireContext)) {
+ ObjectCreationException e = new ObjectCreationException("Parent
does not implement "
+ + AutowireContext.class.getName());
+ e.setIdentifier(parent.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parent;
+ AssemblyContext assemblyContext =
ctx.resolveInstance(AssemblyContext.class);
+ return SDOUtil.createDataFactory(assemblyContext.getTypeHelper());
+ }
+
+
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.TypeHelper;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TypeHelperObjectFactory implements ObjectFactory<TypeHelper> {
+
+
+ private ContextResolver resolver;
+
+ /**
+ * @throws org.apache.tuscany.core.injection.FactoryInitException
+ *
+ */
+ public TypeHelperObjectFactory(ContextResolver resolver) {
+ this.resolver = resolver;
+ }
+
+
+ public TypeHelper getInstance() throws ObjectCreationException {
+ CompositeContext parent = resolver.getCurrentContext();
+ if (parent == null) {
+ return null;// FIXME semantic here means required is not followed
+ }
+ if (!(parent instanceof AutowireContext)) {
+ ObjectCreationException e = new ObjectCreationException("Parent
does not implement "
+ + AutowireContext.class.getName());
+ e.setIdentifier(parent.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parent;
+ AssemblyContext assemblyContext =
ctx.resolveInstance(AssemblyContext.class);
+ return assemblyContext.getTypeHelper();
+ }
+
+
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.XMLHelper;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class XMLHelperObjectFactory implements ObjectFactory<XMLHelper> {
+
+
+ private ContextResolver resolver;
+
+ /**
+ * @throws org.apache.tuscany.core.injection.FactoryInitException
+ *
+ */
+ public XMLHelperObjectFactory(ContextResolver resolver) {
+ this.resolver = resolver;
+ }
+
+
+ public XMLHelper getInstance() throws ObjectCreationException {
+ CompositeContext parent = resolver.getCurrentContext();
+ if (parent == null) {
+ return null;// FIXME semantic here means required is not followed
+ }
+ if (!(parent instanceof AutowireContext)) {
+ ObjectCreationException e = new ObjectCreationException("Parent
does not implement "
+ + AutowireContext.class.getName());
+ e.setIdentifier(parent.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parent;
+ AssemblyContext assemblyContext =
ctx.resolveInstance(AssemblyContext.class);
+ return SDOUtil.createXMLHelper(assemblyContext.getTypeHelper());
+ }
+
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,46 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.XSDHelper;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class XSDHelperObjectFactory implements ObjectFactory<XSDHelper> {
+
+
+ private ContextResolver resolver;
+
+ /**
+ * @throws org.apache.tuscany.core.injection.FactoryInitException
+ *
+ */
+ public XSDHelperObjectFactory(ContextResolver resolver) {
+ this.resolver = resolver;
+ }
+
+
+ public XSDHelper getInstance() throws ObjectCreationException {
+ CompositeContext parent = resolver.getCurrentContext();
+ if (parent == null) {
+ return null;// FIXME semantic here means required is not followed
+ }
+ if (!(parent instanceof AutowireContext)) {
+ ObjectCreationException e = new ObjectCreationException("Parent
does not implement "
+ + AutowireContext.class.getName());
+ e.setIdentifier(parent.getName());
+ throw e;
+ }
+ AutowireContext ctx = (AutowireContext) parent;
+ AssemblyContext assemblyContext =
ctx.resolveInstance(AssemblyContext.class);
+ return SDOUtil.createXSDHelper(assemblyContext.getTypeHelper());
+ }
+
+
+}
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,40 @@
+/**
+ *
+ * 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.sdo.helper;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to indicate a field or method that is used to inject an SDO
helper.
+ *
+ * The following helpers are supported:
+ * commonj.sdo.helper.TypeHelper
+ * commonj.sdo.helper.DataFactory
+ * commonj.sdo.helper.XSDHelper
+ * commonj.sdo.helper.XMLHelper
+ *
+ */
[EMAIL PROTECTED]({METHOD, FIELD})
[EMAIL PROTECTED](RUNTIME)
+public @interface SDOHelper {
+
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,64 @@
+package org.apache.tuscany.core.sdo.helper;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.extension.config.InjectorExtensibilityElement;
+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.ObjectCreationException;
+import org.apache.tuscany.core.sdo.DataFactoryObjectFactory;
+import org.apache.tuscany.core.sdo.TypeHelperObjectFactory;
+import org.apache.tuscany.core.sdo.XMLHelperObjectFactory;
+import org.apache.tuscany.core.sdo.XSDHelperObjectFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SDOHelperExtensibilityElement implements
InjectorExtensibilityElement {
+
+ private Method method;
+ private Field field;
+ private Class<?> type;
+
+ public SDOHelperExtensibilityElement(Method m) {
+ method = m;
+ assert(method != null);
+ assert(method.getParameterTypes().length == 1);
+ type = method.getParameterTypes()[0];
+ }
+
+ public SDOHelperExtensibilityElement(Field field) {
+ assert (field != null);
+ this.field = field;
+ this.type = field.getType();
+ }
+
+ public Injector<?> getInjector(ContextResolver resolver) {
+ ObjectFactory<?> factory;
+ if (TypeHelper.class.equals(type)) {
+ factory = new TypeHelperObjectFactory(resolver);
+ } else if (DataFactory.class.equals(type)) {
+ factory = new DataFactoryObjectFactory(resolver);
+ } else if (XSDHelper.class.equals(type)) {
+ factory = new XSDHelperObjectFactory(resolver);
+ } else if (XMLHelper.class.equals(type)) {
+ factory = new XMLHelperObjectFactory(resolver);
+ } else {
+ ObjectCreationException e = new ObjectCreationException("Unknown
type");
+ e.setIdentifier(type.getName());
+ throw e;
+ }
+ if (method != null) {
+ return new MethodInjector(method, factory);
+ }
+ return new FieldInjector(field, factory);
+ }
+}
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java?rev=405621&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
Tue May 9 20:55:24 2006
@@ -0,0 +1,62 @@
+package org.apache.tuscany.core.sdo.helper;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.config.InvalidSetterException;
+import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
[EMAIL PROTECTED]("Module")
+public class SDOHelperProcessor extends ImplementationProcessorSupport {
+
+ @Override
+ public void visitMethod(Method method, ComponentType type) throws
ConfigurationLoadException {
+ if (method.getDeclaringClass().equals(Object.class)) {
+ return;
+ }
+ SDOHelper annotation = method.getAnnotation(SDOHelper.class);
+ if (annotation != null) {
+ if (!Modifier.isPublic(method.getModifiers())) {
+ InvalidSetterException e = new InvalidSetterException("SDO
setter method is not public");
+ e.setIdentifier(method.toString());
+ throw e;
+ }
+ Class<?>[] params = method.getParameterTypes();
+ if (params.length != 1) {
+ InvalidSetterException e = new InvalidSetterException("SDO
setter method must have one parameter");
+ e.setIdentifier(method.toString());
+ throw e;
+ }
+ type.getExtensibilityElements().add(new
SDOHelperExtensibilityElement(method));
+
+ }
+
+
+ }
+
+ @Override
+ public void visitField(Field field, ComponentType type) throws
ConfigurationLoadException {
+ if (field.getDeclaringClass().equals(Object.class)) {
+ return;
+ }
+ int modifiers = field.getModifiers();
+ SDOHelper annotation = field.getAnnotation(SDOHelper.class);
+ if (annotation != null) {
+ if (!Modifier.isPublic(modifiers) &&
!Modifier.isProtected(modifiers)) {
+ InvalidSetterException e = new
InvalidSetterException("Property field is not public or protected");
+ e.setIdentifier(field.getName());
+ throw e;
+ }
+ type.getExtensibilityElements().add(new
SDOHelperExtensibilityElement(field));
+ }
+ }
+
+
+}
Modified:
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
(original)
+++
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
Tue May 9 20:55:24 2006
@@ -1,6 +1,6 @@
package customerinfo;
-import org.apache.tuscany.databinding.sdo.helper.SDOHelper;
+import org.apache.tuscany.core.sdo.helper.SDOHelper;
import commonj.sdo.DataObject;
import commonj.sdo.helper.DataFactory;
Modified:
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
---
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
(original)
+++
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
Tue May 9 20:55:24 2006
@@ -124,6 +124,9 @@
CompositeContext rootContext = runtime.getRootContext();
rootContext.registerModelObject(moduleComponent);
moduleContext = (CompositeContext)
rootContext.getContext(moduleComponent.getName());
+ //TODO remove the hack below
+ moduleContext.setAssemblyContext(modelContext);
+
} finally {
Thread.currentThread().setContextClassLoader(oldCl);
}