
com.fluxtion.runtime.service.Service Maven / Gradle / Ivy
package com.fluxtion.runtime.service;
import com.fluxtion.runtime.annotations.feature.Preview;
import com.fluxtion.runtime.lifecycle.Lifecycle;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Accessors(fluent = true)
@Preview
@ToString
public class Service implements Lifecycle {
private final Class serviceClass;
private final String serviceName;
private final T instance;
public Service(S instance, Class serviceClass, String serviceName) {
this.serviceClass = serviceClass;
this.serviceName = serviceName;
this.instance = instance;
}
@SuppressWarnings("unchecked")
public Service(S instance, String serviceName) {
this.serviceClass = (Class) instance.getClass();
this.serviceName = serviceName;
this.instance = instance;
}
public Service(S instance, Class serviceClass) {
this(instance, serviceClass, serviceClass.getCanonicalName());
}
@SuppressWarnings("unchecked")
public Service(S instance) {
this(instance, (Class) instance.getClass());
}
@Override
public void init() {
if (instance instanceof Lifecycle) {
((Lifecycle) instance).init();
}
}
@Override
public void start() {
if (instance instanceof Lifecycle) {
((Lifecycle) instance).start();
}
}
@Override
public void startComplete() {
if (instance instanceof Lifecycle) {
((Lifecycle) instance).startComplete();
}
}
@Override
public void stop() {
if (instance instanceof Lifecycle) {
((Lifecycle) instance).stop();
}
}
@Override
public void tearDown() {
if (instance instanceof Lifecycle) {
((Lifecycle) instance).tearDown();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy