Author: jboynes
Date: Wed May 24 21:51:10 2006
New Revision: 409302
URL: http://svn.apache.org/viewvc?rev=409302&view=rev
Log:
add extension base class for ComponentTypeLoader
Added:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
(with props)
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/LoaderRegistryImpl.java
Wed May 24 21:51:10 2006
@@ -71,6 +71,10 @@
componentTypeLoaders.put(key, loader);
}
+ public <I extends Implementation<?>> void unregisterLoader(Class<I>
key) {
+ componentTypeLoaders.remove(key);
+ }
+
@SuppressWarnings("unchecked")
public <I extends Implementation<?>> void loadComponentType(I
implementation, DeploymentContext deploymentContext) {
Class<I> key = (Class<I>) implementation.getClass();
Modified:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/loader/SystemComponentTypeLoader.java
Wed May 24 21:51:10 2006
@@ -18,15 +18,19 @@
import java.net.URL;
-import org.apache.tuscany.spi.loader.ComponentTypeLoader;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.core.system.model.SystemImplementation;
import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.ComponentTypeLoaderExtension;
/**
* @version $Rev$ $Date$
*/
-public class SystemComponentTypeLoader implements
ComponentTypeLoader<SystemImplementation> {
+public class SystemComponentTypeLoader extends
ComponentTypeLoaderExtension<SystemImplementation> {
+ protected Class<SystemImplementation> getTypeClass() {
+ return SystemImplementation.class;
+ }
+
public void load(SystemImplementation implementation,
DeploymentContext deploymentContext) {
Class<?> implClass = implementation.getImplementationClass();
URL resource =
implClass.getResource(JavaIntrospectionHelper.getBaseName(implClass) +
".componentType");
Added:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java?rev=409302&view=auto
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
(added)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
Wed May 24 21:51:10 2006
@@ -0,0 +1,49 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation or its licensors as
applicable
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tuscany.spi.extension;
+
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Destroy;
+
+import org.apache.tuscany.spi.loader.ComponentTypeLoader;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.Implementation;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public abstract class ComponentTypeLoaderExtension<T extends
Implementation> implements ComponentTypeLoader<T> {
+ private LoaderRegistry loaderRegistry;
+
+ @Property
+ public void setLoaderRegistry(LoaderRegistry loaderRegistry) {
+ this.loaderRegistry = loaderRegistry;
+ }
+
+ protected abstract Class<T> getTypeClass();
+
+ @Init
+ public void start() {
+ loaderRegistry.registerLoader(getTypeClass(), this);
+ }
+
+ @Destroy
+ public void stop() {
+ loaderRegistry.unregisterLoader(getTypeClass());
+ }
+}
Propchange:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentTypeLoaderExtension.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Modified:
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java?rev=409302&r1=409301&r2=409302&view=diff
==============================================================================
---
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java
(original)
+++
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/loader/LoaderRegistry.java
Wed May 24 21:51:10 2006
@@ -20,9 +20,9 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.model.Implementation;
import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
/**
* Registry for XML loaders that can parse a StAX input stream and return
model objects.
@@ -64,14 +64,16 @@
* When this method returns, the stream will be positioned on the
corresponding
* END_ELEMENT event.
*
- * @param reader the XML stream to parse
- * @param deploymentContext
+ * @param reader the XML stream to parse
+ * @param deploymentContext the current deployment context
* @return the model object obtained by parsing the current element on
the stream
* @throws XMLStreamException if there was a problem reading the
stream
*/
ModelObject load(XMLStreamReader reader, DeploymentContext
deploymentContext) throws XMLStreamException, LoaderException;
<I extends Implementation<?>> void registerLoader(Class<I> key,
ComponentTypeLoader<I> loader);
+
+ <I extends Implementation<?>> void unregisterLoader(Class<I> key);
<I extends Implementation<?>> void loadComponentType(I implementation,
DeploymentContext deploymentContext);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]