Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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 static org.apache.tuscany.sca.extensibility.ServiceHelper.newInstance;
 
 import java.util.List;
 import java.util.Map;
 
Default implementation of an extension point to hold Tuscany module activators.

Version:
$Rev: 912089 $ $Date: 2010-02-20 08:38:32 +0000 (Sat, 20 Feb 2010) $
 
     private final static Logger logger = Logger.getLogger(DefaultModuleActivatorExtensionPoint.class.getName());
     private List<ModuleActivatoractivators = new ArrayList<ModuleActivator>();
     private boolean loadedActivators;
     private boolean started;
     private ExtensionPointRegistry registry;

    
Constructs a new extension point.
 
         this. = registry;
     }
 
     public void addModuleActivator(ModuleActivator activator) {
         .add(activator);
     }
 
     public List<ModuleActivatorgetModuleActivators() {
         loadModuleActivators();
         return ;
     }
 
     public void removeModuleActivator(ModuleActivator activator) {
         if (.remove(activator)) {
             activator.stop();
         }
     }

    
Dynamically load module activators declared under META-INF/services
 
     private synchronized void loadModuleActivators() {
         if ()
             return;
 
         // Get the activator service declarations
         Collection<ServiceDeclarationactivatorDeclarations;
         try {
             // Load the module activators by ranking
             activatorDeclarations = .getServiceDiscovery().getServiceDeclarations(ModuleActivator.class.getName(), true);
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
 
         // Load and instantiate module activators
         for (ServiceDeclaration activatorDeclaration : activatorDeclarations) {
             if (.isLoggable(.)) {
                 .fine("Loading " + activatorDeclaration.getClassName());
             }
             ModuleActivator activator = null;
             try {
                 Class<ModuleActivatoractivatorClass = (Class<ModuleActivator>)activatorDeclaration.loadClass();
                 try {
                     activator = newInstance(activatorClassExtensionPointRegistry.class);
                 } catch (NoSuchMethodException e) {
                     try {
                         activator =
                             newInstance(activatorClass,
                                         new Class<?>[] {ExtensionPointRegistry.classMap.class},
                                         ,
                                        activatorDeclaration.getAttributes());
                    } catch (NoSuchMethodException e1) {
                        activator = newInstance(activatorClass);
                    }
                }
            } catch (Throwable e) {
                String optional = activatorDeclaration.getAttributes().get("optional");
                if ("true".equalsIgnoreCase(optional)) {
                    // If the optional flag is true, just log the error
                    .log(.e.getMessage(), e);
                    continue;
                } else {
                    throw new IllegalArgumentException(e);
                }
            }
            addModuleActivator(activator);
        }
         = true;
    }
    public void start() {
        if () {
            return;
        }
        getModuleActivators();
        for (ModuleActivator activator : ) {
            try {
                activator.start();
            } catch (Throwable e) {
                // Ignore the failing module for now
                .log(.e.getMessage(), e);
            }
        }
         = true;
    }
    public void stop() {
        if (!) {
            return;
        }
        for (int i = .size() - 1; i >= 0; i--) {
            try {
                .get(i).stop();
            } catch (Throwable e) {
                // Ignore the failing module for now
                .log(.e.getMessage(), e);
            }
        }
         = false;
    }
New to GrepCode? Check out our FAQ X