You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(43) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(13) |
Feb
(28) |
Mar
(35) |
Apr
(33) |
May
(59) |
Jun
(27) |
Jul
(26) |
Aug
(33) |
Sep
(49) |
Oct
(45) |
Nov
(13) |
Dec
(6) |
2002 |
Jan
(3) |
Feb
(3) |
Mar
|
Apr
(37) |
May
(2) |
Jun
(1) |
Jul
|
Aug
(33) |
Sep
(4) |
Oct
(8) |
Nov
|
Dec
(4) |
2003 |
Jan
|
Feb
(5) |
Mar
(21) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(24) |
Oct
|
Nov
|
Dec
|
2004 |
Jan
(20) |
Feb
(9) |
Mar
|
Apr
|
May
(24) |
Jun
|
Jul
(12) |
Aug
|
Sep
|
Oct
(14) |
Nov
(3) |
Dec
(2) |
2005 |
Jan
|
Feb
(195) |
Mar
(11) |
Apr
(1) |
May
(1) |
Jun
(21) |
Jul
(5) |
Aug
(6) |
Sep
(6) |
Oct
(52) |
Nov
(38) |
Dec
(20) |
2006 |
Jan
(18) |
Feb
(37) |
Mar
|
Apr
|
May
(74) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(45) |
Dec
|
2007 |
Jan
(54) |
Feb
(3) |
Mar
(50) |
Apr
(447) |
May
(220) |
Jun
(60) |
Jul
(24) |
Aug
(72) |
Sep
(8) |
Oct
|
Nov
|
Dec
|
From: Matthias B. <mbr...@us...> - 2007-09-08 10:22:47
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv32153/src/tudresden/ocl20/pivot/modelbus/internal Modified Files: ModelFactory.java Log Message: changed interface for creating variables in IModelFactory. Now the parser is responsible for finding types and binding generic types. This was necessary to properly support nested generic type declarations, which could not be properly processed in the model factory; the OCL parser is the correct place for the necessary bindings Index: ModelFactory.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal/ModelFactory.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -r1.20 -r1.21 *** ModelFactory.java 19 Aug 2007 08:22:23 -0000 1.20 --- ModelFactory.java 8 Sep 2007 10:22:44 -0000 1.21 *************** *** 90,94 **** import tudresden.ocl20.pivot.pivotmodel.Property; import tudresden.ocl20.pivot.pivotmodel.Type; - import tudresden.ocl20.pivot.pivotmodel.TypeParameter; /** --- 90,93 ---- *************** *** 423,427 **** ifExp.setThenExpression(thenExpression); ifExp.setElseExpression(elseExpression); ! ifExp.setOclLibrary(getOclLibrary()); --- 422,426 ---- ifExp.setThenExpression(thenExpression); ifExp.setElseExpression(elseExpression); ! ifExp.setOclLibrary(getOclLibrary()); *************** *** 516,520 **** logger.debug("createIterateExp() - exit - return value=" + iterateExp); //$NON-NLS-1$ } ! return iterateExp; } --- 515,519 ---- logger.debug("createIterateExp() - exit - return value=" + iterateExp); //$NON-NLS-1$ } ! return iterateExp; } *************** *** 850,854 **** realLiteralExp.setOclLibrary(getOclLibrary()); ! if (logger.isDebugEnabled()) { logger.debug("createRealLiteralExp() - exit - return value=" //$NON-NLS-1$ --- 849,853 ---- realLiteralExp.setOclLibrary(getOclLibrary()); ! if (logger.isDebugEnabled()) { logger.debug("createRealLiteralExp() - exit - return value=" //$NON-NLS-1$ *************** *** 1022,1039 **** } ! /* ! * (non-Javadoc) ! * ! * @see tudresden.ocl20.pivot.modelbus.IModelFactory#createVariable(java.lang.String, ! * java.util.List, ! * tudresden.ocl20.pivot.essentialocl.expressions.OclExpression) */ ! public Variable createVariable(String name, List<String> typePathName, ! OclExpression initExpression) throws FactoryException { if (logger.isDebugEnabled()) { ! logger.debug("createVariable(name=" + name + ", typeName=" + typePathName //$NON-NLS-1$ //$NON-NLS-2$ ! + ", initExpression=" + initExpression + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ } ! if (StringUtils.isEmpty(name)) { throw new IllegalArgumentException( --- 1021,1035 ---- } ! /** ! * Creates a {@link Variable} using the {@link ExpressionsFactory}. */ ! public Variable createVariable(String name, Type type, ! OclExpression initExpression) { if (logger.isDebugEnabled()) { ! logger.debug("createVariable(name=" + name + ", type=" + type //$NON-NLS-1$ //$NON-NLS-2$ ! + ", initExpression=" + initExpression + ") - enter"); //$NON-NLS-1$//$NON-NLS-2$ } ! ! // precondition check if (StringUtils.isEmpty(name)) { throw new IllegalArgumentException( *************** *** 1041,1051 **** } ! Type type = null; ! ! // if the type name is given lookup the type ! if (typePathName != null && typePathName.size() > 0) { ! type = findType(typePathName); ! } ! Variable variable = ExpressionsFactory.INSTANCE.createVariable(); variable.setName(name); --- 1037,1041 ---- } ! // create the variable and initialize Variable variable = ExpressionsFactory.INSTANCE.createVariable(); variable.setName(name); *************** *** 1059,1127 **** } - if (logger.isDebugEnabled()) { - logger.debug("createVariable() - exit - return value=" + variable); //$NON-NLS-1$ - } - - return variable; - } - - /* - * (non-Javadoc) - * - * @see tudresden.ocl20.pivot.modelbus.IModelFactory#createVariable(java.lang.String, - * java.util.List, java.util.List, - * tudresden.ocl20.pivot.essentialocl.expressions.OclExpression) - */ - public Variable createVariable(String name, List<String> typePathName, - List<List<String>> typeArguments, OclExpression initExpression) - throws FactoryException { - if (logger.isDebugEnabled()) { - logger.debug("createVariable(name=" + name + ", typePathName=" //$NON-NLS-1$ //$NON-NLS-2$ - + typePathName + ", typeArguments=" + typeArguments //$NON-NLS-1$ - + ", initExpression=" + initExpression + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - if (StringUtils.isEmpty(name)) { - throw new IllegalArgumentException( - "The 'name' argument must not be null or empty."); //$NON-NLS-1$ - } - - Type type = null; - - // if the type name is given lookup the type - if (typePathName != null && typePathName.size() > 0) { - type = findType(typePathName); - - // try to bind type arguments - if (typeArguments != null) { - List<Type> typeArgs = new ArrayList<Type>(); - - // collect the type arguments - for (List<String> typeArgumentTypePath : typeArguments) { - typeArgs.add(findType(typeArgumentTypePath)); - } - - // bind the generic type - type = type.bindTypeParameter(new ArrayList<TypeParameter>(type - .getOwnedTypeParameter()), typeArgs); - } - } - - // create the variable - Variable variable = ExpressionsFactory.INSTANCE.createVariable(); - variable.setName(name); - - if (type != null) { - variable.setType(type); - } - - if (initExpression != null) { - variable.setInitExpression(initExpression); - } if (logger.isDebugEnabled()) { logger.debug("createVariable() - exit - return value=" + variable); //$NON-NLS-1$ } ! return variable; } --- 1049,1057 ---- } if (logger.isDebugEnabled()) { logger.debug("createVariable() - exit - return value=" + variable); //$NON-NLS-1$ } ! return variable; } |
From: Matthias B. <mbr...@us...> - 2007-09-08 10:22:47
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv32153/src/tudresden/ocl20/pivot/modelbus Modified Files: IModelFactory.java Log Message: changed interface for creating variables in IModelFactory. Now the parser is responsible for finding types and binding generic types. This was necessary to properly support nested generic type declarations, which could not be properly processed in the model factory; the OCL parser is the correct place for the necessary bindings Index: IModelFactory.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/IModelFactory.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** IModelFactory.java 16 Aug 2007 01:29:57 -0000 1.11 --- IModelFactory.java 8 Sep 2007 10:22:44 -0000 1.12 *************** *** 68,71 **** --- 68,72 ---- import tudresden.ocl20.pivot.pivotmodel.Operation; import tudresden.ocl20.pivot.pivotmodel.Parameter; + import tudresden.ocl20.pivot.pivotmodel.Type; /** *************** *** 129,162 **** * * @param name the name of the variable ! * @param typePathName the type of the variable * @param initExpression an (optional) initialization expression * * @return a <code>Variable</code> instance - * - * @throws FactoryException if the variable cannot be created */ ! Variable createVariable(String name, List<String> typePathName, ! OclExpression initExpression) throws FactoryException; ! ! /** ! * Creates a new {@link Variable} with the same semantics as ! * {@link #createVariable(String, List, OclExpression)}, but allows to ! * additionally specify a list of type arguments for the type of the variable. ! * This is required for generic types such as the collection types from the ! * OCL Standard Library. ! * ! * @param name the name of the variable ! * @param typePathName the type of the variable ! * @param typeArguments a list of type names 8each represented as a list of ! * path segments) ! * @param initExpression an (optional) initialization expression ! * ! * @return a <code>Variable</code> instance ! * ! * @throws FactoryException if the variable cannot be created ! */ ! Variable createVariable(String name, List<String> typePathName, ! List<List<String>> typeArguments, OclExpression initExpression) ! throws FactoryException; /** --- 130,139 ---- * * @param name the name of the variable ! * @param type the type of the variable * @param initExpression an (optional) initialization expression * * @return a <code>Variable</code> instance */ ! Variable createVariable(String name, Type type, OclExpression initExpression); /** |
From: Matthias B. <mbr...@us...> - 2007-09-08 10:22:41
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv32141/src/tudresden/ocl20/pivot/parser/internal/xocl Modified Files: XOCLParser.java Log Message: changed interface for creating variables in IModelFactory. Now the parser is responsible for finding types and binding generic types. This was necessary to properly support nested generic type declarations, which could not be properly processed in the model factory; the OCL parser is the correct place for the necessary bindings Index: XOCLParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl/XOCLParser.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -r1.15 -r1.16 *** XOCLParser.java 23 Aug 2007 20:29:29 -0000 1.15 --- XOCLParser.java 8 Sep 2007 10:22:38 -0000 1.16 *************** *** 64,68 **** import tudresden.ocl20.pivot.modelbus.FactoryException; import tudresden.ocl20.pivot.modelbus.IModelFactory; - import tudresden.ocl20.pivot.modelbus.ITypeResolver; import tudresden.ocl20.pivot.modelbus.ModelAccessException; import tudresden.ocl20.pivot.modelbus.TypeNotFoundException; --- 64,67 ---- *************** *** 79,82 **** --- 78,82 ---- import tudresden.ocl20.pivot.pivotmodel.Property; import tudresden.ocl20.pivot.pivotmodel.Type; + import tudresden.ocl20.pivot.pivotmodel.TypeParameter; import tudresden.ocl20.pivot.xocl.BooleanLiteralExpXS; import tudresden.ocl20.pivot.xocl.CollectionItemXS; *************** *** 892,896 **** // find the constrained element constrainedElement = findConstrainedElement(packageName, constraintXS ! .getConstrainedElement(), constraintKind, getTypeResolver()); // create the specification expression --- 892,896 ---- // find the constrained element constrainedElement = findConstrainedElement(packageName, constraintXS ! .getConstrainedElement(), constraintKind); // create the specification expression *************** *** 975,980 **** */ protected ConstrainableElement findConstrainedElement(String packageName, ! String constrainedElementName, ConstraintKind constraintKind, ! ITypeResolver typeResolver) { if (logger.isDebugEnabled()) { --- 975,979 ---- */ protected ConstrainableElement findConstrainedElement(String packageName, ! String constrainedElementName, ConstraintKind constraintKind) { if (logger.isDebugEnabled()) { *************** *** 1005,1014 **** case INVARIANT: case DEFINITION: ! element = findType(pathName, typeResolver); break; case DERIVED: case INITIAL: ! element = findProperty(pathName, typeResolver); break; --- 1004,1013 ---- case INVARIANT: case DEFINITION: ! element = findType(pathName); break; case DERIVED: case INITIAL: ! element = findProperty(pathName); break; *************** *** 1016,1020 **** case PRECONDITION: case POSTCONDITION: ! element = findOperation(pathName, typeResolver); break; } --- 1015,1019 ---- case PRECONDITION: case POSTCONDITION: ! element = findOperation(pathName); break; } *************** *** 1038,1046 **** * Helper method to find a type in the associated getModel(). */ ! protected Type findType(List<String> pathName, ITypeResolver typeResolver) { Type type; try { ! type = typeResolver.findType(pathName); } --- 1037,1045 ---- * Helper method to find a type in the associated getModel(). */ ! protected Type findType(List<String> pathName) { Type type; try { ! type = getTypeResolver().findType(pathName); } *************** *** 1063,1068 **** * Helper method to find a property in the associated getModel(). */ ! protected Property findProperty(List<String> pathName, ! ITypeResolver typeResolver) { if (logger.isDebugEnabled()) { logger.debug("findProperty(pathName=" + pathName + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ --- 1062,1066 ---- * Helper method to find a property in the associated getModel(). */ ! protected Property findProperty(List<String> pathName) { if (logger.isDebugEnabled()) { logger.debug("findProperty(pathName=" + pathName + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ *************** *** 1073,1077 **** // find the contextual type ! contextualType = findContextualType(pathName, typeResolver); // split off the type of the property if existent --- 1071,1075 ---- // find the contextual type ! contextualType = findContextualType(pathName); // split off the type of the property if existent *************** *** 1099,1109 **** * Helper method to find an operation in the associated model. */ ! protected Operation findOperation(List<String> pathName, ! ITypeResolver typeResolver) { Type contextualType; Operation operation = null; // find the contextual type ! contextualType = findContextualType(pathName, typeResolver); // instantiate a regular expression to match operations and extract their --- 1097,1106 ---- * Helper method to find an operation in the associated model. */ ! protected Operation findOperation(List<String> pathName) { Type contextualType; Operation operation = null; // find the contextual type ! contextualType = findContextualType(pathName); // instantiate a regular expression to match operations and extract their *************** *** 1149,1153 **** for (String typeName : parametersArray) { ! parameterTypes.add(findType(tokenizePathName(typeName), typeResolver)); } --- 1146,1150 ---- for (String typeName : parametersArray) { ! parameterTypes.add(findType(tokenizePathName(typeName))); } *************** *** 1163,1173 **** * constraint. */ ! private Type findContextualType(List<String> pathName, ! ITypeResolver typeResolver) { Type contextualType; // lookup the type ! contextualType = findType(pathName.subList(0, pathName.size() - 1), ! typeResolver); if (contextualType == null) { --- 1160,1168 ---- * constraint. */ ! private Type findContextualType(List<String> pathName) { Type contextualType; // lookup the type ! contextualType = findType(pathName.subList(0, pathName.size() - 1)); if (contextualType == null) { *************** *** 1256,1260 **** /** ! * Creates a {@link Variable} from a {@link VariableXS}. */ @SuppressWarnings("unchecked") --- 1251,1258 ---- /** ! * Creates a {@link Variable} from a {@link VariableXS}. The type of the ! * variable can be a generic type (e.g. Collection(Integer)), but for ! * simplicity reasons only one type parameter can be parsed. This is enough ! * for the OCL collection types, but not for arbitrary generic types. */ @SuppressWarnings("unchecked") *************** *** 1268,1273 **** Variable variable; OclExpression initExpression = null; ! List<String> typePath = null; ! List<String> typeArgumentPath = null; // parse the init expression if existing --- 1266,1271 ---- Variable variable; OclExpression initExpression = null; ! String typeName; ! Matcher matcher; // parse the init expression if existing *************** *** 1276,1308 **** } ! // check whether the type name contains type arguments ! Matcher matcher = Pattern.compile("(\\w+)\\((\\w+)\\)").matcher( //$NON-NLS-1$ ! variableXS.getType()); if (matcher.matches()) { ! typePath = tokenizePathName(matcher.group(1)); ! typeArgumentPath = tokenizePathName(matcher.group(2)); ! } ! // create the variable using the model factory ! try { ! // create a variable with type arguments ! if (typeArgumentPath != null) { ! variable = modelFactory.createVariable(variableXS.getName(), typePath, ! Arrays.asList(typeArgumentPath), initExpression); ! } ! // create an non-generic variable ! else { ! variable = modelFactory.createVariable(variableXS.getName(), ! tokenizePathName(variableXS.getType()), initExpression); ! } } ! catch (FactoryException e) { ! throw new ParseRuntimeException( ! "Failed to create variable '" + variableXS.getName() + "'.", e); //$NON-NLS-1$ //$NON-NLS-2$ ! } --- 1274,1305 ---- } ! // get the type of the variable ! typeName = variableXS.getType(); + // check whether the type name contains type arguments, the pattern + // defines two capture groups: the type name and the type argument + matcher = Pattern.compile("(\\w+)\\((\\w+)\\)").matcher(typeName); //$NON-NLS-1$ + + // type arguments given if (matcher.matches()) { ! Type type, typeArgument; ! // find the type and the type argument ! type = findType(tokenizePathName(matcher.group(1))); ! typeArgument = findType(tokenizePathName(matcher.group(2))); ! // bind the type with the type argument ! type = type.bindTypeParameter(new ArrayList<TypeParameter>(type ! .getOwnedTypeParameter()), Arrays.asList(typeArgument)); ! // create the variable with the bound type ! variable = modelFactory.createVariable(variableXS.getName(), type, ! initExpression); } ! // create an non-generic variable ! else { ! variable = modelFactory.createVariable(variableXS.getName(), ! findType(tokenizePathName(typeName)), initExpression); } *************** *** 1327,1332 **** // return an empty list if the path name is empty if (StringUtils.isEmpty(pathName)) { ! throw new ParseRuntimeException( ! "Encountered an empty path name", null); //$NON-NLS-1$ } --- 1324,1328 ---- // return an empty list if the path name is empty if (StringUtils.isEmpty(pathName)) { ! throw new ParseRuntimeException("Encountered an empty path name", null); //$NON-NLS-1$ } |
From: Matthias B. <mbr...@us...> - 2007-09-08 10:21:02
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/model In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv31418/model Modified Files: IterateMultIt.xocl Log Message: fixed wrong type declaration in the String description of the expression Index: IterateMultIt.xocl =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/model/IterateMultIt.xocl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** IterateMultIt.xocl 19 Aug 2007 08:20:12 -0000 1.1 --- IterateMultIt.xocl 8 Sep 2007 10:20:55 -0000 1.2 *************** *** 2,6 **** <xocl:NamespaceXS xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xocl="http://www.tu-dresden.de/ocl20/pivot/2007/xocl" pathName="pml"> <ownedRule name="iterateMultIt" constrainedElement="Plugin"> ! <specification body="Set{1..4}->iterate(it1 : Integer; it2 : Integer; acc : Bag(String) = {} | acc->including(it1 * it2))"> <bodyExpression xsi:type="xocl:IterateExpXS"> <source xsi:type="xocl:CollectionLiteralExpXS"> --- 2,6 ---- <xocl:NamespaceXS xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xocl="http://www.tu-dresden.de/ocl20/pivot/2007/xocl" pathName="pml"> <ownedRule name="iterateMultIt" constrainedElement="Plugin"> ! <specification body="Set{1..4}->iterate(it1 : Integer; it2 : Integer; acc : Bag(Integer) = {} | acc->including(it1 * it2))"> <bodyExpression xsi:type="xocl:IterateExpXS"> <source xsi:type="xocl:CollectionLiteralExpXS"> |
From: Matthias B. <mbr...@us...> - 2007-09-08 09:14:56
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/model In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7516/model Modified Files: essentialocl.ecore Log Message: updated documentation for OclLibrary.getCollectionType operation Index: essentialocl.ecore =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/model/essentialocl.ecore,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** essentialocl.ecore 11 Aug 2007 22:37:53 -0000 1.7 --- essentialocl.ecore 8 Sep 2007 09:14:51 -0000 1.8 *************** *** 60,63 **** --- 60,66 ---- </eOperations> <eOperations name="getCollectionType" eType="#//types/CollectionType"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="<p>
Returns the {@link CollectionType} with the given element type. The
given <code>elementType</code> must not be <code>null</code> or
{@link #getOclInvalid() OclInvalid} (OCL 2.0 specification, Section 8.2.2).
It may be {@link #getOclVoid() OclVoid}, though.
</p>"/> + </eAnnotations> <eParameters name="elementType" eType="ecore:EClass ../../tudresden.ocl20.pivot.pivotmodel/model/pivotmodel.ecore#//Type"/> </eOperations> |
From: Matthias B. <mbr...@us...> - 2007-09-08 09:14:55
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/types/impl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7516/src/tudresden/ocl20/pivot/essentialocl/types/impl Modified Files: OclLibraryImpl.java Log Message: updated documentation for OclLibrary.getCollectionType operation Index: OclLibraryImpl.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/types/impl/OclLibraryImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** OclLibraryImpl.java 6 Aug 2007 10:13:03 -0000 1.4 --- OclLibraryImpl.java 8 Sep 2007 09:14:51 -0000 1.5 *************** *** 71,91 **** * The following features are implemented: * <ul> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclBoolean <em>Ocl Boolean</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclString <em>Ocl String</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclInteger <em>Ocl Integer</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclReal <em>Ocl Real</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclAny <em>Ocl Any</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclVoid <em>Ocl Void</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclInvalid <em>Ocl Invalid</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclType <em>Ocl Type</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclCollection <em>Ocl Collection</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclSequence <em>Ocl Sequence</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclBag <em>Ocl Bag</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclSet <em>Ocl Set</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclOrderedSet <em>Ocl Ordered Set</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclTuple <em>Ocl Tuple</em>}</li> * </ul> * </p> ! * * @generated */ --- 71,91 ---- * The following features are implemented: * <ul> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclBoolean <em>Ocl Boolean</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclString <em>Ocl String</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclInteger <em>Ocl Integer</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclReal <em>Ocl Real</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclAny <em>Ocl Any</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclVoid <em>Ocl Void</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclInvalid <em>Ocl Invalid</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclType <em>Ocl Type</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclCollection <em>Ocl Collection</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclSequence <em>Ocl Sequence</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclBag <em>Ocl Bag</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclSet <em>Ocl Set</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclOrderedSet <em>Ocl Ordered Set</em>}</li> ! * <li>{@link tudresden.ocl20.pivot.essentialocl.types.impl.OclLibraryImpl#getOclTuple <em>Ocl Tuple</em>}</li> * </ul> * </p> ! * * @generated */ *************** *** 98,243 **** /** ! * The cached value of the '{@link #getOclBoolean() <em>Ocl Boolean</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclBoolean() * @generated * @ordered */ ! protected PrimitiveType oclBoolean = null; /** ! * The cached value of the '{@link #getOclString() <em>Ocl String</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclString() * @generated * @ordered */ ! protected PrimitiveType oclString = null; /** ! * The cached value of the '{@link #getOclInteger() <em>Ocl Integer</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclInteger() * @generated * @ordered */ ! protected PrimitiveType oclInteger = null; /** ! * The cached value of the '{@link #getOclReal() <em>Ocl Real</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclReal() * @generated * @ordered */ ! protected PrimitiveType oclReal = null; /** ! * The cached value of the '{@link #getOclAny() <em>Ocl Any</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclAny() * @generated * @ordered */ ! protected AnyType oclAny = null; /** ! * The cached value of the '{@link #getOclVoid() <em>Ocl Void</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclVoid() * @generated * @ordered */ ! protected VoidType oclVoid = null; /** ! * The cached value of the '{@link #getOclInvalid() <em>Ocl Invalid</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclInvalid() * @generated * @ordered */ ! protected InvalidType oclInvalid = null; /** ! * The cached value of the '{@link #getOclType() <em>Ocl Type</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclType() * @generated * @ordered */ ! protected TypeType oclType = null; /** ! * The cached value of the '{@link #getOclCollection() <em>Ocl Collection</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclCollection() * @generated * @ordered */ ! protected CollectionType oclCollection = null; /** ! * The cached value of the '{@link #getOclSequence() <em>Ocl Sequence</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclSequence() * @generated * @ordered */ ! protected SequenceType oclSequence = null; /** ! * The cached value of the '{@link #getOclBag() <em>Ocl Bag</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclBag() * @generated * @ordered */ ! protected BagType oclBag = null; /** ! * The cached value of the '{@link #getOclSet() <em>Ocl Set</em>}' ! * reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclSet() * @generated * @ordered */ ! protected SetType oclSet = null; /** ! * The cached value of the '{@link #getOclOrderedSet() <em>Ocl Ordered Set</em>}' ! * containment reference. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclOrderedSet() * @generated * @ordered */ ! protected OrderedSetType oclOrderedSet = null; /** ! * The cached value of the '{@link #getOclTuple() <em>Ocl Tuple</em>}' ! * containment reference list. <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @see #getOclTuple() * @generated * @ordered */ ! protected EList<TupleType> oclTuple = null; /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 98,228 ---- /** ! * The cached value of the '{@link #getOclBoolean() <em>Ocl Boolean</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclBoolean() * @generated * @ordered */ ! protected PrimitiveType oclBoolean; /** ! * The cached value of the '{@link #getOclString() <em>Ocl String</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclString() * @generated * @ordered */ ! protected PrimitiveType oclString; /** ! * The cached value of the '{@link #getOclInteger() <em>Ocl Integer</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclInteger() * @generated * @ordered */ ! protected PrimitiveType oclInteger; /** ! * The cached value of the '{@link #getOclReal() <em>Ocl Real</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclReal() * @generated * @ordered */ ! protected PrimitiveType oclReal; /** ! * The cached value of the '{@link #getOclAny() <em>Ocl Any</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclAny() * @generated * @ordered */ ! protected AnyType oclAny; /** ! * The cached value of the '{@link #getOclVoid() <em>Ocl Void</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclVoid() * @generated * @ordered */ ! protected VoidType oclVoid; /** ! * The cached value of the '{@link #getOclInvalid() <em>Ocl Invalid</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclInvalid() * @generated * @ordered */ ! protected InvalidType oclInvalid; /** ! * The cached value of the '{@link #getOclType() <em>Ocl Type</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclType() * @generated * @ordered */ ! protected TypeType oclType; /** ! * The cached value of the '{@link #getOclCollection() <em>Ocl Collection</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclCollection() * @generated * @ordered */ ! protected CollectionType oclCollection; /** ! * The cached value of the '{@link #getOclSequence() <em>Ocl Sequence</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclSequence() * @generated * @ordered */ ! protected SequenceType oclSequence; /** ! * The cached value of the '{@link #getOclBag() <em>Ocl Bag</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclBag() * @generated * @ordered */ ! protected BagType oclBag; /** ! * The cached value of the '{@link #getOclSet() <em>Ocl Set</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclSet() * @generated * @ordered */ ! protected SetType oclSet; /** ! * The cached value of the '{@link #getOclOrderedSet() <em>Ocl Ordered Set</em>}' containment reference. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclOrderedSet() * @generated * @ordered */ ! protected OrderedSetType oclOrderedSet; /** ! * The cached value of the '{@link #getOclTuple() <em>Ocl Tuple</em>}' containment reference list. ! * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getOclTuple() * @generated * @ordered */ ! protected EList<TupleType> oclTuple; /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ *************** *** 248,252 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 233,236 ---- *************** *** 257,261 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 241,244 ---- *************** *** 276,280 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 259,262 ---- *************** *** 300,304 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 282,285 ---- *************** *** 309,313 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 290,293 ---- *************** *** 328,332 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 308,311 ---- *************** *** 352,356 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 331,334 ---- *************** *** 361,365 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 339,342 ---- *************** *** 380,384 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 357,360 ---- *************** *** 405,409 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 381,384 ---- *************** *** 414,418 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 389,392 ---- *************** *** 433,437 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 407,410 ---- *************** *** 458,462 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 431,434 ---- *************** *** 467,471 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 439,442 ---- *************** *** 486,490 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 457,460 ---- *************** *** 510,514 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 480,483 ---- *************** *** 519,523 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 488,491 ---- *************** *** 538,542 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 506,509 ---- *************** *** 562,566 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 529,532 ---- *************** *** 571,575 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 537,540 ---- *************** *** 590,594 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 555,558 ---- *************** *** 615,619 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 579,582 ---- *************** *** 628,632 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 591,594 ---- *************** *** 637,641 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 599,602 ---- *************** *** 656,660 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 617,620 ---- *************** *** 681,685 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 641,644 ---- *************** *** 690,694 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 649,652 ---- *************** *** 709,713 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 667,670 ---- *************** *** 733,737 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 690,693 ---- *************** *** 742,746 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 698,701 ---- *************** *** 761,765 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 716,719 ---- *************** *** 786,790 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 740,743 ---- *************** *** 795,799 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 748,751 ---- *************** *** 814,818 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 766,769 ---- *************** *** 838,842 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 789,792 ---- *************** *** 847,851 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 797,800 ---- *************** *** 866,870 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 815,818 ---- *************** *** 873,883 **** NotificationChain msgs = null; if (oclInvalid != null) ! msgs = ((InternalEObject) oclInvalid).eInverseRemove(this, ! EOPPOSITE_FEATURE_BASE - TypesPackageImpl.OCL_LIBRARY__OCL_INVALID, ! null, msgs); if (newOclInvalid != null) ! msgs = ((InternalEObject) newOclInvalid).eInverseAdd(this, ! EOPPOSITE_FEATURE_BASE - TypesPackageImpl.OCL_LIBRARY__OCL_INVALID, ! null, msgs); msgs = basicSetOclInvalid(newOclInvalid, msgs); if (msgs != null) msgs.dispatch(); --- 821,831 ---- NotificationChain msgs = null; if (oclInvalid != null) ! msgs = ((InternalEObject) oclInvalid) ! .eInverseRemove(this, TypesPackageImpl.INVALID_TYPE__OCL_LIBRARY, ! InvalidType.class, msgs); if (newOclInvalid != null) ! msgs = ((InternalEObject) newOclInvalid) ! .eInverseAdd(this, TypesPackageImpl.INVALID_TYPE__OCL_LIBRARY, ! InvalidType.class, msgs); msgs = basicSetOclInvalid(newOclInvalid, msgs); if (msgs != null) msgs.dispatch(); *************** *** 891,895 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 839,842 ---- *************** *** 900,904 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 847,850 ---- *************** *** 919,923 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 865,868 ---- *************** *** 1138,1143 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1083,1106 ---- /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, + NotificationChain msgs) { + switch (featureID) { + case TypesPackageImpl.OCL_LIBRARY__OCL_INVALID: + if (oclInvalid != null) + msgs = ((InternalEObject) oclInvalid).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE + - TypesPackageImpl.OCL_LIBRARY__OCL_INVALID, null, msgs); + return basicSetOclInvalid((InvalidType) otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ *************** *** 1180,1184 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1143,1146 ---- *************** *** 1220,1224 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1182,1185 ---- *************** *** 1276,1280 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1237,1240 ---- *************** *** 1330,1334 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1290,1293 ---- *************** *** 1370,1374 **** /** * <!-- begin-user-doc --> <!-- end-user-doc --> - * * @generated */ --- 1329,1332 ---- |
From: Matthias B. <mbr...@us...> - 2007-09-08 09:13:33
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/types In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7128/src/tudresden/ocl20/pivot/essentialocl/types Modified Files: OclLibrary.java Log Message: updated documentation for OclLibrary.getCollectionType operation Index: OclLibrary.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/types/OclLibrary.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** OclLibrary.java 12 Apr 2007 18:46:07 -0000 1.2 --- OclLibrary.java 8 Sep 2007 09:13:29 -0000 1.3 *************** *** 45,55 **** * <!-- begin-model-doc --> * <p> ! * The <code>OclLibrary</code> interface provides access to the types of the OCL Standard Library as defined in the OCL specification, Chapter 11. ! * ! * As EMF does not allow to model operations with class scope, the <code>OclLibrary<code> also provides a version of the {@link #makeTupleType() TupleType::make} operation (with JMI, this method would be located inside <code>TupleTypeClass</code>). ! * ! * The OCL Collection types for a particular element type can be retrieved with one of the corresponding, type-specific methods. ! * ! * Sensible implementations of this interface should cache previously created Tuple and Collection types. * </p> * <!-- end-model-doc --> --- 45,56 ---- * <!-- begin-model-doc --> * <p> ! * The <code>OclLibrary</code> interface provides access to the types of the ! * OCL Standard Library as defined in the OCL specification, Chapter 11. ! * As EMF does not allow to model operations with class scope, the ! * <code>OclLibrary<code> also provides a version of the ! * {@link #makeTupleType() TupleType::make} operation (with JMI, this method ! * would be located inside <code>TupleTypeClass</code>). ! * The OCL Collection types for a particular element type can be retrieved with ! * one of the corresponding, type-specific methods. * </p> * <!-- end-model-doc --> *************** *** 367,370 **** --- 368,372 ---- /** * Returns the value of the '<em><b>Ocl Invalid</b></em>' containment reference. + * It is bidirectional and its opposite is '{@link tudresden.ocl20.pivot.essentialocl.types.InvalidType#getOclLibrary <em>Ocl Library</em>}'. * <!-- begin-user-doc --> * <p> *************** *** 375,378 **** --- 377,381 ---- * @return the value of the '<em>Ocl Invalid</em>' containment reference. * @see #setOclInvalid(InvalidType) + * @see tudresden.ocl20.pivot.essentialocl.types.InvalidType#getOclLibrary * @generated */ *************** *** 418,425 **** /** ! * <!-- begin-user-doc --> Returns the {@link CollectionType} with the given element type. The ! * parameter <code>t</code> must not be <code>null</code> or ! * {@link #getOclInvalid() OclInvalid} (OCL 2.0 specification, Section 8.2.2). It may be ! * {@link #getOclVoid() OclVoid}, though. <!-- end-user-doc --> * @generated */ --- 421,433 ---- /** ! * <!-- begin-user-doc --> <!-- end-user-doc --> ! * <!-- begin-model-doc --> ! * <p> ! * Returns the {@link CollectionType} with the given element type. The ! * given <code>elementType</code> must not be <code>null</code> or ! * {@link #getOclInvalid() OclInvalid} (OCL 2.0 specification, Section 8.2.2). ! * It may be {@link #getOclVoid() OclVoid}, though. ! * </p> ! * <!-- end-model-doc --> * @generated */ |
From: Michael T. <s62...@ma...> - 2007-09-07 15:09:31
|
Hello, the Dresden OCL Toolkit will switch from cvs to svn because of better repository management. There will be time until sunday, 2007/09/09, to commit any pending changes. The completion of the process will be announced. Best wishes, Michael Thiele |
From: Matthias B. <mbr...@us...> - 2007-08-23 20:29:32
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv10912/src/tudresden/ocl20/pivot/parser/internal/xocl Modified Files: XOCLParser.java Log Message: fixed a bug in 'findOperation': now equals is used for comparison of parameters instead of ==, also corrected the error message thrown by tokenizePathName when empty path name is given Index: XOCLParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl/XOCLParser.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** XOCLParser.java 23 Aug 2007 17:40:40 -0000 1.14 --- XOCLParser.java 23 Aug 2007 20:29:29 -0000 1.15 *************** *** 1131,1135 **** // tokenize around the commas to get the parameter names and types ! if (parameters == StringUtils.EMPTY) { parametersArray = ArrayUtils.EMPTY_STRING_ARRAY; } --- 1131,1135 ---- // tokenize around the commas to get the parameter names and types ! if (parameters.equals(StringUtils.EMPTY)) { parametersArray = ArrayUtils.EMPTY_STRING_ARRAY; } *************** *** 1328,1332 **** if (StringUtils.isEmpty(pathName)) { throw new ParseRuntimeException( ! "Encountered an empty path name for a type", null); //$NON-NLS-1$ } --- 1328,1332 ---- if (StringUtils.isEmpty(pathName)) { throw new ParseRuntimeException( ! "Encountered an empty path name", null); //$NON-NLS-1$ } |
From: Matthias B. <mbr...@us...> - 2007-08-23 20:27:16
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv9771/src/tudresden/ocl20/pivot/essentialocl/expressions/impl Modified Files: OperationCallExpImpl.java Log Message: fixed bug with comparison of method names using identity instead of equality Index: OperationCallExpImpl.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl/OperationCallExpImpl.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** OperationCallExpImpl.java 15 Aug 2007 20:28:00 -0000 1.12 --- OperationCallExpImpl.java 23 Aug 2007 20:27:02 -0000 1.13 *************** *** 168,177 **** // bind 'allInstances' operation ! if (operationName == "allInstances") { //$NON-NLS-1$ referredOperation = bindAllInstancesOperation(referredOperation); } // bind 'oclAsType' operation ! else if (operationName == "oclAsType") { //$NON-NLS-1$ referredOperation = bindOclAsTypeOperation(referredOperation); } --- 168,177 ---- // bind 'allInstances' operation ! if (operationName.equals("allInstances")) { //$NON-NLS-1$ referredOperation = bindAllInstancesOperation(referredOperation); } // bind 'oclAsType' operation ! else if (operationName.equals("oclAsType")) { //$NON-NLS-1$ referredOperation = bindOclAsTypeOperation(referredOperation); } *************** *** 180,188 **** else if (getSourceType() instanceof CollectionType) { ! if (operationName == "flatten") { //$NON-NLS-1$ referredOperation = bindFlattenOperation(referredOperation); } ! else if (operationName == "product") { //$NON-NLS-1$ // TODO: bind 'product' } --- 180,188 ---- else if (getSourceType() instanceof CollectionType) { ! if (operationName.equals("flatten")) { //$NON-NLS-1$ referredOperation = bindFlattenOperation(referredOperation); } ! else if (operationName.equals("product")) { //$NON-NLS-1$ // TODO: bind 'product' } |
From: Matthias B. <mbr...@us...> - 2007-08-23 17:44:22
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv30254/src/tudresden/ocl20/pivot/parser Modified Files: AbstractOclParser.java Log Message: made parse() method final Index: AbstractOclParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/AbstractOclParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** AbstractOclParser.java 23 Aug 2007 17:40:40 -0000 1.1 --- AbstractOclParser.java 23 Aug 2007 17:44:18 -0000 1.2 *************** *** 42,46 **** * @throws ParseException if something goes wrong while parsing */ ! public void parse(URL url) throws ParseException { if (logger.isDebugEnabled()) { logger.debug("parse(url=" + url + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ --- 42,46 ---- * @throws ParseException if something goes wrong while parsing */ ! public final void parse(URL url) throws ParseException { if (logger.isDebugEnabled()) { logger.debug("parse(url=" + url + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ |
From: Matthias B. <mbr...@us...> - 2007-08-23 17:40:45
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv28249/src/tudresden/ocl20/pivot/parser/internal/xocl Modified Files: XOCLParser.java Log Message: small refactoring to make the parser API more extensible Index: XOCLParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl/XOCLParser.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** XOCLParser.java 19 Aug 2007 08:23:43 -0000 1.13 --- XOCLParser.java 23 Aug 2007 17:40:40 -0000 1.14 *************** *** 46,51 **** import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; - import org.apache.commons.lang.builder.ToStringBuilder; - import org.apache.commons.lang.builder.ToStringStyle; import org.apache.log4j.Logger; import org.eclipse.emf.common.util.URI; --- 46,49 ---- *************** *** 65,76 **** import tudresden.ocl20.pivot.essentialocl.types.CollectionType; import tudresden.ocl20.pivot.modelbus.FactoryException; - import tudresden.ocl20.pivot.modelbus.IModel; import tudresden.ocl20.pivot.modelbus.IModelFactory; import tudresden.ocl20.pivot.modelbus.ITypeResolver; import tudresden.ocl20.pivot.modelbus.ModelAccessException; import tudresden.ocl20.pivot.modelbus.TypeNotFoundException; import tudresden.ocl20.pivot.parser.IOclParser; import tudresden.ocl20.pivot.parser.ParseException; - import tudresden.ocl20.pivot.parser.ParserPlugin; import tudresden.ocl20.pivot.parser.internal.ParserMessages; import tudresden.ocl20.pivot.pivotmodel.ConstrainableElement; --- 63,73 ---- import tudresden.ocl20.pivot.essentialocl.types.CollectionType; import tudresden.ocl20.pivot.modelbus.FactoryException; import tudresden.ocl20.pivot.modelbus.IModelFactory; import tudresden.ocl20.pivot.modelbus.ITypeResolver; import tudresden.ocl20.pivot.modelbus.ModelAccessException; import tudresden.ocl20.pivot.modelbus.TypeNotFoundException; + import tudresden.ocl20.pivot.parser.AbstractOclParser; import tudresden.ocl20.pivot.parser.IOclParser; import tudresden.ocl20.pivot.parser.ParseException; import tudresden.ocl20.pivot.parser.internal.ParserMessages; import tudresden.ocl20.pivot.pivotmodel.ConstrainableElement; *************** *** 118,140 **** /** ! * * * @author Matthias Braeuer * @version 1.0 17.04.2007 */ ! public class XOCLParser implements IOclParser { ! ! // a logger for this class ! private static final Logger logger = ParserPlugin.getLogger(XOCLParser.class); ! ! // a cached reference to the model that is the base of OCL expressions parsed ! // by this parser ! private IModel model; ! ! // a cached reference to the model factory ! protected IModelFactory modelFactory; ! ! // a cached reference to the type resolver ! protected ITypeResolver typeResolver; /** --- 115,124 ---- /** ! * A parser for XOCL expressions. * * @author Matthias Braeuer * @version 1.0 17.04.2007 */ ! public class XOCLParser extends AbstractOclParser implements IOclParser { /** *************** *** 152,155 **** --- 136,142 ---- private Map<VariableXS, Variable> variables; + // the cached model factory + private IModelFactory modelFactory; + /** * Creates a new <code>ModelSwitch</code> instance. *************** *** 157,163 **** * @param variables the map of variables visible in the scope of the * associated <code>ExpressionInOcl</code> */ ! public ModelSwitch(Map<VariableXS, Variable> variables) { this.variables = variables; } --- 144,153 ---- * @param variables the map of variables visible in the scope of the * associated <code>ExpressionInOcl</code> + * @param modelFactory2 */ ! public ModelSwitch(Map<VariableXS, Variable> variables, ! IModelFactory modelFactory) { this.variables = variables; + this.modelFactory = modelFactory; } *************** *** 339,343 **** if (variable == null) { ! variable = createVariable(variableXS, this); variables.put(variableXS, variable); } --- 329,333 ---- if (variable == null) { ! variable = createVariable(variableXS, this, modelFactory); variables.put(variableXS, variable); } *************** *** 584,588 **** try { part = modelFactory.createTupleLiteralPart(createVariable( ! tupleLiteralPartXS.getVariableDeclaration(), this)); } --- 574,578 ---- try { part = modelFactory.createTupleLiteralPart(createVariable( ! tupleLiteralPartXS.getVariableDeclaration(), this, modelFactory)); } *************** *** 619,623 **** for (VariableXS iteratorXS : expression.getIterator()) { ! Variable iteratorVar = createVariable(iteratorXS, this); iterator.add(iteratorVar); --- 609,613 ---- for (VariableXS iteratorXS : expression.getIterator()) { ! Variable iteratorVar = createVariable(iteratorXS, this, modelFactory); iterator.add(iteratorVar); *************** *** 628,632 **** // create the accumulator variable ! result = createVariable(expression.getResult(), this); variables.put(expression.getResult(), result); --- 618,622 ---- // create the accumulator variable ! result = createVariable(expression.getResult(), this, modelFactory); variables.put(expression.getResult(), result); *************** *** 657,661 **** for (VariableXS variableXS : expression.getIterator()) { ! Variable iteratorVariable = createVariable(variableXS, this); iteratorVars.add(iteratorVariable); --- 647,652 ---- for (VariableXS variableXS : expression.getIterator()) { ! Variable iteratorVariable = createVariable(variableXS, this, ! modelFactory); iteratorVars.add(iteratorVariable); *************** *** 722,730 **** protected class ParseRuntimeException extends RuntimeException { - /** - * Logger for this class - */ - private final Logger logger = Logger.getLogger(ParseRuntimeException.class); - // default serial version id private static final long serialVersionUID = 1L; --- 713,716 ---- *************** *** 740,805 **** /** ! * Creates a new <code>XOCLParser</code> instance. ! * ! * @param model the model which OCL expressions should be added to ! */ ! public XOCLParser(IModel model) { ! if (logger.isDebugEnabled()) { ! logger.debug("XOCLParser(model=" + model + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ ! } ! ! // precondition check ! if (model == null) { ! throw new IllegalArgumentException("The model must not be null."); //$NON-NLS-1$ ! } ! ! // initialize ! this.model = model; ! ! // get the model factory from the model ! modelFactory = model.getFactory(); ! ! if (modelFactory == null) { ! throw new IllegalStateException( ! "No model factory found for model '" + model.getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ ! } ! ! // get the type resolver ! typeResolver = model.getTypeResolver(); ! ! if (typeResolver == null) { ! throw new IllegalStateException( ! "No type resolver found for model '" + model.getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ ! } ! ! if (logger.isDebugEnabled()) { ! logger.debug("XOCLParser() - exit"); //$NON-NLS-1$ ! } ! } ! ! /* ! * (non-Javadoc) ! * ! * @see tudresden.ocl20.pivot.parser.IOclParser#parse(java.net.URL, ! * tudresden.ocl20.pivot.modelbus.IModel) */ ! public void parse(URL url) throws ParseException { ! if (logger.isDebugEnabled()) { ! logger.debug("parse(url=" + url + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ ! } ! NamespaceXS declaredPackage; String declaredPackageName; Namespace targetNamespace; - // check parameters - if (url == null) { - throw new IllegalArgumentException("The URL must not be null."); //$NON-NLS-1$ - } - - if (logger.isInfoEnabled()) { - logger.info(NLS.bind(ParserMessages.XOCLParser_Parsing, url)); - } - // get the top package and its name declaredPackage = getDeclaredPackage(loadResource(url)); --- 726,737 ---- /** ! * Implements parsing for XOCL files. */ ! @Override ! public void doParse(URL url) throws ParseException { NamespaceXS declaredPackage; String declaredPackageName; Namespace targetNamespace; // get the top package and its name declaredPackage = getDeclaredPackage(loadResource(url)); *************** *** 824,833 **** // create the constraint and add it to the target namespace ! targetNamespace ! .addRule(createConstraint(constraint, declaredPackageName)); ! } ! ! if (logger.isDebugEnabled()) { ! logger.debug("parse() - exit"); //$NON-NLS-1$ } } --- 756,761 ---- // create the constraint and add it to the target namespace ! targetNamespace.addRule(createConstraint(constraint, declaredPackageName, ! getModelFactory())); } } *************** *** 922,926 **** try { ! targetNamespace = model.findNamespace(tokenizePathName(pathName)); } --- 850,854 ---- try { ! targetNamespace = getModel().findNamespace(tokenizePathName(pathName)); } *************** *** 929,933 **** throw new ParseException( "Error while looking up namespace '" + pathName + "' in model '" //$NON-NLS-1$ //$NON-NLS-2$ ! + model.getDisplayName() + "'."); //$NON-NLS-1$ } --- 857,861 ---- throw new ParseException( "Error while looking up namespace '" + pathName + "' in model '" //$NON-NLS-1$ //$NON-NLS-2$ ! + getModel().getDisplayName() + "'."); //$NON-NLS-1$ } *************** *** 946,950 **** */ protected Constraint createConstraint(ConstraintXS constraintXS, ! String packageName) throws ParseException { if (logger.isDebugEnabled()) { --- 874,878 ---- */ protected Constraint createConstraint(ConstraintXS constraintXS, ! String packageName, IModelFactory modelFactory) throws ParseException { if (logger.isDebugEnabled()) { *************** *** 964,971 **** // find the constrained element constrainedElement = findConstrainedElement(packageName, constraintXS ! .getConstrainedElement(), constraintKind); // create the specification expression ! specification = createExpressionInOcl(constraintXS.getSpecification()); // create the constraint --- 892,900 ---- // find the constrained element constrainedElement = findConstrainedElement(packageName, constraintXS ! .getConstrainedElement(), constraintKind, getTypeResolver()); // create the specification expression ! specification = createExpressionInOcl(constraintXS.getSpecification(), ! modelFactory); // create the constraint *************** *** 1043,1050 **** /** ! * Helper method to look for a {@link ConstrainableElement} in the model. */ protected ConstrainableElement findConstrainedElement(String packageName, ! String constrainedElementName, ConstraintKind constraintKind) { if (logger.isDebugEnabled()) { --- 972,980 ---- /** ! * Helper method to look for a {@link ConstrainableElement} in the getModel(). */ protected ConstrainableElement findConstrainedElement(String packageName, ! String constrainedElementName, ConstraintKind constraintKind, ! ITypeResolver typeResolver) { if (logger.isDebugEnabled()) { *************** *** 1075,1084 **** case INVARIANT: case DEFINITION: ! element = findType(pathName); break; case DERIVED: case INITIAL: ! element = findProperty(pathName); break; --- 1005,1014 ---- case INVARIANT: case DEFINITION: ! element = findType(pathName, typeResolver); break; case DERIVED: case INITIAL: ! element = findProperty(pathName, typeResolver); break; *************** *** 1086,1090 **** case PRECONDITION: case POSTCONDITION: ! element = findOperation(pathName); break; } --- 1016,1020 ---- case PRECONDITION: case POSTCONDITION: ! element = findOperation(pathName, typeResolver); break; } *************** *** 1095,1099 **** "Failed to locate the constrained element '" //$NON-NLS-1$ + constrainedElementName ! + "' in model '" + model.getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ } --- 1025,1029 ---- "Failed to locate the constrained element '" //$NON-NLS-1$ + constrainedElementName ! + "' in model '" + getModel().getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ } *************** *** 1106,1112 **** /** ! * Helper method to find a type in the associated model. */ ! protected Type findType(List<String> pathName) { Type type; --- 1036,1042 ---- /** ! * Helper method to find a type in the associated getModel(). */ ! protected Type findType(List<String> pathName, ITypeResolver typeResolver) { Type type; *************** *** 1118,1122 **** logger.error("findType(pathName=" + pathName + ")", e); //$NON-NLS-1$//$NON-NLS-2$ throw new ParseRuntimeException("An error occured when accessing model '" //$NON-NLS-1$ ! + model.getDisplayName() + "'.", e); //$NON-NLS-1$ } --- 1048,1052 ---- logger.error("findType(pathName=" + pathName + ")", e); //$NON-NLS-1$//$NON-NLS-2$ throw new ParseRuntimeException("An error occured when accessing model '" //$NON-NLS-1$ ! + getModel().getDisplayName() + "'.", e); //$NON-NLS-1$ } *************** *** 1131,1137 **** /** ! * Helper method to find a property in the associated model. */ ! protected Property findProperty(List<String> pathName) { if (logger.isDebugEnabled()) { logger.debug("findProperty(pathName=" + pathName + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ --- 1061,1068 ---- /** ! * Helper method to find a property in the associated getModel(). */ ! protected Property findProperty(List<String> pathName, ! ITypeResolver typeResolver) { if (logger.isDebugEnabled()) { logger.debug("findProperty(pathName=" + pathName + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ *************** *** 1142,1146 **** // find the contextual type ! contextualType = findContextualType(pathName); // split off the type of the property if existent --- 1073,1077 ---- // find the contextual type ! contextualType = findContextualType(pathName, typeResolver); // split off the type of the property if existent *************** *** 1156,1161 **** // TODO: theoretically, we should check whether the declared type equals the ! // actual type ! // but in this prototypical parser, we do without it if (logger.isDebugEnabled()) { --- 1087,1091 ---- // TODO: theoretically, we should check whether the declared type equals the ! // actual type but in this prototypical parser, we do without it if (logger.isDebugEnabled()) { *************** *** 1169,1178 **** * Helper method to find an operation in the associated model. */ ! protected Operation findOperation(List<String> pathName) { Type contextualType; Operation operation = null; // find the contextual type ! contextualType = findContextualType(pathName); // instantiate a regular expression to match operations and extract their --- 1099,1109 ---- * Helper method to find an operation in the associated model. */ ! protected Operation findOperation(List<String> pathName, ! ITypeResolver typeResolver) { Type contextualType; Operation operation = null; // find the contextual type ! contextualType = findContextualType(pathName, typeResolver); // instantiate a regular expression to match operations and extract their *************** *** 1218,1222 **** for (String typeName : parametersArray) { ! parameterTypes.add(findType(tokenizePathName(typeName))); } --- 1149,1153 ---- for (String typeName : parametersArray) { ! parameterTypes.add(findType(tokenizePathName(typeName), typeResolver)); } *************** *** 1232,1237 **** * constraint. */ ! private Type findContextualType(List<String> pathName) { ! Type contextualType = findType(pathName.subList(0, pathName.size() - 1)); if (contextualType == null) { --- 1163,1173 ---- * constraint. */ ! private Type findContextualType(List<String> pathName, ! ITypeResolver typeResolver) { ! Type contextualType; ! ! // lookup the type ! contextualType = findType(pathName.subList(0, pathName.size() - 1), ! typeResolver); if (contextualType == null) { *************** *** 1248,1252 **** */ protected ExpressionInOcl createExpressionInOcl( ! ExpressionInOclXS expressionInOclXS) { if (logger.isDebugEnabled()) { logger.debug("createExpressionInOcl(expressionInOclXS=" //$NON-NLS-1$ --- 1184,1188 ---- */ protected ExpressionInOcl createExpressionInOcl( ! ExpressionInOclXS expressionInOclXS, IModelFactory modelFactory) { if (logger.isDebugEnabled()) { logger.debug("createExpressionInOcl(expressionInOclXS=" //$NON-NLS-1$ *************** *** 1271,1275 **** // create a new model switch ! modelSwitch = new ModelSwitch(variables); // create the various variables of the expression in OCL and cache them --- 1207,1211 ---- // create a new model switch ! modelSwitch = new ModelSwitch(variables, modelFactory); // create the various variables of the expression in OCL and cache them *************** *** 1283,1287 **** contextVariable = createVariable(expressionInOclXS.getContext(), ! modelSwitch); variables.put(contextVariableXS, contextVariable); --- 1219,1223 ---- contextVariable = createVariable(expressionInOclXS.getContext(), ! modelSwitch, modelFactory); variables.put(contextVariableXS, contextVariable); *************** *** 1289,1293 **** if (resultVariableXS != null) { ! resultVariable = createVariable(resultVariableXS, modelSwitch); variables.put(resultVariableXS, resultVariable); } --- 1225,1230 ---- if (resultVariableXS != null) { ! resultVariable = createVariable(resultVariableXS, modelSwitch, ! modelFactory); variables.put(resultVariableXS, resultVariable); } *************** *** 1298,1302 **** for (VariableXS parameterVariableXS : expressionInOclXS.getParameter()) { Variable parameterVariable = createVariable(parameterVariableXS, ! modelSwitch); parameterVariables.add(parameterVariable); variables.put(parameterVariableXS, parameterVariable); --- 1235,1239 ---- for (VariableXS parameterVariableXS : expressionInOclXS.getParameter()) { Variable parameterVariable = createVariable(parameterVariableXS, ! modelSwitch, modelFactory); parameterVariables.add(parameterVariable); variables.put(parameterVariableXS, parameterVariable); *************** *** 1311,1316 **** if (logger.isDebugEnabled()) { ! logger ! .debug("createExpressionInOcl() - exit - return value=" + expressionInOcl); //$NON-NLS-1$ } --- 1248,1253 ---- if (logger.isDebugEnabled()) { ! logger.debug("createExpressionInOcl() - exit - return value=" //$NON-NLS-1$ ! + expressionInOcl); } *************** *** 1323,1327 **** @SuppressWarnings("unchecked") protected Variable createVariable(VariableXS variableXS, ! ModelSwitch modelSwitch) { if (logger.isDebugEnabled()) { logger.debug("createVariable(variableXS=" + variableXS + ", modelSwitch=" //$NON-NLS-1$ //$NON-NLS-2$ --- 1260,1264 ---- @SuppressWarnings("unchecked") protected Variable createVariable(VariableXS variableXS, ! ModelSwitch modelSwitch, IModelFactory modelFactory) { if (logger.isDebugEnabled()) { logger.debug("createVariable(variableXS=" + variableXS + ", modelSwitch=" //$NON-NLS-1$ //$NON-NLS-2$ *************** *** 1397,1419 **** } - /* - * (non-Javadoc) - * - * @see tudresden.ocl20.pivot.parser.IOclParser#dispose() - */ - public void dispose() { - model = null; - modelFactory = null; - } - - /** - * Return a string representation of this parser. - */ - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append( - "model", model) //$NON-NLS-1$ - .toString(); - } - } --- 1334,1336 ---- |
From: Matthias B. <mbr...@us...> - 2007-08-23 17:40:45
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv28249/src/tudresden/ocl20/pivot/parser Modified Files: IOclParser.java ParserPlugin.java Added Files: AbstractOclParser.java Log Message: small refactoring to make the parser API more extensible --- NEW FILE --- package tudresden.ocl20.pivot.parser; import org.apache.log4j.Logger; import java.net.URL; import org.apache.commons.lang.NullArgumentException; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.eclipse.osgi.util.NLS; import tudresden.ocl20.pivot.modelbus.IModel; import tudresden.ocl20.pivot.modelbus.IModelFactory; import tudresden.ocl20.pivot.modelbus.ITypeResolver; import tudresden.ocl20.pivot.parser.internal.ParserMessages; /** * An abstract base implementation of the {@link IOclParser} interface. * * @author Matthias Braeuer * @version 1.0 23.08.2007 */ public abstract class AbstractOclParser implements IOclParser { // logger for this class and subclasses protected final Logger logger = ParserPlugin.getLogger(getClass()); // a cached reference to the model for which to evaluate OCL expressions private IModel model; // a cached reference to the model factory private IModelFactory modelFactory; // a cached reference to the type resolver private ITypeResolver typeResolver; /** * Checks the parameter and verifies that a model has been set. * * @param url the URL with OCL expressions * * @throws ParseException if something goes wrong while parsing */ public void parse(URL url) throws ParseException { if (logger.isDebugEnabled()) { logger.debug("parse(url=" + url + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ } // check precondition if (url == null) { throw new NullArgumentException("url"); //$NON-NLS-1$ } // check invariant if (model == null) { throw new IllegalStateException( "No model has been set for the OCL parser."); //$NON-NLS-1$ } // log an info message if (logger.isInfoEnabled()) { logger.info(NLS.bind(ParserMessages.XOCLParser_Parsing, url)); } // leave actual parsing to subclasses doParse(url); if (logger.isDebugEnabled()) { logger.debug("parse() - exit"); //$NON-NLS-1$ } } /** * Primitive method used by the template method {@link #parse(URL)}. * Subclasses should override and implement * * @param url the URL to load expressions from */ public abstract void doParse(URL url) throws ParseException; /** * Returns the cached model or <code>null</code>. */ public IModel getModel() { return model; } /** * Sets the model to be used by the parser. * * @param model the model, must not be <code>null</code> * * @throws NullArgumentException if <code>model</code> is * {@link NullArgumentException} */ public void setModel(IModel model) { // precondition check if (model == null) { throw new NullArgumentException("model"); //$NON-NLS-1$ } // initialize this.model = model; // reset the model factory and type resolver modelFactory = null; typeResolver = null; } /** * This implementation does nothing */ public void dispose() { // do nothing by default } /** * Returns the {@link IModelFactory model factory} that is associated with the * currently set {@link IModel model}. This method lazily gets the model * factory and checks that a model has been initialized. If not, an * {@link IllegalStateException} is thrown. Subclasses might want to cache the * model factory once obtained to improve performance. * * @return an <code>IModelFactory</code> instance */ protected IModelFactory getModelFactory() { // lazily get the model factory if (modelFactory == null) { if (model == null) { throw new IllegalStateException( "No model has been set for this parser."); //$NON-NLS-1$ } // get the model factory from the model modelFactory = model.getFactory(); if (modelFactory == null) { throw new IllegalStateException( "No model factory found for model '" + model.getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ } } return modelFactory; } /** * Returns the {@link ITypeResolver type resolver} that is associated with the * currently set {@link IModel model}. This method lazily gets the type * resolver and checks that a model has been initialized. If not, an * {@link IllegalStateException} is thrown. Subclasses might want to cache the * type resolver once obtained to improve performance. * * @return an <code>ITypeResolver</code> instance */ protected ITypeResolver getTypeResolver() { // lazily get the model factory if (typeResolver == null) { if (model == null) { throw new IllegalStateException( "No model has been set for this parser."); //$NON-NLS-1$ } // get the model factory from the model typeResolver = model.getTypeResolver(); if (typeResolver == null) { throw new IllegalStateException( "No type resolver found for model '" + model.getDisplayName() + "'."); //$NON-NLS-1$ //$NON-NLS-2$ } } return typeResolver; } /** * Return a string representation of this parser. */ @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append( "model", model).toString(); //$NON-NLS-1$ } } Index: IOclParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/IOclParser.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** IOclParser.java 21 Apr 2007 06:07:36 -0000 1.1 --- IOclParser.java 23 Aug 2007 17:40:40 -0000 1.2 *************** *** 35,38 **** --- 35,42 ---- import java.net.URL; + import org.apache.commons.lang.NullArgumentException; + + import tudresden.ocl20.pivot.modelbus.IModel; + /** * *************** *** 44,55 **** /** ! * Parses OCL expressions from the given <code>URL</code>. * * @param url a <code>URL</code> from where to load OCL expressions * ! * @throws ParseException when an error occurs */ void parse(URL url) throws ParseException; ! /** * Dispose any resources held by this parser. --- 48,81 ---- /** ! * Parses OCL expressions from the given <code>URL</code>. The URL should ! * point to a file or other resource that can be interpreted by a parser ! * implementing this interface. * * @param url a <code>URL</code> from where to load OCL expressions * ! * @throws ParseException when an error occurs, reasons include an invalid ! * URL, a malformed OCL expression or problems relating to the model ! * @throws IllegalStateException if no model has been set yet */ void parse(URL url) throws ParseException; ! ! /** ! * Returns the model this parser uses as a reference for evaluating OCL ! * expressions. Returns <code>null</code> if no model has been set yet. ! * ! * @return an <code>IModel</code> instance or <code>null</code> ! */ ! IModel getModel(); ! ! /** ! * Sets the {@link IModel model} to be used for evaluating expressions. ! * ! * @param model the model, must not be <code>null</code> ! * ! * @exception NullArgumentException if <code>model</code> is ! * <code>null</code> ! */ ! void setModel(IModel model); ! /** * Dispose any resources held by this parser. Index: ParserPlugin.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/ParserPlugin.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** ParserPlugin.java 15 May 2007 20:49:25 -0000 1.2 --- ParserPlugin.java 23 Aug 2007 17:40:40 -0000 1.3 *************** *** 54,60 **** // The shared instance private static ParserPlugin plugin; ! // a map of cached parsers ! private Map<IModel,IOclParser> parsers; /** --- 54,60 ---- // The shared instance private static ParserPlugin plugin; ! // a map of cached parsers ! private Map<IModel, IOclParser> parsers; /** *************** *** 83,94 **** @Override public void stop(BundleContext context) throws Exception { ! // dipose all parsers for (IOclParser parser : parsers.values()) { parser.dispose(); } ! parsers.clear(); ! plugin = null; super.stop(context); --- 83,94 ---- @Override public void stop(BundleContext context) throws Exception { ! // dipose all parsers for (IOclParser parser : parsers.values()) { parser.dispose(); } ! parsers.clear(); ! plugin = null; super.stop(context); *************** *** 103,108 **** return plugin; } ! ! /** * Returns the {@link IOclParser OCL parser} managed by the plugin. --- 103,107 ---- return plugin; } ! /** * Returns the {@link IOclParser OCL parser} managed by the plugin. *************** *** 112,146 **** public static IOclParser getParser(IModel model) { IOclParser parser; ! // check that the plugin has been activated if (plugin == null) { ! throw new IllegalStateException("The OCL parser plug-in has not been activated."); //$NON-NLS-1$ } ! // check the argument if (model == null) { ! throw new IllegalArgumentException("The model to be used for parsing must not be null."); //$NON-NLS-1$ } ! // lazily create the map of parsers if (plugin.parsers == null) { plugin.parsers = new HashMap<IModel, IOclParser>(); } ! // try to retrieve a previously created parser parser = plugin.parsers.get(model); ! // create a new parser if necessary if (parser == null) { ! parser = new XOCLParser(model); ! plugin.parsers.put(model,parser); } ! return parser; } /** ! * Facade method for the classes in this plugin that hides the dependency from the ! * <code>tudresden.ocl20.logging</code> plugin. * * @param clazz the class to return the logger for --- 111,148 ---- public static IOclParser getParser(IModel model) { IOclParser parser; ! // check that the plugin has been activated if (plugin == null) { ! throw new IllegalStateException( ! "The OCL parser plug-in has not been activated."); //$NON-NLS-1$ } ! // check the argument if (model == null) { ! throw new IllegalArgumentException( ! "The model to be used for parsing must not be null."); //$NON-NLS-1$ } ! // lazily create the map of parsers if (plugin.parsers == null) { plugin.parsers = new HashMap<IModel, IOclParser>(); } ! // try to retrieve a previously created parser parser = plugin.parsers.get(model); ! // create a new parser if necessary if (parser == null) { ! parser = new XOCLParser(); ! parser.setModel(model); ! plugin.parsers.put(model, parser); } ! return parser; } /** ! * Facade method for the classes in this plugin that hides the dependency from ! * the <code>tudresden.ocl20.logging</code> plugin. * * @param clazz the class to return the logger for |
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.xocl.edit/src/tudresden/ocl20/pivot/xocl/provider In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7885/src/tudresden/ocl20/pivot/xocl/provider Modified Files: LoopExpXSItemProvider.java IteratorExpXSItemProvider.java IterateExpXSItemProvider.java Log Message: implemented rendering of iterate expressions Index: LoopExpXSItemProvider.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.xocl.edit/src/tudresden/ocl20/pivot/xocl/provider/LoopExpXSItemProvider.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** LoopExpXSItemProvider.java 16 Aug 2007 01:34:50 -0000 1.4 --- LoopExpXSItemProvider.java 19 Aug 2007 08:24:05 -0000 1.5 *************** *** 34,39 **** --- 34,41 ---- import java.util.Collection; + import java.util.Iterator; import java.util.List; + import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; *************** *** 49,69 **** import tudresden.ocl20.pivot.xocl.LoopExpXS; import tudresden.ocl20.pivot.xocl.XOCLFactory; import tudresden.ocl20.pivot.xocl.XOCLPackage; /** ! * This is the item provider adapter for a {@link tudresden.ocl20.pivot.xocl.LoopExpXS} object. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> ! * @generated */ ! public class LoopExpXSItemProvider extends CallExpXSItemProvider implements ! IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { /** ! * This constructs an instance from a factory and a notifier. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 51,71 ---- import tudresden.ocl20.pivot.xocl.LoopExpXS; + import tudresden.ocl20.pivot.xocl.OclExpressionXS; + import tudresden.ocl20.pivot.xocl.VariableXS; import tudresden.ocl20.pivot.xocl.XOCLFactory; import tudresden.ocl20.pivot.xocl.XOCLPackage; /** ! * This is the item provider adapter for a ! * {@link tudresden.ocl20.pivot.xocl.LoopExpXS} object. */ ! public abstract class LoopExpXSItemProvider extends CallExpXSItemProvider ! implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { /** ! * This constructs an instance from a factory and a notifier. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 73,79 **** /** ! * This returns the property descriptors for the adapted class. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 75,81 ---- /** ! * This returns the property descriptors for the adapted class. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 88,96 **** /** ! * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an ! * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 90,100 ---- /** ! * This specifies how to implement {@link #getChildren} and is used to deduce ! * an appropriate feature for an ! * {@link org.eclipse.emf.edit.command.AddCommand}, ! * {@link org.eclipse.emf.edit.command.RemoveCommand} or * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. ! * <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 107,117 **** /** ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ @Override protected EStructuralFeature getChildFeature(Object object, Object child) { ! // Check the type of the specified child object and return the proper feature to use for // adding (see {@link AddCommand}) it as a child. --- 111,122 ---- /** ! * <!-- begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ @Override protected EStructuralFeature getChildFeature(Object object, Object child) { ! // Check the type of the specified child object and return the proper ! // feature to use for // adding (see {@link AddCommand}) it as a child. *************** *** 121,139 **** /** * This returns the label text for the adapted class. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> ! * @generated */ @Override public String getText(Object object) { ! return getString("_UI_LoopExpXS_type"); //$NON-NLS-1$ } /** ! * This handles model notifications by calling {@link #updateChildren} to update any cached ! * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. * * <p> ! * Adapted to update the entire tree if the iterator or body expression changes * * @generated NOT --- 126,221 ---- /** * This returns the label text for the adapted class. ! * ! * <p> ! * Adapted to reflect OCL concrete syntax. ! * </p> ! * ! * @generated NOT */ @Override public String getText(Object object) { ! LoopExpXS loopExp = (LoopExpXS) object; ! ! StringBuilder label; ! OclExpressionXS source; ! String loopOperation; ! ! // get the source of the loop expression ! source = loopExp.getSource(); ! ! // initialize the label with the source label or the default label ! label = new StringBuilder(source != null ? getLabel(source) : UNDEFINED); ! ! // get the referred iterator expression ! loopOperation = getLoopOperationName(loopExp); ! ! // only add the iterator stuff when an iterator has been selected ! if (StringUtils.isNotEmpty(loopOperation)) { ! ! // add operator, name of loop operation and opening parenthesis ! label.append("->").append(loopOperation).append('('); //$NON-NLS-1$ ! ! // append the iterators ! for (Iterator<VariableXS> it = loopExp.getIterator().iterator(); it ! .hasNext();) { ! label.append(getLabel(it.next())); ! ! if (it.hasNext()) { ! label.append(", "); //$NON-NLS-1$ ! } ! } ! ! // append an additional result variable if provided by subclasses ! String resultVariable = getResultVariable(loopExp); ! ! if (resultVariable != null) { ! label.append("; ").append(resultVariable).append(" "); //$NON-NLS-1$//$NON-NLS-2$ ! } ! ! // append the vertical bar if there have been iterators defined ! if (!loopExp.getIterator().isEmpty() || resultVariable != null) { ! label.append(" | "); //$NON-NLS-1$ ! } ! ! // append the body expression ! String bodyLabel = getLabel(loopExp.getBody()); ! label.append(StringUtils.isNotEmpty(bodyLabel) ? bodyLabel : UNDEFINED); ! ! // append closing parenthesis ! label.append(')'); ! } ! ! // if all parts are missing return the default string ! return label.length() != 0 ? label.toString() : getDefaultString(); } /** ! * Is overridden by {@link IterateExpXSItemProvider} to add the result ! * variabke. This implementation simply returns <code>null</code>. ! */ ! protected String getResultVariable(LoopExpXS loopExp) { ! return null; ! } ! ! /** ! * Returns the default string for this loop expression when not enough ! * information has been provided to render a proper label. ! */ ! protected abstract String getDefaultString(); ! ! /** ! * Returns the name of the loop operation. This can be the name of the ! * iterator, for instance. ! */ ! protected abstract String getLoopOperationName(LoopExpXS loopExp); ! ! /** ! * This handles model notifications by calling {@link #updateChildren} to ! * update any cached children and by creating a viewer notification, which it ! * passes to {@link #fireNotifyChanged}. * * <p> ! * Adapted to update the entire tree if the iterator or body expression ! * changes * * @generated NOT *************** *** 155,162 **** /** ! * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children ! * that can be created under this object. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 237,244 ---- /** ! * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s ! * describing the children that can be created under this object. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 256,262 **** /** ! * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 338,345 ---- /** ! * This returns the label text for ! * {@link org.eclipse.emf.edit.command.CreateChildCommand}. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 279,285 **** /** ! * Return the resource locator for this item provider's resources. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 362,368 ---- /** ! * Return the resource locator for this item provider's resources. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ Index: IteratorExpXSItemProvider.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.xocl.edit/src/tudresden/ocl20/pivot/xocl/provider/IteratorExpXSItemProvider.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** IteratorExpXSItemProvider.java 16 Aug 2007 01:34:50 -0000 1.4 --- IteratorExpXSItemProvider.java 19 Aug 2007 08:24:05 -0000 1.5 *************** *** 34,41 **** import java.util.Collection; - import java.util.Iterator; import java.util.List; - import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; --- 34,39 ---- *************** *** 51,62 **** import tudresden.ocl20.pivot.xocl.IteratorExpXS; ! import tudresden.ocl20.pivot.xocl.OclExpressionXS; ! import tudresden.ocl20.pivot.xocl.VariableXS; import tudresden.ocl20.pivot.xocl.XOCLPackage; /** ! * This is the item provider adapter for a {@link tudresden.ocl20.pivot.xocl.IteratorExpXS} object. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 49,61 ---- import tudresden.ocl20.pivot.xocl.IteratorExpXS; ! import tudresden.ocl20.pivot.xocl.IteratorExpressionXS; ! import tudresden.ocl20.pivot.xocl.LoopExpXS; import tudresden.ocl20.pivot.xocl.XOCLPackage; /** ! * This is the item provider adapter for a ! * {@link tudresden.ocl20.pivot.xocl.IteratorExpXS} object. <!-- begin-user-doc ! * --> <!-- end-user-doc --> ! * * @generated */ *************** *** 66,72 **** /** ! * This constructs an instance from a factory and a notifier. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 65,71 ---- /** ! * This constructs an instance from a factory and a notifier. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 76,82 **** /** ! * This returns the property descriptors for the adapted class. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 75,81 ---- /** ! * This returns the property descriptors for the adapted class. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 92,98 **** /** ! * This adds a property descriptor for the Name feature. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 91,97 ---- /** ! * This adds a property descriptor for the Name feature. <!-- begin-user-doc ! * --> <!-- end-user-doc --> ! * * @generated */ *************** *** 111,117 **** /** ! * This returns IteratorExpXS.gif. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 110,116 ---- /** ! * This returns IteratorExpXS.gif. <!-- begin-user-doc --> <!-- end-user-doc ! * --> ! * * @generated */ *************** *** 126,130 **** * * <p> ! * Adapted to reflect the OCL concrete syntax. * </p> * --- 125,130 ---- * * <p> ! * Adapted to reflect the OCL concrete syntax. This simply forwards to the ! * super{@link #getText(Object) super implementation}. * </p> * *************** *** 133,185 **** @Override public String getText(Object object) { ! IteratorExpXS iteratorExp = (IteratorExpXS) object; ! ! // get the source of the iterator expression ! OclExpressionXS source = iteratorExp.getSource(); ! ! // initialize the label with the source label or the default label ! StringBuilder label = new StringBuilder(source != null ? getLabel(source) ! : UNDEFINED); ! ! // get the referred iterator expression ! String referredIterator = iteratorExp.getName().toString(); ! ! // only add the iterator stuff when an iterator has been selected ! if (StringUtils.isNotEmpty(referredIterator)) { ! ! // add the operator, the name of the iterator and the opening parenthesis ! label.append("->").append(referredIterator).append('('); //$NON-NLS-1$ ! ! // append the iterators ! for (Iterator<VariableXS> it = iteratorExp.getIterator().iterator(); it ! .hasNext();) { ! label.append(getLabel(it.next())); ! ! if (it.hasNext()) { ! label.append(", "); //$NON-NLS-1$ ! } ! } ! ! // append the vertical bar if there have been iterators defined ! if (!iteratorExp.getIterator().isEmpty()) { ! label.append(" | "); //$NON-NLS-1$ ! } ! ! // append the body expression ! String bodyLabel = getLabel(iteratorExp.getBody()); ! label.append(StringUtils.isNotEmpty(bodyLabel) ? bodyLabel : UNDEFINED); ! // append closing parenthesis ! label.append(')'); ! } ! // if all parts are missing return the default string ! return label.length() != 0 ? label.toString() ! : getString("_UI_IteratorExpXS_type"); //$NON-NLS-1$ } /** ! * This handles model notifications by calling {@link #updateChildren} to update any cached ! * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. * * <p> --- 133,159 ---- @Override public String getText(Object object) { ! return super.getText(object); ! } ! /** ! * Returns the EMF default string for iterator expressions. ! */ ! @Override ! protected String getDefaultString() { ! return getString("_UI_IteratorExpXS_type"); //$NON-NLS-1$ ! } ! /** ! * Returns the name of the associated {@link IteratorExpressionXS} enum. ! */ ! @Override ! protected String getLoopOperationName(LoopExpXS loopExpression) { ! return ((IteratorExpXS) loopExpression).getName().toString(); } /** ! * This handles model notifications by calling {@link #updateChildren} to ! * update any cached children and by creating a viewer notification, which it ! * passes to {@link #fireNotifyChanged}. * * <p> *************** *** 201,208 **** /** ! * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children ! * that can be created under this object. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 175,182 ---- /** ! * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s ! * describing the children that can be created under this object. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 214,220 **** /** ! * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 188,195 ---- /** ! * This returns the label text for ! * {@link org.eclipse.emf.edit.command.CreateChildCommand}. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ *************** *** 237,243 **** /** ! * Return the resource locator for this item provider's resources. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> * @generated */ --- 212,218 ---- /** ! * Return the resource locator for this item provider's resources. <!-- ! * begin-user-doc --> <!-- end-user-doc --> ! * * @generated */ Index: IterateExpXSItemProvider.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.xocl.edit/src/tudresden/ocl20/pivot/xocl/provider/IterateExpXSItemProvider.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** IterateExpXSItemProvider.java 16 Aug 2007 01:34:50 -0000 1.3 --- IterateExpXSItemProvider.java 19 Aug 2007 08:24:05 -0000 1.4 *************** *** 49,52 **** --- 49,53 ---- import tudresden.ocl20.pivot.xocl.IterateExpXS; + import tudresden.ocl20.pivot.xocl.LoopExpXS; import tudresden.ocl20.pivot.xocl.XOCLFactory; import tudresden.ocl20.pivot.xocl.XOCLPackage; *************** *** 132,150 **** /** * This returns the label text for the adapted class. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> ! * @generated */ @Override public String getText(Object object) { return getString("_UI_IterateExpXS_type"); //$NON-NLS-1$ } /** * This handles model notifications by calling {@link #updateChildren} to update any cached * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. ! * <!-- begin-user-doc --> ! * <!-- end-user-doc --> ! * @generated */ @Override --- 133,182 ---- /** * This returns the label text for the adapted class. ! * ! * <p> ! * Adapted to reflect the OCL concrete syntax ! * </p> ! * ! * @generated NOT */ @Override public String getText(Object object) { + return super.getText(object); + } + + /** + * @param label + */ + @Override + protected String getResultVariable(LoopExpXS expression) { + return getLabel(((IterateExpXS)expression).getResult()); + } + + /** + * Returns the EMF default string for iterate expressions. + */ + @Override + protected String getDefaultString() { return getString("_UI_IterateExpXS_type"); //$NON-NLS-1$ } /** + * Returns the string <code>"iterate"</code>. + */ + @Override + protected String getLoopOperationName(LoopExpXS loopExp) { + return "iterate"; //$NON-NLS-1$ + } + + /** * This handles model notifications by calling {@link #updateChildren} to update any cached * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. ! * ! * <p> ! * Adapted the EMF implementation to update the label hierarchy when the ! * result variable changes. ! * </p> ! * ! * @generated NOT */ @Override *************** *** 156,159 **** --- 188,192 ---- fireNotifyChanged(new ViewerNotification(notification, notification .getNotifier(), true, false)); + updateLabel(notification); return; } |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:23:47
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7764/src/tudresden/ocl20/pivot/parser/internal/xocl Modified Files: XOCLParser.java Log Message: implemented parsing of variables with a declared collection type Index: XOCLParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl/XOCLParser.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** XOCLParser.java 17 Aug 2007 10:04:50 -0000 1.12 --- XOCLParser.java 19 Aug 2007 08:23:43 -0000 1.13 *************** *** 37,41 **** import java.util.ArrayList; import java.util.Arrays; - import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; --- 37,40 ---- *************** *** 45,48 **** --- 44,48 ---- import java.util.regex.Pattern; + import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; *************** *** 189,211 **** */ @Override ! public OclExpression caseStaticPropertyCallExpXS(StaticPropertyCallExpXS expression) { ! List<OclExpression> qualifier = new ArrayList<OclExpression>( ! expression.getQualifier().size()); // parse the qualifiers of the property call expression for (OclExpressionXS oclExpressionXS : expression.getQualifier()) { qualifier.add(doSwitch(oclExpressionXS)); } ! try { ! return modelFactory.createPropertyCallExp(tokenizePathName( ! expression.getReferredPropertyName()), ! qualifier.toArray(new OclExpression[qualifier.size()])); ! } catch (FactoryException e) { ! // TODO Auto-generated catch block ! e.printStackTrace(); ! } ! return null; ! } --- 189,231 ---- */ @Override ! public OclExpression caseStaticPropertyCallExpXS( ! StaticPropertyCallExpXS expression) { ! ! if (logger.isDebugEnabled()) { ! logger.debug("caseStaticPropertyCallExpXS(expression=" + expression //$NON-NLS-1$ ! + ") - enter"); //$NON-NLS-1$ ! } ! ! List<OclExpression> qualifier; // parse the qualifiers of the property call expression + qualifier = new ArrayList<OclExpression>(expression.getQualifier().size()); + for (OclExpressionXS oclExpressionXS : expression.getQualifier()) { qualifier.add(doSwitch(oclExpressionXS)); } ! try { ! OclExpression returnOclExpression = modelFactory.createPropertyCallExp( ! tokenizePathName(expression.getReferredPropertyName()), qualifier ! .toArray(new OclExpression[qualifier.size()])); ! ! if (logger.isDebugEnabled()) { ! logger.debug("caseStaticPropertyCallExpXS() - exit - return value=" //$NON-NLS-1$ ! + returnOclExpression); ! } ! ! return returnOclExpression; ! } ! ! catch (FactoryException e) { ! logger.error("caseStaticPropertyCallExpXS(expression=" + expression //$NON-NLS-1$ ! + ")", e); //$NON-NLS-1$ ! ! throw new ParseRuntimeException( ! "Failed to parse static property call '" //$NON-NLS-1$ ! + expression.getReferredPropertyName() + "'.", e); //$NON-NLS-1$ ! } ! } *************** *** 229,242 **** */ @Override ! public OclExpression caseStaticOperationCallExpXS(StaticOperationCallExpXS expression) { ! try { ! return modelFactory.createOperationCallExp( ! tokenizePathName(expression.getReferredOperationName()), ! parseArguments(expression)); ! } catch (FactoryException e) { ! // TODO Auto-generated catch block ! e.printStackTrace(); ! } ! return null; } --- 249,281 ---- */ @Override ! public OclExpression caseStaticOperationCallExpXS( ! StaticOperationCallExpXS expression) { ! ! if (logger.isDebugEnabled()) { ! logger.debug("caseStaticOperationCallExpXS(expression=" + expression //$NON-NLS-1$ ! + ") - enter"); //$NON-NLS-1$ ! } ! ! try { ! OclExpression returnOclExpression = modelFactory ! .createOperationCallExp(tokenizePathName(expression ! .getReferredOperationName()), parseArguments(expression)); ! ! if (logger.isDebugEnabled()) { ! logger.debug("caseStaticOperationCallExpXS() - exit - return value=" //$NON-NLS-1$ ! + returnOclExpression); ! } ! ! return returnOclExpression; ! } ! ! catch (FactoryException e) { ! logger.error("caseStaticOperationCallExpXS(expression=" + expression //$NON-NLS-1$ ! + ")", e); //$NON-NLS-1$ ! ! throw new ParseRuntimeException( ! "Failed to parse the static operation call '" //$NON-NLS-1$ ! + expression.getReferredOperationName() + "'.", e); //$NON-NLS-1$ ! } } *************** *** 670,678 **** @Override public OclExpression caseIfExpXS(IfExpXS expression) { ! OclExpression condition = doSwitch(expression.getCondition()); ! OclExpression thenExpression = doSwitch(expression.getThenExpression()); ! OclExpression elseExpression = doSwitch(expression.getElseExpression()); ! ! return modelFactory.createIfExp(condition, thenExpression, elseExpression); } } --- 709,715 ---- @Override public OclExpression caseIfExpXS(IfExpXS expression) { ! return modelFactory.createIfExp(doSwitch(expression.getCondition()), ! doSwitch(expression.getThenExpression()), doSwitch(expression ! .getElseExpression())); } } *************** *** 1150,1154 **** if (matcher.matches()) { String operationName; ! String[] parameterTypeNames; List<Type> parameterTypes; --- 1187,1191 ---- if (matcher.matches()) { String operationName; ! String[] parametersArray; List<Type> parameterTypes; *************** *** 1163,1170 **** // tokenize around the commas to get the parameter names and types ! String[] parametersArray = {}; ! ! if (!(parameters.equals(""))) ! parametersArray = parameters.split(","); //$NON-NLS-1$ // collect the parameter types --- 1200,1210 ---- // tokenize around the commas to get the parameter names and types ! if (parameters == StringUtils.EMPTY) { ! parametersArray = ArrayUtils.EMPTY_STRING_ARRAY; ! } ! ! else { ! parametersArray = parameters.split("\\s*,\\s*"); //$NON-NLS-1$ ! } // collect the parameter types *************** *** 1174,1184 **** } - // assign the parameter types array - parameterTypeNames = parametersArray; - // find the parameter types ! parameterTypes = new ArrayList<Type>(parameterTypeNames.length); ! for (String typeName : parameterTypeNames) { parameterTypes.add(findType(tokenizePathName(typeName))); } --- 1214,1221 ---- } // find the parameter types ! parameterTypes = new ArrayList<Type>(parametersArray.length); ! for (String typeName : parametersArray) { parameterTypes.add(findType(tokenizePathName(typeName))); } *************** *** 1284,1287 **** --- 1321,1325 ---- * Creates a {@link Variable} from a {@link VariableXS}. */ + @SuppressWarnings("unchecked") protected Variable createVariable(VariableXS variableXS, ModelSwitch modelSwitch) { *************** *** 1293,1296 **** --- 1331,1336 ---- Variable variable; OclExpression initExpression = null; + List<String> typePath = null; + List<String> typeArgumentPath = null; // parse the init expression if existing *************** *** 1299,1306 **** } ! // create the variable using the model factory and the given model switch try { ! variable = modelFactory.createVariable(variableXS.getName(), ! tokenizePathName(variableXS.getType()), initExpression); } --- 1339,1365 ---- } ! // check whether the type name contains type arguments ! Matcher matcher = Pattern.compile("(\\w+)\\((\\w+)\\)").matcher( //$NON-NLS-1$ ! variableXS.getType()); ! ! if (matcher.matches()) { ! typePath = tokenizePathName(matcher.group(1)); ! typeArgumentPath = tokenizePathName(matcher.group(2)); ! } ! ! // create the variable using the model factory try { ! ! // create a variable with type arguments ! if (typeArgumentPath != null) { ! variable = modelFactory.createVariable(variableXS.getName(), typePath, ! Arrays.asList(typeArgumentPath), initExpression); ! } ! ! // create an non-generic variable ! else { ! variable = modelFactory.createVariable(variableXS.getName(), ! tokenizePathName(variableXS.getType()), initExpression); ! } } *************** *** 1331,1335 **** // return an empty list if the path name is empty if (StringUtils.isEmpty(pathName)) { ! return Collections.EMPTY_LIST; } --- 1390,1395 ---- // return an empty list if the path name is empty if (StringUtils.isEmpty(pathName)) { ! throw new ParseRuntimeException( ! "Encountered an empty path name for a type", null); //$NON-NLS-1$ } |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:22:57
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7403/src/tudresden/ocl20/pivot/modelbus/internal Modified Files: TypeResolver.java Log Message: renamed the method to collect predefined type to better reflect what it does Index: TypeResolver.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal/TypeResolver.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** TypeResolver.java 20 Jun 2007 01:59:47 -0000 1.1 --- TypeResolver.java 19 Aug 2007 08:22:53 -0000 1.2 *************** *** 69,73 **** // try to look up a primitive type if (pathName.size() == 1) { ! type = getPrimitiveTypes().get(pathName.get(0)); } --- 69,73 ---- // try to look up a primitive type if (pathName.size() == 1) { ! type = getPredefinedTypes().get(pathName.get(0)); } *************** *** 92,96 **** * Helper method to lazily get the OCL standard types. */ ! private Map<String, Type> getPrimitiveTypes(){ if (primitiveTypes == null) { --- 92,96 ---- * Helper method to lazily get the OCL standard types. */ ! private Map<String, Type> getPredefinedTypes(){ if (primitiveTypes == null) { *************** *** 108,112 **** // instantiate the map for the primitive types and initialize it primitiveTypes = new HashMap<String, Type>(); ! initializePrimitiveTypes(oclLibrary); } --- 108,112 ---- // instantiate the map for the primitive types and initialize it primitiveTypes = new HashMap<String, Type>(); ! initializePredefinedTypes(oclLibrary); } *************** *** 124,141 **** * model of the Standard Library provided by the OclLibraryProvider. */ ! protected void initializePrimitiveTypes(OclLibrary oclLibrary) { primitiveTypes.put("OclAny",oclLibrary.getOclAny()); //$NON-NLS-1$ ! primitiveTypes.put("Bag",oclLibrary.getOclBag()); //$NON-NLS-1$ primitiveTypes.put("Boolean",oclLibrary.getOclBoolean()); //$NON-NLS-1$ - primitiveTypes.put("Collection",oclLibrary.getOclCollection()); //$NON-NLS-1$ primitiveTypes.put("Integer",oclLibrary.getOclInteger()); //$NON-NLS-1$ - primitiveTypes.put("Invalid",oclLibrary.getOclInvalid()); //$NON-NLS-1$ - primitiveTypes.put("OrderedSet",oclLibrary.getOclOrderedSet()); //$NON-NLS-1$ primitiveTypes.put("Real",oclLibrary.getOclReal()); //$NON-NLS-1$ primitiveTypes.put("Sequence",oclLibrary.getOclSequence()); //$NON-NLS-1$ primitiveTypes.put("Set",oclLibrary.getOclSet()); //$NON-NLS-1$ ! primitiveTypes.put("String",oclLibrary.getOclString()); //$NON-NLS-1$ ! primitiveTypes.put("OclType",oclLibrary.getOclType()); //$NON-NLS-1$ ! primitiveTypes.put("OclVoid",oclLibrary.getOclVoid()); //$NON-NLS-1$ } } --- 124,141 ---- * model of the Standard Library provided by the OclLibraryProvider. */ ! protected void initializePredefinedTypes(OclLibrary oclLibrary) { primitiveTypes.put("OclAny",oclLibrary.getOclAny()); //$NON-NLS-1$ ! primitiveTypes.put("OclType",oclLibrary.getOclType()); //$NON-NLS-1$ ! primitiveTypes.put("OclVoid",oclLibrary.getOclVoid()); //$NON-NLS-1$ ! primitiveTypes.put("Invalid",oclLibrary.getOclInvalid()); //$NON-NLS-1$ primitiveTypes.put("Boolean",oclLibrary.getOclBoolean()); //$NON-NLS-1$ primitiveTypes.put("Integer",oclLibrary.getOclInteger()); //$NON-NLS-1$ primitiveTypes.put("Real",oclLibrary.getOclReal()); //$NON-NLS-1$ + primitiveTypes.put("String",oclLibrary.getOclString()); //$NON-NLS-1$ + primitiveTypes.put("Collection",oclLibrary.getOclCollection()); //$NON-NLS-1$ primitiveTypes.put("Sequence",oclLibrary.getOclSequence()); //$NON-NLS-1$ + primitiveTypes.put("Bag",oclLibrary.getOclBag()); //$NON-NLS-1$ primitiveTypes.put("Set",oclLibrary.getOclSet()); //$NON-NLS-1$ ! primitiveTypes.put("OrderedSet",oclLibrary.getOclOrderedSet()); //$NON-NLS-1$ } } |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:22:26
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7389/src/tudresden/ocl20/pivot/modelbus/internal Modified Files: ModelFactory.java Log Message: small change in a precondition check Index: ModelFactory.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/src/tudresden/ocl20/pivot/modelbus/internal/ModelFactory.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** ModelFactory.java 17 Aug 2007 10:02:31 -0000 1.19 --- ModelFactory.java 19 Aug 2007 08:22:23 -0000 1.20 *************** *** 500,506 **** if (source == null || body == null || result == null) { ! throw new IllegalArgumentException( ! "Parameters must not be null: source=" + source //$NON-NLS-1$ ! + ", body=" + body + ", result=" + result + "."); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ } --- 500,504 ---- if (source == null || body == null || result == null) { ! throw new NullArgumentException("source or body or result"); //$NON-NLS-1$ } *************** *** 518,521 **** --- 516,520 ---- logger.debug("createIterateExp() - exit - return value=" + iterateExp); //$NON-NLS-1$ } + return iterateExp; } |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:21:30
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/src/tudresden/ocl20/pivot/examples/pml/util In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv7009/src/tudresden/ocl20/pivot/examples/pml/util Modified Files: PMLSwitch.java PMLAdapterFactory.java Log Message: organized imports Index: PMLSwitch.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/src/tudresden/ocl20/pivot/examples/pml/util/PMLSwitch.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** PMLSwitch.java 12 Apr 2007 23:30:31 -0000 1.1 --- PMLSwitch.java 19 Aug 2007 08:21:26 -0000 1.2 *************** *** 38,42 **** import org.eclipse.emf.ecore.EObject; ! import tudresden.ocl20.pivot.examples.pml.*; /** --- 38,48 ---- import org.eclipse.emf.ecore.EObject; ! import tudresden.ocl20.pivot.examples.pml.ExtensionPoint; ! import tudresden.ocl20.pivot.examples.pml.Feature; ! import tudresden.ocl20.pivot.examples.pml.JavaType; ! import tudresden.ocl20.pivot.examples.pml.PMLPackage; ! import tudresden.ocl20.pivot.examples.pml.Plugin; ! import tudresden.ocl20.pivot.examples.pml.Service; ! import tudresden.ocl20.pivot.examples.pml.ServiceParameter; /** Index: PMLAdapterFactory.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/src/tudresden/ocl20/pivot/examples/pml/util/PMLAdapterFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** PMLAdapterFactory.java 12 Apr 2007 23:30:31 -0000 1.1 --- PMLAdapterFactory.java 19 Aug 2007 08:21:26 -0000 1.2 *************** *** 35,44 **** import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; - import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; - import org.eclipse.emf.ecore.EObject; ! import tudresden.ocl20.pivot.examples.pml.*; /** --- 35,48 ---- import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; import org.eclipse.emf.ecore.EObject; ! import tudresden.ocl20.pivot.examples.pml.ExtensionPoint; ! import tudresden.ocl20.pivot.examples.pml.Feature; ! import tudresden.ocl20.pivot.examples.pml.JavaType; ! import tudresden.ocl20.pivot.examples.pml.PMLPackage; ! import tudresden.ocl20.pivot.examples.pml.Plugin; ! import tudresden.ocl20.pivot.examples.pml.Service; ! import tudresden.ocl20.pivot.examples.pml.ServiceParameter; /** |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:21:17
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/resources In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv6986/resources Modified Files: oclstandardlibrary.types Log Message: fixed a few more copy-and-paste related bugs Index: oclstandardlibrary.types =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/resources/oclstandardlibrary.types,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** oclstandardlibrary.types 17 Aug 2007 10:03:25 -0000 1.7 --- oclstandardlibrary.types 19 Aug 2007 08:21:14 -0000 1.8 *************** *** 750,754 **** <ownedOperation name="count" type="//@oclInteger"> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> --- 750,754 ---- <ownedOperation name="count" type="//@oclInteger"> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> *************** *** 785,789 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 785,789 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 805,809 **** </genericType> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> --- 805,809 ---- </genericType> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> *************** *** 815,819 **** </genericType> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> --- 815,819 ---- </genericType> <ownedParameter name="object"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:20:54
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/src/tudresden/ocl20/pivot/examples/pml/impl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv6635/src/tudresden/ocl20/pivot/examples/pml/impl Modified Files: PMLFactoryImpl.java Log Message: organized imports Index: PMLFactoryImpl.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/src/tudresden/ocl20/pivot/examples/pml/impl/PMLFactoryImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** PMLFactoryImpl.java 12 Apr 2007 23:30:31 -0000 1.1 --- PMLFactoryImpl.java 19 Aug 2007 08:20:51 -0000 1.2 *************** *** 36,45 **** import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; - import org.eclipse.emf.ecore.impl.EFactoryImpl; - import org.eclipse.emf.ecore.plugin.EcorePlugin; ! import tudresden.ocl20.pivot.examples.pml.*; /** --- 36,50 ---- import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.impl.EFactoryImpl; import org.eclipse.emf.ecore.plugin.EcorePlugin; ! import tudresden.ocl20.pivot.examples.pml.ExtensionPoint; ! import tudresden.ocl20.pivot.examples.pml.Feature; ! import tudresden.ocl20.pivot.examples.pml.JavaType; ! import tudresden.ocl20.pivot.examples.pml.PMLFactory; ! import tudresden.ocl20.pivot.examples.pml.PMLPackage; ! import tudresden.ocl20.pivot.examples.pml.Plugin; ! import tudresden.ocl20.pivot.examples.pml.Service; ! import tudresden.ocl20.pivot.examples.pml.ServiceParameter; /** |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:20:17
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.examples.pml/model In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv6613/model Added Files: IterateMultIt.xocl Log Message: a constraint to test the iterate expression and multiple iterators --- NEW FILE --- <?xml version="1.0" encoding="UTF-8"?> <xocl:NamespaceXS xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xocl="http://www.tu-dresden.de/ocl20/pivot/2007/xocl" pathName="pml"> <ownedRule name="iterateMultIt" constrainedElement="Plugin"> <specification body="Set{1..4}->iterate(it1 : Integer; it2 : Integer; acc : Bag(String) = {} | acc->including(it1 * it2))"> <bodyExpression xsi:type="xocl:IterateExpXS"> <source xsi:type="xocl:CollectionLiteralExpXS"> <part xsi:type="xocl:CollectionRangeXS"> <last xsi:type="xocl:IntegerLiteralExpXS" integerSymbol="4"/> <first xsi:type="xocl:IntegerLiteralExpXS" integerSymbol="1"/> </part> </source> <iterator name="it1" type="Integer"/> <iterator name="it2" type="Integer"/> <body xsi:type="xocl:CollectionOperationCallExpXS" referredCollectionOperation="including"> <source xsi:type="xocl:VariableExpXS" referredVariable="//@ownedRule.0/@specification/@bodyExpression/@result"/> <argument xsi:type="xocl:ModelOperationCallExpXS" referredOperationName="*"> <source xsi:type="xocl:VariableExpXS" referredVariable="//@ownedRule.0/@specification/@bodyExpression/@iterator.0"/> <argument xsi:type="xocl:VariableExpXS" referredVariable="//@ownedRule.0/@specification/@bodyExpression/@iterator.1"/> </argument> </body> <result name="acc" type="Bag(Integer)"> <initExpression xsi:type="xocl:CollectionLiteralExpXS" kind="Bag"/> </result> </bodyExpression> </specification> </ownedRule> </xocl:NamespaceXS> |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:19:36
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv6221/src/tudresden/ocl20/pivot/essentialocl/expressions/impl Modified Files: VariableImpl.java Log Message: fixed bug in type evaluation which would cause a declared type to be ignored when an init expression was given Index: VariableImpl.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl/VariableImpl.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** VariableImpl.java 6 Aug 2007 10:08:54 -0000 1.6 --- VariableImpl.java 19 Aug 2007 08:19:30 -0000 1.7 *************** *** 158,162 **** } ! Type evaluatedType; if (representedParameter != null) { --- 158,162 ---- } ! Type evaluatedType = null; if (representedParameter != null) { *************** *** 164,188 **** } ! else if (initExpression != null) { ! // check that the init expression conforms to the declared type ! if (type != null && !initExpression.getType().conformsTo(type)) { ! throw new WellformednessException(initExpression, ! "The type of the init expression of variable '" + name //$NON-NLS-1$ ! + "' must conform to the declared type."); //$NON-NLS-1$ } ! // no type declared, use the type of the init expression ! evaluatedType = initExpression.getType(); ! } - // default to the declared type - else if (type != null) { - evaluatedType = type; } else { ! throw new WellformednessException(this, "The type of variable '" + name //$NON-NLS-1$ ! + "' cannot be determined."); //$NON-NLS-1$ } --- 164,191 ---- } ! else if (type != null || initExpression != null) { ! // if a type has been declared, use it ! if (type != null) { ! evaluatedType = type; ! ! // check that init expression's type conforms to declared type ! if (initExpression != null ! && !initExpression.getType().conformsTo(type)) { ! throw new WellformednessException(this, ! "The type of the init expression of a variable must conform " //$NON-NLS-1$ ! + "to the declared type."); //$NON-NLS-1$ ! } } ! else { ! evaluatedType = initExpression.getType(); ! } } else { ! throw new WellformednessException(this, ! "Failed to determine the type of the variable."); //$NON-NLS-1$ } |
From: Matthias B. <mbr...@us...> - 2007-08-19 08:19:05
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv5858/src/tudresden/ocl20/pivot/essentialocl/expressions/impl Modified Files: CollectionLiteralExpImpl.java Log Message: prettified comment Index: CollectionLiteralExpImpl.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.essentialocl/src/tudresden/ocl20/pivot/essentialocl/expressions/impl/CollectionLiteralExpImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** CollectionLiteralExpImpl.java 6 Aug 2007 10:08:54 -0000 1.4 --- CollectionLiteralExpImpl.java 19 Aug 2007 08:18:59 -0000 1.5 *************** *** 168,173 **** OclLibrary oclLibrary = getValidOclLibrary(); ! // determine the common supertype of all parts as the collection's element ! // type elementType = oclLibrary.getOclVoid(); --- 168,172 ---- OclLibrary oclLibrary = getValidOclLibrary(); ! // the common supertype of all parts is the collection's element type elementType = oclLibrary.getOclVoid(); |
From: Ronny B. <ro...@us...> - 2007-08-17 10:04:59
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv25036/src/tudresden/ocl20/pivot/parser/internal/xocl Modified Files: XOCLParser.java Log Message: Added support for some expressions, solved problem in findOperation() Index: XOCLParser.java =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.parser/src/tudresden/ocl20/pivot/parser/internal/xocl/XOCLParser.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** XOCLParser.java 16 Aug 2007 01:31:18 -0000 1.11 --- XOCLParser.java 17 Aug 2007 10:04:50 -0000 1.12 *************** *** 93,96 **** --- 93,97 ---- import tudresden.ocl20.pivot.xocl.EnumLiteralExpXS; import tudresden.ocl20.pivot.xocl.ExpressionInOclXS; + import tudresden.ocl20.pivot.xocl.IfExpXS; import tudresden.ocl20.pivot.xocl.IntegerLiteralExpXS; import tudresden.ocl20.pivot.xocl.InvalidLiteralExpXS; *************** *** 103,106 **** --- 104,110 ---- import tudresden.ocl20.pivot.xocl.OperationCallExpXS; import tudresden.ocl20.pivot.xocl.PropertyCallExpXS; + import tudresden.ocl20.pivot.xocl.RealLiteralExpXS; + import tudresden.ocl20.pivot.xocl.StaticOperationCallExpXS; + import tudresden.ocl20.pivot.xocl.StaticPropertyCallExpXS; import tudresden.ocl20.pivot.xocl.StringLiteralExpXS; import tudresden.ocl20.pivot.xocl.TupleLiteralExpXS; *************** *** 182,185 **** --- 186,216 ---- * (non-Javadoc) * + * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseStaticPropertyCallExpXS(tudresden.ocl20.pivot.xocl.StaticPropertyCallExpXS) + */ + @Override + public OclExpression caseStaticPropertyCallExpXS(StaticPropertyCallExpXS expression) { + List<OclExpression> qualifier = new ArrayList<OclExpression>( + expression.getQualifier().size()); + + // parse the qualifiers of the property call expression + for (OclExpressionXS oclExpressionXS : expression.getQualifier()) { + qualifier.add(doSwitch(oclExpressionXS)); + } + + try { + return modelFactory.createPropertyCallExp(tokenizePathName( + expression.getReferredPropertyName()), + qualifier.toArray(new OclExpression[qualifier.size()])); + } catch (FactoryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + + } + + /* + * (non-Javadoc) + * * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseModelOperationCallExpXS(tudresden.ocl20.pivot.xocl.ModelOperationCallExpXS) */ *************** *** 195,198 **** --- 226,247 ---- * (non-Javadoc) * + * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseStaticOperationCallExpXS(tudresden.ocl20.pivot.xocl.StaticOperationCallExpXS) + */ + @Override + public OclExpression caseStaticOperationCallExpXS(StaticOperationCallExpXS expression) { + try { + return modelFactory.createOperationCallExp( + tokenizePathName(expression.getReferredOperationName()), + parseArguments(expression)); + } catch (FactoryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /* + * (non-Javadoc) + * * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseCollectionOperationCallExpXS(tudresden.ocl20.pivot.xocl.CollectionOperationCallExpXS) */ *************** *** 304,307 **** --- 353,366 ---- } + /* + * (non-Javadoc) + * + * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseRealLiteralExpXS(tudresden.ocl20.pivot.xocl.RealLiteralExpXS) + */ + @Override + public OclExpression caseRealLiteralExpXS(RealLiteralExpXS expression) { + return modelFactory.createRealLiteralExp(expression.getRealSymbol()); + } + /** * Parses a <code>StringLiteralExpressionXS</code>. *************** *** 603,606 **** --- 662,679 ---- return modelFactory.createUndefinedLiteralExp(); } + + /* + * (non-Javadoc) + * + * @see tudresden.ocl20.pivot.xocl.util.XOCLSwitch#caseIfExpXS(tudresden.ocl20.pivot.xocl.IfExpXS) + */ + @Override + public OclExpression caseIfExpXS(IfExpXS expression) { + OclExpression condition = doSwitch(expression.getCondition()); + OclExpression thenExpression = doSwitch(expression.getThenExpression()); + OclExpression elseExpression = doSwitch(expression.getElseExpression()); + + return modelFactory.createIfExp(condition, thenExpression, elseExpression); + } } *************** *** 1090,1094 **** // tokenize around the commas to get the parameter names and types ! String[] parametersArray = parameters.split("\\s*,\\s*"); //$NON-NLS-1$ // collect the parameter types --- 1163,1170 ---- // tokenize around the commas to get the parameter names and types ! String[] parametersArray = {}; ! ! if (!(parameters.equals(""))) ! parametersArray = parameters.split(","); //$NON-NLS-1$ // collect the parameter types |
From: Ronny B. <ro...@us...> - 2007-08-17 10:03:28
|
Update of /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/resources In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv24640/resources Modified Files: oclstandardlibrary.types Log Message: Added some operations Index: oclstandardlibrary.types =================================================================== RCS file: /cvsroot/dresden-ocl/ocl20/eclipse/tudresden.ocl20.pivot.modelbus/resources/oclstandardlibrary.types,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** oclstandardlibrary.types 19 Jun 2007 03:17:09 -0000 1.6 --- oclstandardlibrary.types 17 Aug 2007 10:03:25 -0000 1.7 *************** *** 73,78 **** <ownedOperation name="floor" type="//@oclInteger"/> <ownedOperation name="round" type="//@oclInteger"/> ! <ownedOperation name="max" type="//@oclReal"/> ! <ownedOperation name="min" type="//@oclReal"/> <ownedOperation name="<" type="//@oclBoolean"> <ownedParameter name="r" type="//@oclReal"/> --- 73,82 ---- <ownedOperation name="floor" type="//@oclInteger"/> <ownedOperation name="round" type="//@oclInteger"/> ! <ownedOperation name="max" type="//@oclReal"> ! <ownedParameter name="r" type="//@oclReal"/> ! </ownedOperation> ! <ownedOperation name="min" type="//@oclReal"> ! <ownedParameter name="r" type="//@oclReal"/> ! </ownedOperation> <ownedOperation name="<" type="//@oclBoolean"> <ownedParameter name="r" type="//@oclReal"/> *************** *** 140,143 **** --- 144,148 ---- <ownedTypeParameter name="T"/> </ownedOperation> + <ownedOperation name="atPre" type="//@oclAny"/> </oclAny> <oclVoid name="OclVoid"> *************** *** 259,266 **** </ownedParameter> </ownedOperation> <ownedOperation name="flatten"> <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedOperation.3/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 264,285 ---- </ownedParameter> </ownedOperation> + <ownedOperation name="union"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedParameter name="o"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedParameter> + </ownedOperation> <ownedOperation name="flatten"> <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedOperation.4/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 308,324 **** </ownedOperation> <ownedOperation name="at"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> <ownedParameter name="i" type="//@oclInteger"/> </ownedOperation> <ownedOperation name="indexOf" type="//@oclInteger"> <ownedParameter name="obj"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> <ownedOperation name="first"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedOperation> <ownedOperation name="last"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedOperation> <ownedOperation name="including"> --- 327,343 ---- </ownedOperation> <ownedOperation name="at"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> <ownedParameter name="i" type="//@oclInteger"/> </ownedOperation> <ownedOperation name="indexOf" type="//@oclInteger"> <ownedParameter name="obj"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </ownedParameter> </ownedOperation> <ownedOperation name="first"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </ownedOperation> <ownedOperation name="last"> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </ownedOperation> <ownedOperation name="including"> *************** *** 345,349 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclBag"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 364,368 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclBag"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 352,356 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 371,375 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 359,363 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 378,382 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 366,370 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 385,389 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 486,490 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 505,509 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 493,497 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 512,516 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 500,504 **** <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSet/@ownedTypeParameter.0"/> </typeArgument> </genericType> --- 519,523 ---- <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> <typeArgument> ! <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> </typeArgument> </genericType> *************** *** 729,732 **** --- 748,849 ---- <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> </ownedOperation> + <ownedOperation name="count" type="//@oclInteger"> + <ownedParameter name="object"> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> + </ownedParameter> + </ownedOperation> + <ownedOperation name="=" type="//@oclBoolean"> + <ownedParameter name="s"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedParameter> + </ownedOperation> + <ownedOperation name="union"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedParameter name="s"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedParameter> + </ownedOperation> + <ownedOperation name="union"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedParameter name="o"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclSequence/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedParameter> + </ownedOperation> + <ownedOperation name="flatten"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedOperation.12/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedTypeParameter name="T2"/> + </ownedOperation> + <ownedOperation name="including"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedParameter name="object"> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> + </ownedParameter> + </ownedOperation> + <ownedOperation name="excluding"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + <ownedParameter name="object"> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclBag/@ownedTypeParameter.0"/> + </ownedParameter> + </ownedOperation> + <ownedOperation name="asBag"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclBag"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedOperation> + <ownedOperation name="asSequence"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSequence"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedOperation> + <ownedOperation name="asSet"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedOperation> + <ownedOperation name="asOrderedSet"> + <genericType xsi:type="pivot:ComplexGenericType" unboundType="//@oclOrderedSet"> + <typeArgument> + <genericType xsi:type="pivot:ParameterGenericType" typeParameter="//@oclOrderedSet/@ownedTypeParameter.0"/> + </typeArgument> + </genericType> + </ownedOperation> <genericSuperType xsi:type="pivot:ComplexGenericType" unboundType="//@oclCollection"> <typeArgument> |