You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

How to extend Tuscany Java SCA?

The ExtensionPointRegistry

package org.apache.tuscany.core;

/**
 * The registry for the Tuscany core extension points.
 *
 * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
 */
public interface ExtensionPointRegistry {

    /**
     * Add an extension point to the registry
     * @param <T>
     * @param extensionPointType The interface of the extension point
     * @param extensionPoint The instance of the extension point
     */
    <T> void addExtensionPoint(Class<T> extensionPointType, T extensionPoint);

    /**
     * Get the extension point by the interface
     * @param <T>
     * @param extensionPointType
     * @return
     */
    <T> T getExtensionPoint(Class<T> extensionPointType);

    /**
     * Remove an extension point
     * @param extensionPoint
     */
    void removeExtensionPoint(Class extensionPoint);
}

The ModuleActivator

package org.apache.tuscany.core;

import java.util.Map;

/**
 * ModuleActivator represents a module that plugs into the Tuscany system. Each module should
 * provide an implementation of this interface and registry the implementation class by defining 
 * a file named as "META-INF/services/org.apache.tuscany.spi.bootstrp.ModuleActivator". The
 * content of the file is the class name of the implementation. The implementation class must
 * have a no-arg constructor. The same instance will be used to invoke all the methods during
 * different phases of the module activation.
 * 
 * @version $Rev: 529327 $ $Date: 2007-04-16 10:10:43 -0700 (Mon, 16 Apr 2007) $
 */
public interface ModuleActivator {
    /**
     * Get a map of the extension points defined by this module. The key is the
     * java interface to represent the extension point and the the value is the
     * instance of the implementation of the interface.
     * 
     * @return All the extension points defined by this module
     */
    Map<Class, Object> getExtensionPoints();

    /**
     * This method is invoked when the module is started by the Tuscany system.
     * It can be used by this module to registr extensions against extension
     * points.
     * 
     * @param registry The extension point registry
     */
    void start(ExtensionPointRegistry registry);

    /**
     * This method is invoked when the module is stopped by the Tuscany system.
     * It can be used by this module to unregister extensions against the
     * extension points.
     * 
     * @param registry The extension point registry
     */
    void stop(ExtensionPointRegistry registry);
}
  • No labels