/**
* <copyright>
* </copyright>
*
* $Id$
*/
package soamodel;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Service Component</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link soamodel.ServiceComponent#getMethods <em>Methods</em>}</li>
* <li>{@link soamodel.ServiceComponent#getName <em>Name</em>}</li>
* <li>{@link soamodel.ServiceComponent#getNamespace <em>Namespace</em>}</li>
* <li>{@link soamodel.ServiceComponent#getConnectsTo <em>Connects To</em>}</li>
* <li>{@link soamodel.ServiceComponent#getURI <em>URI</em>}</li>
* <li>{@link soamodel.ServiceComponent#getPersists <em>Persists</em>}</li>
* <li>{@link soamodel.ServiceComponent#getInArchitecture <em>In Architecture</em>}</li>
* </ul>
* </p>
*
* @see soamodel.SoamodelPackage#getServiceComponent()
* @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='UniqueServiceMethodSignatures LivingComponent UniqueSCURINamespace'"
* annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot UniqueServiceMethodSignatures='self.methods->forAll(m1 : ServiceMethod, m2 : ServiceMethod | (m1.name <> m2.name or m1 = m2)) and self.methods->forAll(m : ServiceMethod | m.parameters->forAll(p1 : Parameter, p2 : Parameter | (p1.parameterType <> p2.parameterType or p1 = p2)))' LivingComponent='ServiceOrientedArchitecture.allInstances()->exists(a : ServiceOrientedArchitecture | a.components->exists(c : ServiceComponent | c = self))' UniqueSCURINamespace='ServiceComponent.allInstances()->forAll(SC1 : ServiceComponent, SC2 : ServiceComponent | SC1.URI <> SC2.URI and SC1.namespace <> SC2.namespace or SC1 = SC2)'"
* @generated
*/
public interface ServiceComponent extends EObject {
/**
* Returns the value of the '<em><b>Methods</b></em>' containment reference list.
* The list contents are of type {@link soamodel.ServiceMethod}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Methods</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Methods</em>' containment reference list.
* @see soamodel.SoamodelPackage#getServiceComponent_Methods()
* @model type="soamodel.ServiceMethod" containment="true"
* @generated
*/
EList getMethods();
/**
* Returns the value of the '<em><b>Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Name</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Name</em>' attribute.
* @see #setName(String)
* @see soamodel.SoamodelPackage#getServiceComponent_Name()
* @model required="true"
* @generated
*/
String getName();
/**
* Sets the value of the '{@link soamodel.ServiceComponent#getName <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Name</em>' attribute.
* @see #getName()
* @generated
*/
void setName(String value);
/**
* Returns the value of the '<em><b>Namespace</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Namespace</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Namespace</em>' attribute.
* @see #setNamespace(String)
* @see soamodel.SoamodelPackage#getServiceComponent_Namespace()
* @model
* @generated
*/
String getNamespace();
/**
* Sets the value of the '{@link soamodel.ServiceComponent#getNamespace <em>Namespace</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Namespace</em>' attribute.
* @see #getNamespace()
* @generated
*/
void setNamespace(String value);
/**
* Returns the value of the '<em><b>Connects To</b></em>' reference list.
* The list contents are of type {@link soamodel.ServiceComponent}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Connects To</em>' reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Connects To</em>' reference list.
* @see soamodel.SoamodelPackage#getServiceComponent_ConnectsTo()
* @model type="soamodel.ServiceComponent"
* @generated
*/
EList getConnectsTo();
/**
* Returns the value of the '<em><b>URI</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>URI</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>URI</em>' attribute.
* @see #setURI(String)
* @see soamodel.SoamodelPackage#getServiceComponent_URI()
* @model
* @generated
*/
String getURI();
/**
* Sets the value of the '{@link soamodel.ServiceComponent#getURI <em>URI</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>URI</em>' attribute.
* @see #getURI()
* @generated
*/
void setURI(String value);
/**
* Returns the value of the '<em><b>Persists</b></em>' reference list.
* The list contents are of type {@link soamodel.Entity}.
* It is bidirectional and its opposite is '{@link soamodel.Entity#getPersistedBy <em>Persisted By</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Persists</em>' reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Persists</em>' reference list.
* @see soamodel.SoamodelPackage#getServiceComponent_Persists()
* @see soamodel.Entity#getPersistedBy
* @model type="soamodel.Entity" opposite="persistedBy"
* @generated
*/
EList getPersists();
/**
* Returns the value of the '<em><b>In Architecture</b></em>' container reference.
* It is bidirectional and its opposite is '{@link soamodel.ServiceOrientedArchitecture#getComponents <em>Components</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>In Architecture</em>' container reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>In Architecture</em>' container reference.
* @see #setInArchitecture(ServiceOrientedArchitecture)
* @see soamodel.SoamodelPackage#getServiceComponent_InArchitecture()
* @see soamodel.ServiceOrientedArchitecture#getComponents
* @model opposite="components" required="true" transient="false"
* @generated
*/
ServiceOrientedArchitecture getInArchitecture();
/**
* Sets the value of the '{@link soamodel.ServiceComponent#getInArchitecture <em>In Architecture</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>In Architecture</em>' container reference.
* @see #getInArchitecture()
* @generated
*/
void setInArchitecture(ServiceOrientedArchitecture value);
} // ServiceComponent