public Operation createOperation(String name, Classifier resultType, List<String> paramNames, List<Classifier> paramTypes) { Operation result = UMLFactory.eINSTANCE.createOperation(); result.setName(name); // OCL can only define query operations result.setIsQuery(true); if (resultType != null) { result.setType(resultType); } int i = 0; for (String pname : paramNames) { result.createOwnedParameter(pname, paramTypes.get(i++)); } return result; }
public Operation defineOperation(Classifier owner, String name, Classifier type, List<Variable<Classifier, Parameter>> params, Constraint constraint) { resetTypeCaches(); Operation result = UMLFactory.eINSTANCE.createOperation(); result.addKeyword(UMLReflection.OCL_HELPER); result.setName(name); result.setType(type == null ? getOCLStandardLibrary().getOclVoid() : type); result.setIsQuery(true); // OCL can only define queries for (Variable<Classifier, Parameter> next : params) { Parameter param = UMLFactory.eINSTANCE.createParameter(); param.setName(next.getName()); param.setType(next.getType() == null ? getOCLStandardLibrary() .getOclVoid() : next.getType()); param.setDirection(ParameterDirectionKind.IN_LITERAL); param.setEffect(ParameterEffectKind.READ_LITERAL); result.getOwnedParameters().add(param); } annotate(result, constraint); addHelperOperation(owner, result); return result; }