package org.jboss.as.ee.component;
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.jboss.as.naming.ManagedReference;
import org.jboss.invocation.InterceptorContext;
/**
* @author Stuart Douglas
*/
public class ConstructorComponentFactory implements ComponentFactory {
private final Constructor<?> constructor;
public ConstructorComponentFactory(final Constructor<?> constructor) {
this.constructor = constructor;
}
@Override
public ManagedReference create(final InterceptorContext context) {
try {
Object instance = constructor.newInstance();
return new ConstructorManagedReference(instance);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}
private static final class ConstructorManagedReference implements ManagedReference, Serializable {
private final Object value;
private ConstructorManagedReference(final Object value) {
this.value = value;
}
@Override
public void release() {
}
@Override
public Object getInstance() {
return value;
}
}
}