Package org.jboss.dependency.spi

Examples of org.jboss.dependency.spi.Controller


            ControllerState when = whenRequiredState;
            if (when == null)
               when = visitor.getContextState();

            KernelControllerContext kcc = visitor.getControllerContext();
            Controller controller = kcc.getController();
            List<ControllerState> states = controller.getStates();
            int whenIndex = states.indexOf(when);

            if (dependentState == null)
            {
               dependentState = states.get(whenIndex - 1);
View Full Code Here


   {
   }
  
   public Object getValue(TypeInfo info, ClassLoader cl) throws Throwable
   {
      Controller controller = context.getController();
      ControllerContext context = controller.getContext(getUnderlyingValue(), ControllerState.INSTANTIATED);
      if (context == null)
         throw new Error("Could not deference this " + this);
      // TODO - add progression, see BeanMetaData, InjectionMetaData
      return context.getTarget();
   }
View Full Code Here

    */
   protected boolean incrementState(ControllerContext context, boolean trace)
   {
      ControllerState fromState = context.getState();

      Controller fromController = context.getController();
      Set<ControllerContext> fromContexts = null;

      int currentIndex = -1;
      if (ControllerState.ERROR.equals(fromState))
      {
         errorContexts.remove(context);
         Throwable error = null;
         unlockWrite();
         try
         {
            install(context, ControllerState.ERROR, ControllerState.NOT_INSTALLED);
         }
         catch (Throwable t)
         {
            error = t;
         }
         finally
         {
            lockWrite();
            if (error != null)
            {
               log.error("Error during initial installation: " + context.toShortString(), error);
               context.setError(error);
               errorContexts.put(context.getName(), context);
               return false;
            }
         }
         Set<ControllerContext> notInstalled = fromController.getContextsByState(ControllerState.NOT_INSTALLED);
         notInstalled.add(context);
         context.setState(ControllerState.NOT_INSTALLED);
      }
      else
      {
         currentIndex = states.indexOf(fromState);
         fromContexts = fromController.getContextsByState(fromState);
         if (fromContexts.contains(context) == false)
            throw new IllegalStateException("Context not found in previous state: " + context.toShortString());
      }

      int toIndex = currentIndex + 1;
      ControllerState toState = states.get(toIndex);

      unlockWrite();
      Throwable error = null;
      try
      {
         install(context, fromState, toState);

         if (fromContexts != null)
            fromContexts.remove(context);
         Controller toController = context.getController();
         Set<ControllerContext> toContexts = toController.getContextsByState(toState);
         toContexts.add(context);
         context.setState(toState);

         handleInstallLifecycleCallbacks(context, toState);
         resolveCallbacks(context, toState, true);
View Full Code Here

      int currentIndex = states.indexOf(fromState);

      if (trace)
         log.trace("Uninstalling " + name + " from " + fromState.getStateString());

      Controller fromController = context.getController();

      Set<ControllerContext> fromContexts = fromController.getContextsByState(fromState);
      if (fromContexts == null || fromContexts.remove(context) == false)
         throw new Error("INTERNAL ERROR: context not found in previous state " + fromState.getStateString() + " context=" + context.toShortString(), new Exception("STACKTRACE"));

      DependencyInfo dependencies = context.getDependencyInfo();
      Set<DependencyItem> dependsOnMe = dependencies.getDependsOnMe(null);
      if (dependsOnMe.isEmpty() == false)
      {
         for (DependencyItem item : dependsOnMe)
         {
            if (item.isResolved())
            {
               ControllerState dependentState = item.getDependentState();
               if (dependentState == null || dependentState.equals(fromState))
               {
                  if (item.unresolved(this))
                  {
                     ControllerContext dependent = getContext(item.getName(), null);
                     if (dependent != null)
                     {
                        ControllerState whenRequired = item.getWhenRequired();
                        if (whenRequired == null)
                           whenRequired = ControllerState.NOT_INSTALLED;
                        int proposed = states.indexOf(whenRequired);
                        int actual = states.indexOf(dependent.getState());
                        if (proposed <= actual)
                           uninstallContext(dependent, whenRequired, trace);
                     }
                  }
               }
            }
         }
      }

      // The state could have changed while calling out to dependents
      fromState = context.getState();
      if (ControllerState.ERROR.equals(fromState))
         return;
     
      // Calculate the previous state
      currentIndex = states.indexOf(fromState);
      int toIndex = currentIndex - 1;
      if (toIndex < 0)
      {
         // This is hack, we signal true uninstalled status by putting it in the error state
         context.setState(ControllerState.ERROR);
         return;
      }

      ControllerState toState = states.get(toIndex);

      unlockWrite();
      try
      {
         resolveCallbacks(context, fromState, false);
         handleUninstallLifecycleCallbacks(context, toState);

         uninstall(context, fromState, toState);

         Controller toController = context.getController();
         Set<ControllerContext> toContexts = toController.getContextsByState(toState);
         toContexts.add(context);
         context.setState(toState);
      }
      catch (Throwable t)
      {
View Full Code Here

   public DelegateLoader createLazyDelegateLoader(Domain domain, RequirementDependencyItem item)
   {
      ControllerContext context = getControllerContext();
      if (context == null)
         throw new IllegalStateException("No controller context");
      Controller controller = context.getController();
        
      DynamicClassLoaderPolicyFactory factory = new DynamicClassLoaderPolicyFactory(controller, domain, item);
      return new LazyFilteredDelegateLoader(factory);
   }
View Full Code Here

    */
   protected boolean incrementState(ControllerContext context, boolean trace)
   {
      ControllerState fromState = context.getState();

      Controller fromController = context.getController();
      Set<ControllerContext> fromContexts;

      ControllerState toState;
      if (ControllerState.ERROR.equals(fromState))
      {
         ControllerState initialState = stateModel.getInitialState();
         errorContexts.remove(context);
         Throwable error = null;
         unlockWrite();
         try
         {
            install(context, ControllerState.ERROR, initialState);
         }
         catch (Throwable t)
         {
            error = t;
         }
         finally
         {
            lockWrite();
            if (error != null)
            {
               log.error("Error during initial installation: " + context.toShortString(), error);
               context.setError(error);
               errorContexts.put(context.getName(), context);
               return false;
            }
         }
         Set<ControllerContext> notInstalled = fromController.getContextsByState(initialState);
         notInstalled.add(context);
         context.setState(initialState);
         return true;
      }
      else
      {
         fromContexts = fromController.getContextsByState(fromState);
         if (fromContexts.contains(context) == false)
            throw new IllegalStateException("Context not found in previous state (" + fromState + "): " + context.toShortString());
         toState = stateModel.getNextState(fromState);
         if (toState == null)
            throw new IllegalStateException("No state after " + fromState);
      }

      unlockWrite();
      Throwable error = null;
      try
      {
         install(context, fromState, toState);

         if (fromContexts != null)
            fromContexts.remove(context);
         Controller toController = context.getController();
         Set<ControllerContext> toContexts = toController.getContextsByState(toState);
         toContexts.add(context);
         context.setState(toState);

         handleInstallLifecycleCallbacks(context, toState);
         resolveCallbacks(context, toState, true);
View Full Code Here

      ControllerState fromState = context.getState();

      if (trace)
         log.trace("Uninstalling " + name + " from " + fromState.getStateString());

      Controller fromController = context.getController();

      Set<ControllerContext> fromContexts = fromController.getContextsByState(fromState);
      if (fromContexts == null || fromContexts.remove(context) == false)
         throw new Error("INTERNAL ERROR: context not found in previous state " + fromState.getStateString() + " context=" + context.toShortString(), new Exception("STACKTRACE"));

      DependencyInfo dependencies = context.getDependencyInfo();
      if (dependencies != null)
      {
         try
         {
            Set<DependencyItem> dependsOnMe = dependencies.getDependsOnMe(null);
            if (dependsOnMe.isEmpty() == false)
            {
               for (DependencyItem item : dependsOnMe)
               {
                  if (item.isResolved())
                  {
                     ControllerState dependentState = item.getDependentState();
                     if (dependentState == null || dependentState.equals(fromState))
                     {
                        if (item.unresolved(this))
                        {
                           Set<ControllerContext> dependents = CollectionsFactory.createLazySet();
                           getContexts(item.getName(), dependents);
                           if (dependents.isEmpty() == false)
                           {
                              ControllerState whenRequired = item.getWhenRequired();
                              if (whenRequired == null)
                                 whenRequired = stateModel.getInitialState();

                              for (ControllerContext dependent : dependents)
                              {
                                 boolean selfDependency = (dependent == context);
                                 if (!selfDependency)
                                 {
                                    contextsInstalledByExecutor.interruptTaskAndBlock(dependent, this);
                                    if (stateModel.isBeforeState(dependent.getState(), whenRequired) == false)
                                    { 
                                       uninstallContext(dependent, whenRequired, trace);
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
         catch (Throwable error)
         {
            log.error("Error resolving dependencies for " + fromState.getStateString() + ": " + context.toShortString(), error);
            // Not much else we can do - no uninstall, since we are at uninstall ;-)
            errorContexts.put(context.getName(), context);
            context.setError(error);
         }
      }

      // The state could have changed while calling out to dependents
      fromState = context.getState();
      if (ControllerState.ERROR.equals(fromState))
         return;
     
      ControllerState toState = stateModel.getPreviousState(fromState);
      if (toState == null)
      {
         // This is hack, we signal true uninstalled status by putting it in the error state
         context.setState(ControllerState.ERROR);
         return;
      }

      unlockWrite();
      try
      {
         resolveCallbacks(context, fromState, false);
         handleUninstallLifecycleCallbacks(context, toState);

         uninstall(context, fromState, toState);

         Controller toController = context.getController();
         Set<ControllerContext> toContexts = toController.getContextsByState(toState);
         toContexts.add(context);
         context.setState(toState);

         uninstallUnusedOnDemandContexts(context, trace);
      }
View Full Code Here

    * @return the context
    */
   protected ControllerContext getControllerContext(ObjectName name)
   {
      Kernel kernel = controller.getKernel();
      Controller controller = kernel.getController();
      String canonicalName = name.getCanonicalName(); // too impl detail?
      return controller.getContext(canonicalName, null);
   }
View Full Code Here

      if (contextName.equals(context.getName()) == false)
      {
         Set<Object> aliases = context.getAliases();
         if (aliases == null || (aliases.contains(contextName) == false))
         {
            Controller controller = context.getController();
            if (addAlias)
            {
               try
               {
                  controller.addAlias(contextName, context.getName());
               }
               catch (Throwable t)
               {
                  throw new RuntimeException("Error adding deployment alias " + contextName + " to " + context, t);
               }
            }
            else
            {
               controller.removeAlias(contextName);
            }
         }
      }
     
      return contextName;
View Full Code Here

   public DelegateLoader createLazyDelegateLoader(Domain domain, RequirementDependencyItem item)
   {
      ControllerContext context = getControllerContext();
      if (context == null)
         throw new IllegalStateException("No controller context");
      Controller controller = context.getController();
        
      DynamicClassLoaderPolicyFactory factory = new DynamicClassLoaderPolicyFactory(controller, domain, item);
      return new LazyFilteredDelegateLoader(factory);
   }
View Full Code Here

TOP

Related Classes of org.jboss.dependency.spi.Controller

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.