1 Reply Latest reply on Dec 9, 2008 10:29 AM by Ales Justin

    JBAS-6297, mbean service optional injection

    Scott Stark Master

      I'm not understanding the current mc optional dependency implementation. I expected that I could simply leverage an optional notion from AbstractDependencyItem to update the ServiceInjectionValueMetaData.visit method to create an optional dependency like:

       public void visit(ServiceMetaDataVisitor visitor)
       ServiceControllerContext context = visitor.getControllerContext();
       Object name = context.getName();
       ControllerState whenRequired = visitor.getContextState();
       boolean optional = isOptional();
       DependencyItem item = new AbstractDependencyItem(name, dependency, whenRequired, dependentState, optional);

      But optionality does not exist in AbstractDependencyItem. It only exists in a protected OptionalDependencyItem which is an inner class of the AbstractDependencyValueMetaData class. Why isn't this a general DependencyItem notion?

      I guess I'll look at updating the ServiceInjectionValueMetaData.getValue to return null and see what additional changes are needed to deal with that.

        • 1. Re: JBAS-6297, mbean service optional injection
          Ales Justin Master

          OptionalDependencyItem is only there to wire together beans that actually existed - to be properly unwinded on undeploy.

          But I guess similar dependency item could be added from the beginning.
          You would only need to override unresolved() method,
          to only return true when the dependent bean exists.

          I just didn't introduce it, as it would always return true on isResolved() call.
          Where we actually only need it when dependency exists.