Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2006, Red Hat Middleware LLC, and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.osgi.deployer;
 
 // $Id: $
 
 import java.util.List;
 
This is the Bundle start/stop Deployer

Author(s):
Ales.Justin@jboss.org
Thomas.Diesler@jboss.com
Since:
27-Feb-2009
 
 {
    private BundleContext systemContext;
    private PackageAdmin packageAdmin;
 
    // The list of unresolved bundles
    private List<BundleunresolvedBundles = new ArrayList<Bundle>();
 
    public BundleStartStopDeployer()
    {
       super(Bundle.class);
       addInput(Deployment.class);
    }
 
    public void setSystemContext(BundleContext systemContext)
    {
       this. = systemContext;
    }
 
    public void deploy(DeploymentUnit unitBundle bundlethrows DeploymentException
    {
       Deployment dep = unit.getAttachment(Deployment.class);
       boolean autoStart = (dep != null ? dep.isAutoStart() : true);
       
       if (autoStart == true)
       {
          String propDeferredStart = .getProperty(.);
          if (Boolean.parseBoolean(propDeferredStart != null ? propDeferredStart : "true") == true)
          {
             deferredStart(unitbundle);
          }
          else
          {
             simpleStart(unitbundle);
          }
       }
    }
 
    @Override
    public void undeploy(DeploymentUnit unitBundle bundle)
    {
       try
       {
          bundle.stop();
          
          .remove(bundle);
 
          .info("Stoped: " + bundle);
       }
       catch (BundleException e)
       {
         .warn("Cannot stop bundle: " + e);
      }
   }
   private void simpleStart(DeploymentUnit unitBundle bundlethrows DeploymentException
   {
      ExportedPackageHelper packageHelper = new ExportedPackageHelper();
      try
      {
         // Added support for Bundle.START_ACTIVATION_POLICY on start
         // http://issues.apache.org/jira/browse/FELIX-1317
         // bundle.start(Bundle.START_ACTIVATION_POLICY);
         
         bundle.start();
         
         .info("Started: " + bundle);
         packageHelper.logExportedPackages(bundle);
      }
      catch (BundleException e)
      {
         .warn("Cannot start bundle"e);
      }
   }
   private void deferredStart(DeploymentUnit unitBundle bundlethrows DeploymentException
   {
      ExportedPackageHelper packageHelper = new ExportedPackageHelper();
      
      // Get the required dependency on the PackageAdmin service
      if ( == null)
      {
         if ( == null)
            throw new IllegalStateException("Cannot obtain PackageAdmin service");
      }
      // Always add the bundle as unresolved
      .add(bundle);
      Bundle[] bundleArr = new Bundle[.size()];
      .toArray(bundleArr);
      // Try to resolve the bundles
      .resolveBundles(bundleArr);
      // Find resolved bundles and start them
      while (it.hasNext())
      {
         Bundle auxBundle = it.next();
         if ((. & auxBundle.getState()) == .)
         {
            it.remove();
            try
            {
               // Added support for Bundle.START_ACTIVATION_POLICY on start
               // http://issues.apache.org/jira/browse/FELIX-1317
               // auxBundle.start(Bundle.START_ACTIVATION_POLICY);
               
               auxBundle.start();
               
               packageHelper.logExportedPackages(bundle);
               .info("Started: " + bundle);
            }
            catch (BundleException e)
            {
               .warn("Cannot start bundle"e);
            }
         }
      }
      // Report unresolved bundles
      if (.size() > 0)
         .info("Unresolved: " + );
   }
New to GrepCode? Check out our FAQ X