package com.github.rmannibucau.cdi.configuration.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
public class ConfigBean {
private final String name;
private final String classname;
private final Collection<String> typeParameters = new ArrayList<String>(1);
private final String factoryClass;
private final String factoryMethod;
private final String scope;
private final String qualifier;
private final String initMethod;
private final String destroyMethod;
private final boolean constructor;
private final Map<String, String> directAttributes = new HashMap<String, String>();
private final Map<String, String> refAttributes = new HashMap<String, String>();
private final Collection<String> attributeOrder = new CopyOnWriteArrayList<String>(); // this one needs to be thread safe since used at runtime to create the instance
public ConfigBean(final String name, final String classname, final String scope) {
this(name, classname, scope, null, null, null, null, null, false);
}
public ConfigBean(final String name, final String classname, final String scope, final String qualifier,
final String factoryClass, final String factoryMethod, final String init, final String destroy,
final boolean constructor) {
this.name = name;
this.classname = classname;
this.scope = scope;
this.qualifier = qualifier;
this.factoryClass = factoryClass;
this.constructor = constructor;
if (factoryMethod != null) {
this.factoryMethod = factoryMethod;
} else {
this.factoryMethod = "create";
}
this.initMethod = init;
this.destroyMethod = destroy;
}
public String getName() {
return name;
}
public String getClassname() {
return classname;
}
public Collection<String> getTypeParameters() {
return typeParameters;
}
public String getInitMethod() {
return initMethod;
}
public String getDestroyMethod() {
return destroyMethod;
}
public String getFactoryClass() {
return factoryClass;
}
public String getFactoryMethod() {
return factoryMethod;
}
public String getQualifier() {
return qualifier;
}
public String getScope() {
return scope;
}
public boolean isConstructor() {
return constructor;
}
public Map<String, String> getDirectAttributes() {
return directAttributes;
}
public Map<String, String> getRefAttributes() {
return refAttributes;
}
public Collection<String> getAttributeOrder() {
return attributeOrder;
}
@Override
public String toString() {
return "ConfigBean{" +
"name='" + name + '\'' +
", classname='" + classname + '\'' +
", qualifier='" + qualifier + '\'' +
'}';
}
}