import org.apache.commons.lifecycle.Lifecycle;
public class MyComponent implements Lifecycle {
private boolean initialized;
private boolean started;
private boolean stopped;
private boolean destroyed;
@Override
public void init() {
System.out.println("Component initialized");
initialized = true;
}
@Override
public void start() {
if (!initialized) {
System.err.println("Component not initialized. Cannot start.");
return;
}
System.out.println("Component started");
started = true;
}
@Override
public void run() {
if (!started) {
System.err.println("Component not started. Cannot run.");
return;
}
System.out.println("Component running");
// Run component logic here
}
@Override
public void stop() {
if (!started) {
System.err.println("Component not started. Cannot stop.");
return;
}
System.out.println("Component stopped");
stopped = true;
}
@Override
public void destroy() {
if (!stopped) {
System.err.println("Component not stopped. Cannot destroy.");
return;
}
System.out.println("Component destroyed");
destroyed = true;
}
// Getter methods for state checking
public boolean isInitialized() {
return initialized;
}
public boolean isStarted() {
return started;
}
public boolean isStopped() {
return stopped;
}
public boolean isDestroyed() {
return destroyed;
}
}