blob: 5b6e00adc54b80e830733d23e76b75f09d3dd864 [file] [log] [blame]
<%if (isImplementation && !UML2GenModelUtil.hasOperationsClass(genClass, genOperation) && UML2GenModelUtil.hasOCLBody(genOperation)) {%>
/**
* The cached OCL expression body for the '{@link #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>) <em><%=genOperation.getFormattedName()%></em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>)
* @generated
* @ordered
*/
protected static final <%=genModel.getImportedName("java.lang.String")%> <%=UML2GenModelUtil.getUpperName(genOperation.getName())%><%=genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))%>__EOCL_EXP = "<%=UML2GenModelUtil.getOCLBody(genOperation)%>";<%=genModel.getNonNLS()%>
<%if (genOperation.isInvariant()) {%>
/**
* The cached OCL invariant for the '{@link #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>) <em><%=genOperation.getFormattedName()%></em>}' invariant operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>)
* @generated
* @ordered
*/
protected static <%=genModel.getImportedName("org.eclipse.ocl.ecore.Constraint")%> <%=UML2GenModelUtil.getUpperName(genOperation.getName())%><%=genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))%>__EOCL_INV;
<%} else {%>
/**
* The cached OCL query for the '{@link #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>) <em><%=genOperation.getFormattedName()%></em>}' query operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>)
* @generated
* @ordered
*/
protected static <%=genModel.getImportedName("org.eclipse.ocl.expressions.OCLExpression")%><%if (isJDK50) {%><<%=genModel.getImportedName("org.eclipse.emf.ecore.EClassifier")%>><%}%> <%=UML2GenModelUtil.getUpperName(genOperation.getName())%><%=genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))%>__EOCL_QRY;
<%}%>
<%}%>
<%if (genModel.getRuntimeVersion().getValue() >= GenRuntimeVersion.EMF26_VALUE && isImplementation) {%>
<%if (genOperation.isInvariant() && genOperation.hasInvariantExpression()) {%>
/**
* The cached validation expression for the '{@link #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>) <em><%=genOperation.getFormattedName()%></em>}' invariant operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>)
* @generated
* @ordered
*/
protected static final <%=genModel.getImportedName("java.lang.String")%> <%=CodeGenUtil.upperName(genClass.getUniqueName(genOperation), genModel.getLocale())%>__EEXPRESSION = "<%=genOperation.getInvariantExpression("\t\t")%>";<%=genModel.getNonNLS()%>
<%} else if (genOperation.hasInvocationDelegate()) {%>
/**
* The cached invocation delegate for the '{@link #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>) <em><%=genOperation.getFormattedName()%></em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #<%=genOperation.getName()%>(<%=genOperation.getParameterTypes(", ")%>)
* @generated
* @ordered
*/
protected static final <%=genModel.getImportedName("org.eclipse.emf.ecore.EOperation")%>.Internal.InvocationDelegate <%=CodeGenUtil.upperName(genClass.getUniqueName(genOperation), genModel.getLocale())%>__EINVOCATION_DELEGATE = ((<%=genModel.getImportedName("org.eclipse.emf.ecore.EOperation")%>.Internal)<%=genOperation.getQualifiedOperationAccessor()%>).getInvocationDelegate();
<%}%>
<%}%>
<%if (isInterface) {%>
/**
<%@ include file="genOperation.javadoc.insert.javajetinc" fail="silent" %>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
<%if (genOperation.hasDocumentation() || genOperation.hasParameterDocumentation()) {%>
* <!-- begin-model-doc -->
<%if (genOperation.hasDocumentation()) {%>
* <%=genOperation.getDocumentation(genModel.getIndentation(stringBuffer))%>
<%}%>
<%for (GenParameter genParameter : genOperation.getGenParameters()) {%>
<%if (genParameter.hasDocumentation()) { String documentation = genParameter.getDocumentation("");%>
<%if (documentation.contains("\n") || documentation.contains("\r")) {%>
* @param <%=genParameter.getName()%>
* <%=genParameter.getDocumentation(genModel.getIndentation(stringBuffer))%>
<%} else {%>
* @param <%=genParameter.getName()%> <%=genParameter.getDocumentation(genModel.getIndentation(stringBuffer))%>
<%}%>
<%}%>
<%}%>
* <!-- end-model-doc -->
<%}%>
<%if (!genModel.isSuppressEMFModelTags()) { boolean first = true; for (StringTokenizer stringTokenizer = new StringTokenizer(genOperation.getModelInfo(), "\n\r"); stringTokenizer.hasMoreTokens(); ) { String modelInfo = stringTokenizer.nextToken(); if (first) { first = false;%>
* @model <%=modelInfo%>
<%} else {%>
* <%=modelInfo%>
<%}} if (first) {%>
* @model
<%}}%>
* @generated
*/
<%} else {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%if (isJDK50) {%>
<%@ include file="genOperation.annotations.insert.javajetinc" fail="silent" %>
<%}%>
<%}%>
<%if (!isImplementation) {%>
<%=genOperation.getTypeParameters(genClass)%><%=genOperation.getImportedType(genClass)%> <%=genOperation.getName()%>(<%=genOperation.getParameters(genClass)%>)<%=genOperation.getThrows(genClass)%>;
<%} else {%>
<%if (genModel.useGenerics() && !genOperation.hasBody() && !genOperation.isInvariant() && genOperation.hasInvocationDelegate() && genOperation.isUncheckedCast(genClass)) {%>
@SuppressWarnings("unchecked")
<%}%>
public <%=genOperation.getTypeParameters(genClass)%><%=genOperation.getImportedType(genClass)%> <%=genOperation.getName()%>(<%=genOperation.getParameters(genClass)%>)<%=genOperation.getThrows(genClass)%>
{
<%if (genOperation.hasBody()) {%>
<%=genOperation.getBody(genModel.getIndentation(stringBuffer))%>
<%} else if (genOperation.isInvariant()) {GenClass opClass = genOperation.getGenClass(); String diagnostics = genOperation.getGenParameters().get(0).getName(); String context = genOperation.getGenParameters().get(1).getName();%>
<%if (genModel.getRuntimeVersion().getValue() >= GenRuntimeVersion.EMF26_VALUE && genOperation.hasInvariantExpression()) {%>
return
<%=opClass.getGenPackage().getImportedValidatorClassName()%>.validate
(<%=genClass.getQualifiedClassifierAccessor()%>,
this,
<%=diagnostics%>,
<%=context%>,
"<%=genOperation.getValidationDelegate()%>",<%=genModel.getNonNLS()%>
<%=genOperation.getQualifiedOperationAccessor()%>,
<%=CodeGenUtil.upperName(genClass.getUniqueName(genOperation), genModel.getLocale())%>__EEXPRESSION,
<%=genModel.getImportedName("org.eclipse.emf.common.util.Diagnostic")%>.ERROR,
<%=opClass.getGenPackage().getImportedValidatorClassName()%>.DIAGNOSTIC_SOURCE,
<%=opClass.getGenPackage().getImportedValidatorClassName()%>.<%=opClass.getOperationID(genOperation)%>);
<%} else {%>
<%if (UML2GenModelUtil.hasOperationsClass(genClass, genOperation)) {%>
return <%=UML2GenModelUtil.getImportedOperationsClassName(genClass, genOperation)%>.<%=genOperation.getName()%>(this, <%=diagnostics%>, <%=context%>);
<%} else {%>
<%if (UML2GenModelUtil.hasOCLBody(genOperation)) { String oclInv = UML2GenModelUtil.getUpperName(genOperation.getName()) + (genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))) + "__EOCL_INV";%>
if (<%=oclInv%> == null)
{
<%=genModel.getImportedName("org.eclipse.ocl.ecore.OCL")%>.Helper helper = EOCL_ENV.createOCLHelper();
helper.setContext(<%=opClass.getQualifiedClassifierAccessor()%>);
try
{
<%=oclInv%> = helper.createInvariant(<%=UML2GenModelUtil.getUpperName(genOperation.getName())%><%=genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))%>__EOCL_EXP);
}
catch (<%=genModel.getImportedName("org.eclipse.ocl.ParserException")%> pe)
{
throw new UnsupportedOperationException(pe.getLocalizedMessage());
}
}
if (!EOCL_ENV.createQuery(<%=oclInv%>).check(this))
<%} else {%>
// TODO: implement this method
// -> specify the condition that violates the invariant
// -> verify the details of the diagnostic, including severity and message
// Ensure that you remove @generated or mark it @generated NOT
if (false)
<%}%>
{
if (<%=diagnostics%> != null)
{
<%=diagnostics%>.add
(new <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicDiagnostic")%>
(<%=genModel.getImportedName("org.eclipse.emf.common.util.Diagnostic")%>.ERROR,
<%=opClass.getGenPackage().getImportedValidatorClassName()%>.DIAGNOSTIC_SOURCE,
<%=opClass.getGenPackage().getImportedValidatorClassName()%>.<%=opClass.getOperationID(genOperation)%>,
<%=genModel.getImportedName("org.eclipse.emf.ecore.plugin.EcorePlugin")%>.INSTANCE.getString("_UI_GenericInvariant_diagnostic", new Object[] { "<%=genOperation.getName()%>", <%=genModel.getImportedName("org.eclipse.emf.ecore.util.EObjectValidator")%>.getObjectLabel(this, <%=context%>) }),<%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
new Object [] { this }));
}
return false;
}
return true;
<%}%>
<%}%>
<%} else if (genModel.getRuntimeVersion().getValue() >= GenRuntimeVersion.EMF26_VALUE && genOperation.hasInvocationDelegate()) { int size = genOperation.getGenParameters().size();%>
try
{
<%if (genOperation.isVoid()) {%>
<%=CodeGenUtil.upperName(genClass.getUniqueName(genOperation), genModel.getLocale())%>__EINVOCATION_DELEGATE.dynamicInvoke(this, <%if (size > 0) {%>new <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>.UnmodifiableEList<Object>(<%=size%>, <%=genOperation.getParametersArray(genClass)%>)<%} else {%>null<%}%>);
<%} else {%>
return <%if (!isJDK50 && genOperation.isPrimitiveType()) {%>(<%}%>(<%=genOperation.getObjectType(genClass)%>)<%=CodeGenUtil.upperName(genClass.getUniqueName(genOperation), genModel.getLocale())%>__EINVOCATION_DELEGATE.dynamicInvoke(this, <%if (size > 0) {%>new <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>.UnmodifiableEList<Object>(<%=size%>, <%=genOperation.getParametersArray(genClass)%>)<%} else {%>null<%}%>)<%if (!isJDK50 && genOperation.isPrimitiveType()) {%>).<%=genOperation.getPrimitiveValueFunction()%>()<%}%>;
<%}%>
}
catch (<%=genModel.getImportedName(isGWT ? "org.eclipse.emf.common.util.InvocationTargetException" : "java.lang.reflect.InvocationTargetException")%> ite)
{
throw new <%=genModel.getImportedName("org.eclipse.emf.common.util.WrappedException")%>(ite);
}
<%} else {%>
<%if (UML2GenModelUtil.hasOperationsClass(genClass, genOperation)) {%>
<%if (genOperation.isVoid()) {%>
<%=UML2GenModelUtil.getImportedOperationsClassName(genClass, genOperation)%>.<%=genOperation.getName()%>(this<%if (genOperation.getGenParameters().size() > 0) {%>, <%=genOperation.getParameterNames(", ")%><%}%>);
<%} else {%>
<%if (UML2GenModelUtil.isCacheAdapterSupport(genModel) && UML2GenModelUtil.isCached(genOperation)) {%>
<%=genModel.getImportedName("org.eclipse.uml2.common.util.CacheAdapter")%> cache = getCacheAdapter();
if (cache != null)
{
<%if (genModel.useGenerics() && genOperation.isUncheckedCast()) {%>
@SuppressWarnings("unchecked")
<%}%>
<%=genOperation.getObjectType(genClass)%> result = (<%=genOperation.getObjectType(genClass)%>) cache.get(<%if (UML2GenModelUtil.isResourceCacheAdapterScope(genOperation)) {%>eResource(), <%}%>this, <%=genOperation.getQualifiedOperationAccessor()%>);
if (result == null)
{
cache.put(<%if (UML2GenModelUtil.isResourceCacheAdapterScope(genOperation)) {%>eResource(), <%}%>this, <%=genOperation.getQualifiedOperationAccessor()%>, result = <%if (genOperation.isPrimitiveType()) {%>new <%=genOperation.getObjectType(genClass)%>(<%}%><%=UML2GenModelUtil.getImportedOperationsClassName(genClass, genOperation)%>.<%=genOperation.getName()%>(this<%if (genOperation.getGenParameters().size() > 0) {%>, <%=genOperation.getParameterNames(", ")%><%}%>)<%if (genOperation.isPrimitiveType()) {%>)<%}%>);
}
return result<%if (genOperation.isPrimitiveType()) {%>.<%=genOperation.getPrimitiveValueFunction()%>()<%}%>;
}
<%}%>
return <%=UML2GenModelUtil.getImportedOperationsClassName(genClass, genOperation)%>.<%=genOperation.getName()%>(this<%if (genOperation.getGenParameters().size() > 0) {%>, <%=genOperation.getParameterNames(", ")%><%}%>);
<%}%>
<%} else if (UML2GenModelUtil.hasOCLBody(genOperation)) { String oclQry = UML2GenModelUtil.getUpperName(genOperation.getName()) + (genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))) + "__EOCL_QRY";
GenOperation redefinedGenOperation = genOperation;
while (UML2GenModelUtil.isDuplicate(redefinedGenOperation)) {
java.util.List<GenOperation> redefinedGenOperations = UML2GenModelUtil.getRedefinedGenOperations(redefinedGenOperation);
if (redefinedGenOperations.size() > 0) {
redefinedGenOperation = redefinedGenOperations.get(0);
} else {
break;
}
}
int index = genOperation.getGenClass().getAllGenOperations().indexOf(redefinedGenOperation);%>
if (<%=oclQry%> == null)
{
<%=genModel.getImportedName("org.eclipse.ocl.ecore.OCL")%>.Helper helper = EOCL_ENV.createOCLHelper();
helper.setOperationContext(<%=genOperation.getGenClass().getQualifiedClassifierAccessor()%>, <%=genOperation.getGenClass().getQualifiedClassifierAccessor()%>.getEAllOperations().get(<%=index%>));
try
{
<%=oclQry%> = helper.createQuery(<%=UML2GenModelUtil.getUpperName(genOperation.getName())%><%=genOperation.getGenParameters().size() == 0 ? "" : "__" + UML2GenModelUtil.getUpperName(genOperation.getParameterTypes("_", false))%>__EOCL_EXP);
}
catch (<%=genModel.getImportedName("org.eclipse.ocl.ParserException")%> pe)
{
throw new UnsupportedOperationException(pe.getLocalizedMessage());
}
}
<%=genModel.getImportedName("org.eclipse.ocl.ecore.OCL")%>.Query query = EOCL_ENV.createQuery(<%=oclQry%>);
<%if (!genOperation.getGenParameters().isEmpty()) {%>
<%=genModel.getImportedName("org.eclipse.ocl.EvaluationEnvironment")%><%if (isJDK50) {%><?, ?, ?, ?, ?><%}%> environment = query.getEvaluationEnvironment();
<%for (GenParameter genParameter : genOperation.getGenParameters()) {%>
environment.add("<%=genParameter.getName()%>", <%=genParameter.getName()%>);<%=genModel.getNonNLS()%>
<%}%>
<%}%>
<%if (genOperation.isListType()) {%>
<%if (isJDK50) {%>
@SuppressWarnings("unchecked")
<%}%>
<%=genModel.getImportedName("java.util.Collection")%><<%=genOperation.getListItemType(null)%>> result = (<%=genModel.getImportedName("java.util.Collection")%><<%=genOperation.getListItemType(null)%>>) query.evaluate(this);
return new <%=genModel.getImportedName("org.eclipse.emf.common.util.BasicEList")%>.UnmodifiableEList<<%=genOperation.getListItemType(null)%>>(result.size(), result.toArray());
<%} else if (genOperation.isPrimitiveType()) {%>
return ((<%=genOperation.getObjectType(null)%>) query.evaluate(this)).<%=genOperation.getPrimitiveValueFunction()%>();
<%} else {%>
return (<%=genOperation.getImportedType(null)%>) query.evaluate(this);
<%}%>
<%} else {%>
// TODO: implement this method
// Ensure that you remove @generated or mark it @generated NOT
throw new UnsupportedOperationException();
<%}%>
<%}%>
}
<%}%>