Add static utility methods on container to add and remove beans.
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
This commit is contained in:
parent
57779c6026
commit
a86a0c2662
|
@ -152,6 +152,46 @@ public interface Container
|
|||
return Collections.unmodifiableList(new ArrayList<>(getBeans(EventListener.class)));
|
||||
}
|
||||
|
||||
/**
|
||||
* A utility method to add a bean to a container.
|
||||
* @param parent the parent container.
|
||||
* @param child the child bean.
|
||||
* @return true if the child was added as a bean, false if parent was not instance of {@link Container} or bean was already present.
|
||||
*/
|
||||
static boolean addBean(Object parent, Object child)
|
||||
{
|
||||
if (parent instanceof Container)
|
||||
return ((Container)parent).addBean(child);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* A utility method to add a bean to a container.
|
||||
* @param parent the parent container.
|
||||
* @param child the child bean.
|
||||
* @param managed whether to managed the lifecycle of the bean.
|
||||
* @return true if the child was added as a bean, false if parent was not instance of {@link Container} or bean was already present.
|
||||
*/
|
||||
static boolean addBean(Object parent, Object child, boolean managed)
|
||||
{
|
||||
if (parent instanceof Container)
|
||||
return ((Container)parent).addBean(child, managed);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* A utility method to remove a bean from a container.
|
||||
* @param parent the parent container.
|
||||
* @param child the child bean.
|
||||
* @return true if parent was an instance of {@link Container} and the bean was removed.
|
||||
*/
|
||||
static boolean removeBean(Object parent, Object child)
|
||||
{
|
||||
if (parent instanceof Container)
|
||||
return ((Container)parent).removeBean(child);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* A listener for Container events.
|
||||
* If an added bean implements this interface it will receive the events
|
||||
|
|
|
@ -474,9 +474,9 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
|||
if (listener instanceof InheritedListener && b.isManaged() && b._bean instanceof Container)
|
||||
{
|
||||
if (b._bean instanceof ContainerLifeCycle)
|
||||
((ContainerLifeCycle)b._bean).addBean(listener, false);
|
||||
Container.addBean(b._bean, listener, false);
|
||||
else
|
||||
((Container)b._bean).addBean(listener);
|
||||
Container.addBean(b._bean, listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -499,8 +499,8 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
|||
{
|
||||
cl.beanRemoved(this, b._bean);
|
||||
|
||||
if (listener instanceof InheritedListener && b.isManaged() && b._bean instanceof Container)
|
||||
((Container)b._bean).removeBean(listener);
|
||||
if (listener instanceof InheritedListener && b.isManaged())
|
||||
Container.removeBean(b._bean, listener);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -541,9 +541,9 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
|||
if (l instanceof InheritedListener)
|
||||
{
|
||||
if (bean._bean instanceof ContainerLifeCycle)
|
||||
((ContainerLifeCycle)bean._bean).addBean(l, false);
|
||||
Container.addBean(bean._bean, l, false);
|
||||
else
|
||||
((Container)bean._bean).addBean(l);
|
||||
Container.addBean(bean._bean, l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -579,7 +579,7 @@ public class ContainerLifeCycle extends AbstractLifeCycle implements Container,
|
|||
for (Container.Listener l : _listeners)
|
||||
{
|
||||
if (l instanceof InheritedListener)
|
||||
((Container)bean._bean).removeBean(l);
|
||||
Container.removeBean(bean._bean, l);
|
||||
}
|
||||
}
|
||||
bean._managed = Managed.UNMANAGED;
|
||||
|
|
Loading…
Reference in New Issue