User development,

A new message was posted in the thread "Circular Dependencies and Semi-Resolve":

http://community.jboss.org/message/530202#530202

Author  : Adrian Brock
Profile : http://community.jboss.org/people/[email protected]

Message:
--------------------------------------------------------------
https://jira.jboss.org/jira/browse/JBKERNEL-109
 
I've committed a prototype for circular dependencies.
This involved three main changes:
 
1) The ability to "semiResolve" a dependency which means that you know what you 
want to depend on,
but it is not in the correct state yet. However, if the only thing that is 
stopping it moving to the correct
state is a circular dependency (i.e. other things in the semi-resolved state) 
then it will upgraded to fully resolved.
 
2) Change AbstractDependencyItem to use an enum for the three different types 
of resolved states,
resolved, semi-resolved and unresolved and track the different types in 
AbstractDependencyInfo for optimized processing of the
different types.
 
3) A change in AbstractController to introduce an "uninstalling" set like the 
"installing" set, to avoid recursive
when uninstalling contexts that have circular dependencies.
 
Caveats:
 
* I haven't looked at adding ON_DEMAND processing, although it should be simple 
to add?
 
* The semi-resolved handling only looks at contexts in the previous state to 
what you require.
If they are in any earlier state then they are unresovled until they progress 
to the previous state.
This avoids having to do a complicated determination on whether there is a path 
to break the circular dependency,
rather than just advancing all the related semi-resolved contexts to the next 
state.

Its usage should be trivial:
 
public MyDependencyItem extends AbstractDependencyItem
{
    public boolean resolve(Controller)
    {
         // Determine the context we want to be semi-resolved on
         ControllerContext ctx = ...;
         if (ctx == null)
            return false;
 
         // Pass the handling to AbstractDependencyItem
         return semiResolve(ctx);
    }
}

--------------------------------------------------------------

To reply to this message visit the message page: 
http://community.jboss.org/message/530202#530202


_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to