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