|
PicoContainer example source code file (AbstractBehavior.java)
The PicoContainer AbstractBehavior.java source code
/*****************************************************************************
* Copyright (C) PicoContainer Organization. All rights reserved. *
* ------------------------------------------------------------------------- *
* The software in this package is published under the terms of the BSD *
* style license a copy of which has been included with this distribution in *
* the LICENSE.txt file. *
* *
* Original code by Jon Tirsen *
*****************************************************************************/
package org.picocontainer.behaviors;
import java.io.Serializable;
import org.picocontainer.ComponentAdapter;
import org.picocontainer.ComponentMonitor;
import org.picocontainer.Behavior;
import org.picocontainer.PicoContainer;
import org.picocontainer.PicoCompositionException;
import org.picocontainer.PicoVisitor;
import org.picocontainer.ComponentMonitorStrategy;
import org.picocontainer.LifecycleStrategy;
/**
* <p>
* Component adapter which decorates another adapter.
* </p>
* <p>
* This adapter supports a {@link org.picocontainer.ComponentMonitorStrategy component monitor strategy}
* and will propagate change of monitor to the delegate if the delegate itself
* support the monitor strategy.
* </p>
* <p>
* This adapter also supports a {@link Behavior lifecycle manager} and a
* {@link org.picocontainer.LifecycleStrategy lifecycle strategy} if the delegate does.
* </p>
*
* @author Jon Tirsen
* @author Aslak Hellesoy
* @author Mauro Talevi
* @version $Revision: 3633 $
*/
public abstract class AbstractBehavior implements ComponentAdapter, ComponentMonitorStrategy,
Behavior, LifecycleStrategy, Serializable {
private final ComponentAdapter delegate;
public AbstractBehavior(ComponentAdapter delegate) {
this.delegate = delegate;
}
public Object getComponentKey() {
return delegate.getComponentKey();
}
public Class getComponentImplementation() {
return delegate.getComponentImplementation();
}
public Object getComponentInstance(PicoContainer container) throws PicoCompositionException {
return delegate.getComponentInstance(container);
}
public void verify(PicoContainer container) throws PicoCompositionException {
delegate.verify(container);
}
public ComponentAdapter getDelegate() {
return delegate;
}
public void accept(PicoVisitor visitor) {
visitor.visitComponentAdapter(this);
delegate.accept(visitor);
}
/**
* Delegates change of monitor if the delegate supports
* a component monitor strategy.
* {@inheritDoc}
*/
public void changeMonitor(ComponentMonitor monitor) {
if ( delegate instanceof ComponentMonitorStrategy ){
((ComponentMonitorStrategy)delegate).changeMonitor(monitor);
}
}
/**
* Returns delegate's current monitor if the delegate supports
* a component monitor strategy.
* {@inheritDoc}
* @throws PicoCompositionException if no component monitor is found in delegate
*/
public ComponentMonitor currentMonitor() {
if ( delegate instanceof ComponentMonitorStrategy ){
return ((ComponentMonitorStrategy)delegate).currentMonitor();
}
throw new PicoCompositionException("No component monitor found in delegate");
}
/**
* Invokes delegate start method if the delegate is a Behavior
* {@inheritDoc}
*/
public void start(PicoContainer container) {
if ( delegate instanceof Behavior){
((Behavior)delegate).start(container);
}
}
/**
* Invokes delegate stop method if the delegate is a Behavior
* {@inheritDoc}
*/
public void stop(PicoContainer container) {
if ( delegate instanceof Behavior){
((Behavior)delegate).stop(container);
}
}
/**
* Invokes delegate dispose method if the delegate is a Behavior
* {@inheritDoc}
*/
public void dispose(PicoContainer container) {
if ( delegate instanceof Behavior){
((Behavior)delegate).dispose(container);
}
}
/**
* Invokes delegate hasLifecycle method if the delegate is a Behavior
* {@inheritDoc}
*/
public boolean componentHasLifecycle() {
if (delegate instanceof Behavior){
return ((Behavior)delegate).componentHasLifecycle();
}
return false;
}
// ~~~~~~~~ LifecycleStrategy ~~~~~~~~
/**
* Invokes delegate start method if the delegate is a LifecycleStrategy
* {@inheritDoc}
*/
public void start(Object component) {
if ( delegate instanceof LifecycleStrategy ){
((LifecycleStrategy)delegate).start(component);
}
}
/**
* Invokes delegate stop method if the delegate is a LifecycleStrategy
* {@inheritDoc}
*/
public void stop(Object component) {
if ( delegate instanceof LifecycleStrategy ){
((LifecycleStrategy)delegate).stop(component);
}
}
/**
* Invokes delegate dispose method if the delegate is a LifecycleStrategy
* {@inheritDoc}
*/
public void dispose(Object component) {
if ( delegate instanceof LifecycleStrategy ){
((LifecycleStrategy)delegate).dispose(component);
}
}
/**
* Invokes delegate hasLifecycle(Class) method if the delegate is a LifecycleStrategy
* {@inheritDoc}
*/
public boolean hasLifecycle(Class type) {
return delegate instanceof LifecycleStrategy && ((LifecycleStrategy) delegate).hasLifecycle(type);
}
}
Other PicoContainer examples (source code examples)Here is a short list of links related to this PicoContainer AbstractBehavior.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.