Author: jboynes
Date: Fri Apr 14 12:53:03 2006
New Revision: 394181
URL: http://svn.apache.org/viewcvs?rev=394181&view=rev
Log:
add ContextFactoryBuilderRegistry
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
(with props)
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
(with props)
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java?rev=394181&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
Fri Apr 14 12:53:03 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * 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.builder;
+
+/**
+ * System wide registry for ContextFactoryBuilder implementations.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ContextFactoryBuilderRegistry {
+ /**
+ * Register a builder. Called by extensions to register their builders.
+ *
+ * @param builder the builder to register
+ */
+ void register(ContextFactoryBuilder builder);
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/ContextFactoryBuilderRegistry.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Modified:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java?rev=394181&r1=394180&r2=394181&view=diff
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java
(original)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/AssemblyVisitorImpl.java
Fri Apr 14 12:53:03 2006
@@ -26,7 +26,7 @@
*/
public class AssemblyVisitorImpl implements AssemblyVisitor {
- List<ContextFactoryBuilder> builders;
+ private List<ContextFactoryBuilder> builders;
/**
* Constructs a visitor
Added:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java?rev=394181&view=auto
==============================================================================
---
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
(added)
+++
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
Fri Apr 14 12:53:03 2006
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * 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.builder.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry;
+import org.apache.tuscany.core.builder.ContextFactoryBuilder;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ContextFactoryBuilderRegistryImpl implements
ContextFactoryBuilderRegistry {
+ private final List<ContextFactoryBuilder> builders = new ArrayList();
+
+ public void register(ContextFactoryBuilder builder) {
+ builders.add(builder);
+ }
+
+ public List<ContextFactoryBuilder> getBuilders() {
+ return builders;
+ }
+}
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/builder/impl/ContextFactoryBuilderRegistryImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
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=394181&r1=394180&r2=394181&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
Fri Apr 14 12:53:03 2006
@@ -13,39 +13,39 @@
*/
package org.apache.tuscany.core.runtime;
+import java.util.List;
+
import org.apache.tuscany.common.monitor.MonitorFactory;
import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
import org.apache.tuscany.core.builder.BuilderConfigException;
import org.apache.tuscany.core.builder.ContextFactoryBuilder;
+import org.apache.tuscany.core.builder.ContextFactoryBuilderRegistry;
import org.apache.tuscany.core.builder.HierarchicalWireBuilder;
import org.apache.tuscany.core.builder.WireBuilder;
import org.apache.tuscany.core.builder.impl.AssemblyVisitorImpl;
+import org.apache.tuscany.core.builder.impl.ContextFactoryBuilderRegistryImpl;
import org.apache.tuscany.core.builder.impl.DefaultWireBuilder;
import org.apache.tuscany.core.config.ConfigurationException;
-import org.apache.tuscany.core.context.impl.CompositeContextImpl;
-import org.apache.tuscany.core.context.impl.EventContextImpl;
-import org.apache.tuscany.core.context.RuntimeEventListener;
-import org.apache.tuscany.core.context.SystemCompositeContext;
+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.impl.AbstractContext;
+import org.apache.tuscany.core.context.ConfigurationContext;
import org.apache.tuscany.core.context.CoreRuntimeException;
import org.apache.tuscany.core.context.EventException;
import org.apache.tuscany.core.context.QualifiedName;
-import org.apache.tuscany.core.context.TargetException;
import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.context.AutowireResolutionException;
-import org.apache.tuscany.core.context.ConfigurationContext;
-import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.SystemCompositeContext;
+import org.apache.tuscany.core.context.TargetException;
+import org.apache.tuscany.core.context.impl.AbstractContext;
+import org.apache.tuscany.core.context.impl.CompositeContextImpl;
+import org.apache.tuscany.core.context.impl.EventContextImpl;
import org.apache.tuscany.core.invocation.spi.ProxyFactory;
import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
import org.apache.tuscany.core.system.context.SystemScopeStrategy;
-import org.apache.tuscany.model.assembly.Composite;
import org.apache.tuscany.model.assembly.AssemblyObject;
+import org.apache.tuscany.model.assembly.Composite;
import org.apache.tuscany.model.assembly.Extensible;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Implementation of a RuntimeContext that forms the foundation for a Tuscany
environment.
*
@@ -53,8 +53,6 @@
*/
public class RuntimeContextImpl extends AbstractContext implements
RuntimeContext {
- private final List<ContextFactoryBuilder> builders;
-
// the top-level wire builder in the runtime
private final HierarchicalWireBuilder wireBuilder;
@@ -66,6 +64,8 @@
private final MonitorFactory monitorFactory;
+ private final ContextFactoryBuilderRegistryImpl builderRegistry;
+
/**
* Default constructor that creates a runtime with a NullMonitorFactory
and no builders.
*/
@@ -83,12 +83,18 @@
public RuntimeContextImpl(MonitorFactory monitorFactory,
List<ContextFactoryBuilder> builders, HierarchicalWireBuilder wireBuilder) {
super(RUNTIME);
this.monitorFactory = monitorFactory;
- this.builders = (builders == null) ? new
ArrayList<ContextFactoryBuilder>(1) : builders;
this.wireBuilder = (wireBuilder == null) ? new DefaultWireBuilder() :
wireBuilder;
- rootContext = new CompositeContextImpl(ROOT, this, this, new
RuntimeScopeStrategy(), new EventContextImpl(), this
- );
+ rootContext = new CompositeContextImpl(ROOT, this, this, new
RuntimeScopeStrategy(), new EventContextImpl(), this);
systemContext = new SystemCompositeContextImpl(SYSTEM, this, this, new
SystemScopeStrategy(), new EventContextImpl(), this);
+
+ // bootstrap the builder regsitry
+ builderRegistry = new ContextFactoryBuilderRegistryImpl();
+ if (builders != null) {
+ for (ContextFactoryBuilder builder: builders) {
+ builderRegistry.register(builder);
+ }
+ }
}
/**
@@ -97,20 +103,18 @@
* @param monitorFactory the default [EMAIL PROTECTED]
org.apache.tuscany.common.monitor.MonitorFactory} for this runtime
* @param rootContext the context to use for the root of the user context
tree
* @param systemContext the context to use for the root of the system
context tree
- * @param builders a list of builders automatically made available; may be
null
* @param wireBuilder the top-level hierarchical wire builder for the
runtime; if not specified, a default
*/
public RuntimeContextImpl(MonitorFactory monitorFactory,
CompositeContext rootContext,
SystemCompositeContext systemContext,
- List<ContextFactoryBuilder> builders,
HierarchicalWireBuilder wireBuilder) {
super(RUNTIME);
this.rootContext = rootContext;
this.systemContext = systemContext;
this.monitorFactory = monitorFactory;
- this.builders = (builders == null) ? new
ArrayList<ContextFactoryBuilder>(1) : builders;
this.wireBuilder = (wireBuilder == null) ? new DefaultWireBuilder() :
wireBuilder;
+ builderRegistry = null;
}
public void start() throws CoreRuntimeException {
@@ -118,6 +122,12 @@
return;
}
systemContext.start();
+ try {
+
systemContext.registerJavaObject(ContextFactoryBuilderRegistry.class.getName(),
ContextFactoryBuilderRegistry.class, builderRegistry);
+ } catch (ConfigurationException e) {
+ throw new AssertionError();
+ }
+
rootContext.start();
lifecycleState = RUNNING;
}
@@ -133,7 +143,7 @@
public void addBuilder(ContextFactoryBuilder builder) {
assert (builder != null) : "Builder was null";
- builders.add(builder);
+ builderRegistry.register(builder);
}
public void addBuilder(WireBuilder builder) {
@@ -203,7 +213,7 @@
}
public synchronized void build(AssemblyObject model) throws
BuilderConfigException {
- AssemblyVisitorImpl visitor = new AssemblyVisitorImpl(builders);
+ AssemblyVisitorImpl visitor = new
AssemblyVisitorImpl(builderRegistry.getBuilders());
visitor.start(model);
}