package org.jboss.windup.rules.apps.javaee.model;
import org.jboss.windup.graph.Indexed;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
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 metadata used by all specializations of EJBs (eg, environment references)
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*/
@TypeValue(EjbBeanBaseModel.TYPE)
public interface EjbBeanBaseModel extends WindupVertexFrame, HasApplications
{
String TYPE = "EjbBeanBaseModel";
String EJB_SESSION_TO_ENVIRONMENT_REFERENCE = "ejbToEnvironmentReference";
String EJB_IMPLEMENTATION_CLASS = "ejbImplementationClass";
String DISPLAY_NAME = "displayName";
String EJB_ID = "ejbId";
String TRANSACTION_TYPE = "transactionType";
String SESSION_TYPE = "sessionType";
String EJB_BEAN_NAME = "ejbBeanName";
String APPLICATIONS = "applications";
/**
* Contains the application in which this EJB was discovered.
*/
@Adjacency(label = APPLICATIONS, direction = Direction.OUT)
Iterable<ProjectModel> getApplications();
/**
* Contains the application in which this EJB was discovered.
*/
@Adjacency(label = APPLICATIONS, direction = Direction.OUT)
void setApplications(Iterable<ProjectModel> applications);
/**
* Contains the bean's display name
*/
@Property(DISPLAY_NAME)
String getDisplayName();
/**
* Contains the bean's display name
*/
@Property(DISPLAY_NAME)
void setDisplayName(String displayName);
/**
* Contains the bean's ejb id
*/
@Property(EJB_ID)
String getEjbId();
/**
* Contains the bean's ejb id
*/
@Indexed
@Property(EJB_ID)
void setEjbId(String id);
/**
* Contains the bean's type
*/
@Property(SESSION_TYPE)
String getSessionType();
/**
* Contains the bean's type
*/
@Property(SESSION_TYPE)
void setSessionType(String sessionType);
/**
* Contains the bean's transaction type
*/
@Property(TRANSACTION_TYPE)
String getTransactionType();
/**
* Contains the bean's transaction type
*/
@Property(TRANSACTION_TYPE)
void setTransactionType(String transactionType);
/**
* Contains the bean's name
*/
@Property(EJB_BEAN_NAME)
String getBeanName();
/**
* Contains the bean's name
*/
@Indexed
@Property(EJB_BEAN_NAME)
void setBeanName(String ejbSessionBeanName);
/**
* Contains the bean's implementation class
*/
@Adjacency(label = EJB_IMPLEMENTATION_CLASS, direction = Direction.OUT)
void setEjbClass(JavaClassModel ejbHome);
/**
* Contains the bean's implementation class
*/
@Adjacency(label = EJB_IMPLEMENTATION_CLASS, direction = Direction.OUT)
JavaClassModel getEjbClass();
/**
* Maintains a list of {@link EnvironmentReferenceModel}s associated with this web.xml file
*/
@Adjacency(label = EJB_SESSION_TO_ENVIRONMENT_REFERENCE, direction = Direction.OUT)
Iterable<EnvironmentReferenceModel> getEnvironmentReferences();
/**
* Maintains a list of {@link EnvironmentReferenceModel}s associated with this web.xml file
*/
@Adjacency(label = EJB_SESSION_TO_ENVIRONMENT_REFERENCE, direction = Direction.OUT)
void addEnvironmentReference(EnvironmentReferenceModel environmentReference);
}