|
PicoContainer example source code file (StartableLifecycleStrategy.java)
The PicoContainer StartableLifecycleStrategy.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. *
*****************************************************************************/
package org.picocontainer.lifecycle;
import org.picocontainer.ComponentMonitor;
import org.picocontainer.Disposable;
import org.picocontainer.Startable;
import org.picocontainer.lifecycle.AbstractMonitoringLifecycleStrategy;
import java.lang.reflect.Method;
/**
* Startable lifecycle strategy. Starts and stops component if Startable,
* and disposes it if Disposable.
*
* @author Mauro Talevi
* @author Jörg Schaible
* @see Startable
* @see Disposable
*/
public class StartableLifecycleStrategy extends AbstractMonitoringLifecycleStrategy {
private static Method start, stop, dispose;
{
try {
start = Startable.class.getMethod("start", (Class[])null);
stop = Startable.class.getMethod("stop", (Class[])null);
dispose = Disposable.class.getMethod("dispose", (Class[])null);
} catch (NoSuchMethodException e) {
}
}
public StartableLifecycleStrategy(ComponentMonitor monitor) {
super(monitor);
}
public void start(Object component) {
if (component != null && component instanceof Startable) {
long str = System.currentTimeMillis();
currentMonitor().invoking(null, null, start, component);
try {
((Startable) component).start();
currentMonitor().invoked(null, null, start, component, System.currentTimeMillis() - str);
} catch (RuntimeException cause) {
currentMonitor().lifecycleInvocationFailed(null, null, start, component, cause); // may re-throw
}
}
}
public void stop(Object component) {
if (component != null && component instanceof Startable) {
long str = System.currentTimeMillis();
currentMonitor().invoking(null, null, stop, component);
try {
((Startable) component).stop();
currentMonitor().invoked(null, null, stop, component, System.currentTimeMillis() - str);
} catch (RuntimeException cause) {
currentMonitor().lifecycleInvocationFailed(null, null, stop, component, cause); // may re-throw
}
}
}
public void dispose(Object component) {
if (component != null && component instanceof Disposable) {
long str = System.currentTimeMillis();
currentMonitor().invoking(null, null, dispose, component);
try {
((Disposable) component).dispose();
currentMonitor().invoked(null, null, dispose, component, System.currentTimeMillis() - str);
} catch (RuntimeException cause) {
currentMonitor().lifecycleInvocationFailed(null, null, dispose, component, cause); // may re-throw
}
}
}
public boolean hasLifecycle(Class type) {
return Startable.class.isAssignableFrom(type) || Disposable.class.isAssignableFrom(type);
}
}
Other PicoContainer examples (source code examples)Here is a short list of links related to this PicoContainer StartableLifecycleStrategy.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.