You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/04/23 04:02:55 UTC
svn commit: r650725 - in
/incubator/tuscany/java/sca/modules/extensibility/src/main:
java/org/apache/tuscany/sca/core/ resources/META-INF/
resources/META-INF/services/
Author: jsdelfino
Date: Tue Apr 22 19:02:51 2008
New Revision: 650725
URL: http://svn.apache.org/viewvc?rev=650725&view=rev
Log:
Moved ExtensionPointRegistry from module core to module extensibility. Added extension points for module activators and utility services to make it easier to bootstrap a subset of Tuscany, get the list of available module activators, or get an instance of a utility like a monitor factory or interfacecontractapper for example.
Added:
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/
- copied from r649834, incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
- copied, changed from r650671, incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java (with props)
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java (with props)
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ExtensionPointRegistry.java
- copied unchanged from r650671, incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/ExtensionPointRegistry.java
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivator.java
- copied unchanged from r650671, incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/ModuleActivator.java
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java (with props)
incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java (with props)
incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/
incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/
incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint
incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.UtilityServiceExtensionPoint
Copied: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java (from r650671, incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java?p2=incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java&p1=incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java&r1=650671&r2=650725&rev=650725&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java Tue Apr 22 19:02:51 2008
@@ -28,7 +28,6 @@
import java.util.Map;
import java.util.Set;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
/**
@@ -41,6 +40,12 @@
*/
public class DefaultExtensionPointRegistry implements ExtensionPointRegistry {
private Map<Class<?>, Object> extensionPoints = new HashMap<Class<?>, Object>();
+
+ /**
+ * Constructs a new registry.
+ */
+ public DefaultExtensionPointRegistry() {
+ }
/**
* Add an extension point to the registry. This default implementation
@@ -103,22 +108,16 @@
if (extensionPointClass != null) {
// Construct the extension point
Constructor<?>[] constructors = extensionPointClass.getConstructors();
- Constructor constructor =
- getConstructor(constructors, new Class<?>[] {ModelFactoryExtensionPoint.class});
+ Constructor<?> constructor = getConstructor(constructors, new Class<?>[] {ExtensionPointRegistry.class});
if (constructor != null) {
- extensionPoint = constructor.newInstance(getExtensionPoint(ModelFactoryExtensionPoint.class));
+ extensionPoint = constructor.newInstance(this);
} else {
- constructor = getConstructor(constructors, new Class<?>[] {ExtensionPointRegistry.class});
+ constructor = getConstructor(constructors, new Class<?>[] {});
if (constructor != null) {
- extensionPoint = constructor.newInstance(this);
+ extensionPoint = constructor.newInstance();
} else {
- constructor = getConstructor(constructors, new Class<?>[] {});
- if (constructor != null) {
- extensionPoint = constructor.newInstance();
- } else {
- throw new IllegalArgumentException(
- "No valid constructor is found for " + extensionPointClass);
- }
+ throw new IllegalArgumentException(
+ "No valid constructor is found for " + extensionPointClass);
}
}
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java Tue Apr 22 19:02:51 2008
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.sca.core;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
+
+/**
+ * Default implementation of an extension point to hold Tuscany module activators.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultModuleActivatorExtensionPoint implements ModuleActivatorExtensionPoint {
+ private List<ModuleActivator> activators = new ArrayList<ModuleActivator>();
+ private boolean loadedActivators;
+
+ /**
+ * Constructs a new extension point.
+ */
+ public DefaultModuleActivatorExtensionPoint() {
+ }
+
+ public void addModuleActivator(ModuleActivator activator) {
+ activators.add(activator);
+ }
+
+ public List<ModuleActivator> getModuleActivators() {
+ loadModuleActivators();
+ return activators;
+ }
+
+ public void removeModuleActivator(Object activator) {
+ activators.remove(activator);
+ }
+
+ /**
+ * Dynamically load module activators declared under META-INF/services
+ */
+ private void loadModuleActivators() {
+ if (loadedActivators)
+ return;
+
+ // Get the activator service declarations
+ Set<ServiceDeclaration> activatorDeclarations;
+ try {
+ activatorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ModuleActivator.class);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+
+ // Load and instantiate module activators
+ for (ServiceDeclaration activatorDeclaration: activatorDeclarations) {
+ ModuleActivator activator;
+ try {
+ Class<ModuleActivator> activatorClass = (Class<ModuleActivator>)activatorDeclaration.loadClass();
+ activator = activatorClass.newInstance();
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException(e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException(e);
+ }
+ addModuleActivator(activator);
+ }
+
+ loadedActivators = true;
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java Tue Apr 22 19:02:51 2008
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.sca.core;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
+
+/**
+ * Default implementation of an extension point to hold Tuscany utility services.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultUtilityServiceExtensionPoint implements UtilityServiceExtensionPoint {
+ private Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
+
+ private ExtensionPointRegistry extensionPoints;
+
+ /**
+ * Constructs a new extension point.
+ */
+ public DefaultUtilityServiceExtensionPoint(ExtensionPointRegistry extensionPoints) {
+ this.extensionPoints = extensionPoints;
+ }
+
+ /**
+ * Add a service to the extension point. This default implementation
+ * stores services against the interfaces that they implement.
+ *
+ * @param service The instance of the service
+ *
+ * @throws IllegalArgumentException if service is null
+ */
+ public void addService(Object service) {
+ if (service == null) {
+ throw new IllegalArgumentException("Cannot register null as a Service");
+ }
+
+ Set<Class> interfaces = getAllInterfaces(service.getClass());
+ for (Class i : interfaces) {
+ services.put(i, service);
+ }
+ }
+
+ private Constructor<?> getConstructor(Constructor<?>[] constructors, Class<?>[] paramTypes) {
+ for (Constructor<?> c : constructors) {
+ Class<?> types[] = c.getParameterTypes();
+ if (c.getParameterTypes().length == paramTypes.length) {
+ boolean found = true;
+ for (int i = 0; i < types.length; i++) {
+ if (types[i] != paramTypes[i]) {
+ found = false;
+ break;
+ }
+ }
+ if (found) {
+ return c;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get the service by the interface that it implements
+ *
+ * @param serviceType The lookup key (service interface)
+ * @return The instance of the service
+ *
+ * @throws IllegalArgumentException if serviceType is null
+ */
+ public <T> T getService(Class<T> serviceType) {
+ if (serviceType == null) {
+ throw new IllegalArgumentException("Cannot lookup Service of type null");
+ }
+
+ Object service = services.get(serviceType);
+ if (service == null) {
+
+ // Dynamically load a service class declared under META-INF/services
+ try {
+ Class<?> serviceClass =
+ ServiceDiscovery.getInstance().loadFirstServiceClass(serviceType);
+ if (serviceClass != null) {
+ // Construct the service
+ Constructor<?>[] constructors = serviceClass.getConstructors();
+ Constructor<?> constructor = getConstructor(constructors, new Class<?>[] {ExtensionPointRegistry.class});
+ if (constructor != null) {
+ service = constructor.newInstance(extensionPoints);
+ } else {
+ constructor = getConstructor(constructors, new Class<?>[] {});
+ if (constructor != null) {
+ service = constructor.newInstance();
+ } else {
+ throw new IllegalArgumentException(
+ "No valid constructor is found for " + serviceClass);
+ }
+ }
+
+ // Cache the loaded service
+ addService(service);
+ }
+ } catch (InvocationTargetException e) {
+ throw new IllegalArgumentException(e);
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException(e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+ return serviceType.cast(service);
+ }
+
+ /**
+ * Remove a service based on the interface that it implements
+ *
+ * @param service The service to remove
+ *
+ * @throws IllegalArgumentException if service is null
+ */
+ public void removeService(Object service) {
+ if (service == null) {
+ throw new IllegalArgumentException("Cannot remove null as a Service");
+ }
+
+ Set<Class> interfaces = getAllInterfaces(service.getClass());
+ for (Class i : interfaces) {
+ services.remove(i);
+ }
+ }
+
+ /**
+ * Returns the set of interfaces implemented by the given class and its
+ * ancestors or a blank set if none
+ */
+ private static Set<Class> getAllInterfaces(Class clazz) {
+ Set<Class> implemented = new HashSet<Class>();
+ getAllInterfaces(clazz, implemented);
+ return implemented;
+ }
+
+ private static void getAllInterfaces(Class clazz, Set<Class> implemented) {
+ Class[] interfaces = clazz.getInterfaces();
+ for (Class interfaze : interfaces) {
+ if (Modifier.isPublic(interfaze.getModifiers())) {
+ implemented.add(interfaze);
+ }
+ }
+ Class<?> superClass = clazz.getSuperclass();
+ // Object has no superclass so check for null
+ if (superClass != null && !superClass.equals(Object.class)) {
+ getAllInterfaces(superClass, implemented);
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultUtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java Tue Apr 22 19:02:51 2008
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.sca.core;
+
+import java.util.List;
+
+
+/**
+ * The extension point for the Tuscany module activator extensions.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ModuleActivatorExtensionPoint {
+
+ /**
+ * Add a module activator extension to the extension point
+ * @param activator The instance of the module activator
+ *
+ * @throws IllegalArgumentException if activator is null
+ */
+ void addModuleActivator(ModuleActivator activator);
+
+ /**
+ * Returns the module activator extensions.
+ * @return The module activator extensions
+ */
+ List<ModuleActivator> getModuleActivators();
+
+ /**
+ * Remove a module activator
+ * @param service The module activator to remove
+ *
+ * @throws IllegalArgumentException if activator is null
+ */
+ void removeModuleActivator(Object activator);
+}
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ModuleActivatorExtensionPoint.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java Tue Apr 22 19:02:51 2008
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.sca.core;
+
+
+/**
+ * The extension point for the Tuscany core utility service extensions.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface UtilityServiceExtensionPoint {
+
+ /**
+ * Add a service to the registry
+ * @param service The instance of the service
+ *
+ * @throws IllegalArgumentException if service is null
+ */
+ void addService(Object service);
+
+ /**
+ * Get the service by the interface
+ * @param serviceType The lookup key (service interface)
+ * @return The instance of the service
+ *
+ * @throws IllegalArgumentException if serviceType is null
+ */
+ <T> T getService(Class<T> serviceType);
+
+ /**
+ * Remove a service
+ * @param service The service to remove
+ *
+ * @throws IllegalArgumentException if service is null
+ */
+ void removeService(Object service);
+}
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/tuscany/java/sca/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/UtilityServiceExtensionPoint.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint Tue Apr 22 19:02:51 2008
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+org.apache.tuscany.sca.core.DefaultModuleActivatorExtensionPoint
Added: incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.UtilityServiceExtensionPoint
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.UtilityServiceExtensionPoint?rev=650725&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.UtilityServiceExtensionPoint (added)
+++ incubator/tuscany/java/sca/modules/extensibility/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.UtilityServiceExtensionPoint Tue Apr 22 19:02:51 2008
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+org.apache.tuscany.sca.core.DefaultUtilityServiceExtensionPoint