package org.jboss.windup.rules.apps.javaee.model;
import java.util.Map;
import org.jboss.windup.graph.MapInProperties;
import org.jboss.windup.rules.apps.java.model.JavaClassModel;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* Contains EJB Session Bean information and related data.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*/
@TypeValue(EjbSessionBeanModel.TYPE)
public interface EjbSessionBeanModel extends EjbBeanBaseModel
{
String TYPE = "EjbSessionBean";
String EJB_HOME = "ejbHome";
String EJB_LOCAL_HOME = "ejbLocalHome";
String EJB_REMOTE = "ejbRemote";
String EJB_LOCAL = "ejbLocal";
String GLOBAL_JNDI = "globalJNDI";
String MODULE_JNDI = "moduleJNDI";
String LOCAL_JNDI = "localJNDI";
String CLUSTERED = "clustered";
String THREAD_POOL = "threadPool";
/**
* Contains the session bean clustering config
*/
@Property(CLUSTERED)
Boolean isClustered();
/**
* Contains the session bean clustering config
*/
@Property(CLUSTERED)
void setClustered(Boolean clustered);
/**
* Contains the Session bean's local interface
*/
@Adjacency(label = EJB_LOCAL, direction = Direction.OUT)
void setEjbLocal(JavaClassModel ejbLocal);
/**
* Contains the Session bean's local interface
*/
@Adjacency(label = EJB_LOCAL, direction = Direction.OUT)
JavaClassModel getEjbLocal();
/**
* Contains the Session bean's remote interface
*/
@Adjacency(label = EJB_REMOTE, direction = Direction.OUT)
void setEjbRemote(JavaClassModel ejbRemote);
/**
* Contains the Session bean's remote interface
*/
@Adjacency(label = EJB_REMOTE, direction = Direction.OUT)
JavaClassModel getEjbRemote();
/**
* Contains the Session bean's local home
*/
@Adjacency(label = EJB_LOCAL_HOME, direction = Direction.OUT)
void setEjbLocalHome(JavaClassModel ejbLocalHome);
/**
* Contains the Session bean's local home
*/
@Adjacency(label = EJB_LOCAL_HOME, direction = Direction.OUT)
JavaClassModel getEjbLocalHome();
/**
* Contains the Session bean's home interface
*/
@Adjacency(label = EJB_HOME, direction = Direction.OUT)
void setEjbHome(JavaClassModel ejbHome);
/**
* Contains the Session bean's home interface
*/
@Adjacency(label = EJB_HOME, direction = Direction.OUT)
JavaClassModel getEjbHome();
/**
* References the Deployment Descriptor containing EJB.
*/
@Adjacency(label = EjbDeploymentDescriptorModel.EJB_SESSION_BEAN, direction = Direction.IN)
EjbDeploymentDescriptorModel getEjbDeploymentDescriptor();
/**
* Contains the global jndi location for this resource.
*/
@Adjacency(label = GLOBAL_JNDI, direction = Direction.OUT)
void setGlobalJndiReference(JNDIResourceModel jndi);
/**
* Contains the module jndi location for this resource.
*/
@Adjacency(label = MODULE_JNDI, direction = Direction.OUT)
void setModuleJndiReference(JNDIResourceModel jndi);
/**
* Contains the app jndi location for this resource.
*/
@Adjacency(label = LOCAL_JNDI, direction = Direction.OUT)
void setLocalJndiReference(JNDIResourceModel jndi);
/**
* Contains the global jndi location for this resource.
*/
@Adjacency(label = GLOBAL_JNDI, direction = Direction.OUT)
JNDIResourceModel getGlobalJndiReference();
/**
* Contains the module jndi location for this resource.
*/
@Adjacency(label = MODULE_JNDI, direction = Direction.OUT)
JNDIResourceModel getModuleJndiReference();
/**
* Contains the app jndi location for this resource.
*/
@Adjacency(label = LOCAL_JNDI, direction = Direction.OUT)
JNDIResourceModel getLocalJndiReference();
/**
* Timeouts for each method pattern in seconds, * is wildcard
*/
@MapInProperties(propertyPrefix = "txTimeouts", propertyType = Integer.class)
Map<String, Integer> getTxTimeouts();
/**
* Timeouts for each method pattern, * is wildcard
*/
@MapInProperties(propertyPrefix = "txTimeouts", propertyType = Integer.class)
void setTxTimeouts(Map<String, Integer> map);
/**
* References the thread pool, if defined.
*/
@Adjacency(label = THREAD_POOL, direction = Direction.OUT)
void setThreadPool(ThreadPoolModel threadPool);
/**
* References the thread pool, if defined.
*/
@Adjacency(label = THREAD_POOL, direction = Direction.OUT)
ThreadPoolModel getThreadPool();
}