001// license-header java merge-point 002// 003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 004// 005package org.andromda.metafacades.uml14; 006 007import java.util.Collection; 008import java.util.List; 009import org.andromda.core.metafacade.MetafacadeBase; 010import org.andromda.core.metafacade.ModelValidationMessage; 011import org.andromda.metafacades.uml.AssociationEndFacade; 012import org.andromda.metafacades.uml.AttributeFacade; 013import org.andromda.metafacades.uml.ClassifierFacade; 014import org.andromda.metafacades.uml.ModelElementFacade; 015import org.andromda.metafacades.uml.OperationFacade; 016import org.andromda.translation.ocl.validation.OCLCollections; 017import org.andromda.translation.ocl.validation.OCLIntrospector; 018import org.andromda.translation.ocl.validation.OCLResultEnsurer; 019import org.apache.commons.collections.Transformer; 020import org.apache.log4j.Logger; 021import org.omg.uml.foundation.core.Classifier; 022 023/** 024 * A Classifier is a classification of instances - it describes a set of instances that have 025 * features in common. Can specify a generalization hierarchy by referencing its general 026 * classifiers. It may be a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, 027 * etc. Can specify a generalization hierarchy by referencing its general classifiers. Has the 028 * capability to own collaboration uses. These collaboration uses link a collaboration with the 029 * classifier to give a description of the workings of the classifier. Classifier is defined to be a 030 * kind of templateable element so that a classifier can be parameterized. It is also defined to be 031 * a kind of parameterable element so that a classifier can be a formal template parameter. 032 * MetafacadeLogic for ClassifierFacade 033 * 034 * @see ClassifierFacade 035 */ 036public abstract class ClassifierFacadeLogic 037 extends GeneralizableElementFacadeLogicImpl 038 implements ClassifierFacade 039{ 040 /** 041 * The underlying UML object 042 * @see Classifier 043 */ 044 protected Classifier metaObject; 045 046 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 047 * @param metaObjectIn 048 * @param context 049 */ 050 protected ClassifierFacadeLogic(Classifier metaObjectIn, String context) 051 { 052 super(metaObjectIn, getContext(context)); 053 this.metaObject = metaObjectIn; 054 } 055 056 /** 057 * The logger instance. 058 */ 059 private static final Logger logger = Logger.getLogger(ClassifierFacadeLogic.class); 060 061 /** 062 * Gets the context for this metafacade logic instance. 063 * @param context String. Set to ClassifierFacade if null 064 * @return context String 065 */ 066 private static String getContext(String context) 067 { 068 if (context == null) 069 { 070 context = "org.andromda.metafacades.uml.ClassifierFacade"; 071 } 072 return context; 073 } 074 075 /** Reset context only for non-root metafacades 076 * @param context 077 */ 078 @Override 079 public void resetMetafacadeContext(String context) 080 { 081 if (!this.contextRoot) // reset context only for non-root metafacades 082 { 083 context = getContext(context); // to have same value as in original constructor call 084 setMetafacadeContext (context); 085 } 086 } 087 088 /** 089 * @return boolean true always 090 * @see ClassifierFacade 091 */ 092 public boolean isClassifierFacadeMetaType() 093 { 094 return true; 095 } 096 097 // --------------- attributes --------------------- 098 099 /** 100 * @see ClassifierFacade#isPrimitive() 101 * @return boolean 102 */ 103 protected abstract boolean handleIsPrimitive(); 104 105 private boolean __primitive1a; 106 private boolean __primitive1aSet = false; 107 108 /** 109 * Indicates whether or not this classifier represents a primitive type. 110 * @return (boolean)handleIsPrimitive() 111 */ 112 public final boolean isPrimitive() 113 { 114 boolean primitive1a = this.__primitive1a; 115 if (!this.__primitive1aSet) 116 { 117 // primitive has no pre constraints 118 primitive1a = handleIsPrimitive(); 119 // primitive has no post constraints 120 this.__primitive1a = primitive1a; 121 if (isMetafacadePropertyCachingEnabled()) 122 { 123 this.__primitive1aSet = true; 124 } 125 } 126 return primitive1a; 127 } 128 129 /** 130 * @see ClassifierFacade#getOperationCallFromAttributes() 131 * @return String 132 */ 133 protected abstract String handleGetOperationCallFromAttributes(); 134 135 private String __operationCallFromAttributes2a; 136 private boolean __operationCallFromAttributes2aSet = false; 137 138 /** 139 * The attributes from this classifier in the form of an operation call (this example would be 140 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the 141 * classifier, the result would be an empty '()'. 142 * @return (String)handleGetOperationCallFromAttributes() 143 */ 144 public final String getOperationCallFromAttributes() 145 { 146 String operationCallFromAttributes2a = this.__operationCallFromAttributes2a; 147 if (!this.__operationCallFromAttributes2aSet) 148 { 149 // operationCallFromAttributes has no pre constraints 150 operationCallFromAttributes2a = handleGetOperationCallFromAttributes(); 151 // operationCallFromAttributes has no post constraints 152 this.__operationCallFromAttributes2a = operationCallFromAttributes2a; 153 if (isMetafacadePropertyCachingEnabled()) 154 { 155 this.__operationCallFromAttributes2aSet = true; 156 } 157 } 158 return operationCallFromAttributes2a; 159 } 160 161 /** 162 * @see ClassifierFacade#isAbstract() 163 * @return boolean 164 */ 165 protected abstract boolean handleIsAbstract(); 166 167 private boolean __abstract3a; 168 private boolean __abstract3aSet = false; 169 170 /** 171 * Indicates if this classifier is 'abstract'. 172 * @return (boolean)handleIsAbstract() 173 */ 174 public final boolean isAbstract() 175 { 176 boolean abstract3a = this.__abstract3a; 177 if (!this.__abstract3aSet) 178 { 179 // abstract has no pre constraints 180 abstract3a = handleIsAbstract(); 181 // abstract has no post constraints 182 this.__abstract3a = abstract3a; 183 if (isMetafacadePropertyCachingEnabled()) 184 { 185 this.__abstract3aSet = true; 186 } 187 } 188 return abstract3a; 189 } 190 191 /** 192 * @see ClassifierFacade#isDataType() 193 * @return boolean 194 */ 195 protected abstract boolean handleIsDataType(); 196 197 private boolean __dataType4a; 198 private boolean __dataType4aSet = false; 199 200 /** 201 * True/false depending on whether or not this classifier represents a datatype. A data type is 202 * a type whose instances are identified only by their value. A data type may contain attributes 203 * to support the modeling of structured data types. 204 * @return (boolean)handleIsDataType() 205 */ 206 public final boolean isDataType() 207 { 208 boolean dataType4a = this.__dataType4a; 209 if (!this.__dataType4aSet) 210 { 211 // dataType has no pre constraints 212 dataType4a = handleIsDataType(); 213 // dataType has no post constraints 214 this.__dataType4a = dataType4a; 215 if (isMetafacadePropertyCachingEnabled()) 216 { 217 this.__dataType4aSet = true; 218 } 219 } 220 return dataType4a; 221 } 222 223 /** 224 * @see ClassifierFacade#isArrayType() 225 * @return boolean 226 */ 227 protected abstract boolean handleIsArrayType(); 228 229 private boolean __arrayType5a; 230 private boolean __arrayType5aSet = false; 231 232 /** 233 * True if this classifier represents an array type. False otherwise. 234 * @return (boolean)handleIsArrayType() 235 */ 236 public final boolean isArrayType() 237 { 238 boolean arrayType5a = this.__arrayType5a; 239 if (!this.__arrayType5aSet) 240 { 241 // arrayType has no pre constraints 242 arrayType5a = handleIsArrayType(); 243 // arrayType has no post constraints 244 this.__arrayType5a = arrayType5a; 245 if (isMetafacadePropertyCachingEnabled()) 246 { 247 this.__arrayType5aSet = true; 248 } 249 } 250 return arrayType5a; 251 } 252 253 /** 254 * @see ClassifierFacade#isCollectionType() 255 * @return boolean 256 */ 257 protected abstract boolean handleIsCollectionType(); 258 259 private boolean __collectionType6a; 260 private boolean __collectionType6aSet = false; 261 262 /** 263 * True if this classifier represents a collection type. False otherwise. 264 * @return (boolean)handleIsCollectionType() 265 */ 266 public final boolean isCollectionType() 267 { 268 boolean collectionType6a = this.__collectionType6a; 269 if (!this.__collectionType6aSet) 270 { 271 // collectionType has no pre constraints 272 collectionType6a = handleIsCollectionType(); 273 // collectionType has no post constraints 274 this.__collectionType6a = collectionType6a; 275 if (isMetafacadePropertyCachingEnabled()) 276 { 277 this.__collectionType6aSet = true; 278 } 279 } 280 return collectionType6a; 281 } 282 283 /** 284 * @see ClassifierFacade#getWrapperName() 285 * @return String 286 */ 287 protected abstract String handleGetWrapperName(); 288 289 private String __wrapperName7a; 290 private boolean __wrapperName7aSet = false; 291 292 /** 293 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long' 294 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will 295 * return a null. Note that wrapper mappings must be defined for the namespace by defining the 296 * 'wrapperMappingsUri', this property must point to the location of the mappings file which 297 * maps the primitives to wrapper types. 298 * @return (String)handleGetWrapperName() 299 */ 300 public final String getWrapperName() 301 { 302 String wrapperName7a = this.__wrapperName7a; 303 if (!this.__wrapperName7aSet) 304 { 305 // wrapperName has no pre constraints 306 wrapperName7a = handleGetWrapperName(); 307 // wrapperName has no post constraints 308 this.__wrapperName7a = wrapperName7a; 309 if (isMetafacadePropertyCachingEnabled()) 310 { 311 this.__wrapperName7aSet = true; 312 } 313 } 314 return wrapperName7a; 315 } 316 317 /** 318 * @see ClassifierFacade#isDateType() 319 * @return boolean 320 */ 321 protected abstract boolean handleIsDateType(); 322 323 private boolean __dateType8a; 324 private boolean __dateType8aSet = false; 325 326 /** 327 * True when this classifier is a date type. 328 * @return (boolean)handleIsDateType() 329 */ 330 public final boolean isDateType() 331 { 332 boolean dateType8a = this.__dateType8a; 333 if (!this.__dateType8aSet) 334 { 335 // dateType has no pre constraints 336 dateType8a = handleIsDateType(); 337 // dateType has no post constraints 338 this.__dateType8a = dateType8a; 339 if (isMetafacadePropertyCachingEnabled()) 340 { 341 this.__dateType8aSet = true; 342 } 343 } 344 return dateType8a; 345 } 346 347 /** 348 * @see ClassifierFacade#isInterface() 349 * @return boolean 350 */ 351 protected abstract boolean handleIsInterface(); 352 353 private boolean __interface9a; 354 private boolean __interface9aSet = false; 355 356 /** 357 * True/false depending on whether or not this Classifier represents an interface. 358 * @return (boolean)handleIsInterface() 359 */ 360 public final boolean isInterface() 361 { 362 boolean interface9a = this.__interface9a; 363 if (!this.__interface9aSet) 364 { 365 // interface has no pre constraints 366 interface9a = handleIsInterface(); 367 // interface has no post constraints 368 this.__interface9a = interface9a; 369 if (isMetafacadePropertyCachingEnabled()) 370 { 371 this.__interface9aSet = true; 372 } 373 } 374 return interface9a; 375 } 376 377 /** 378 * @see ClassifierFacade#getJavaNewString() 379 * @return String 380 */ 381 protected abstract String handleGetJavaNewString(); 382 383 private String __javaNewString10a; 384 private boolean __javaNewString10aSet = false; 385 386 /** 387 * A String representing a new Constructor declaration for this classifier type to be used in a 388 * Java environment. 389 * @return (String)handleGetJavaNewString() 390 */ 391 public final String getJavaNewString() 392 { 393 String javaNewString10a = this.__javaNewString10a; 394 if (!this.__javaNewString10aSet) 395 { 396 // javaNewString has no pre constraints 397 javaNewString10a = handleGetJavaNewString(); 398 // javaNewString has no post constraints 399 this.__javaNewString10a = javaNewString10a; 400 if (isMetafacadePropertyCachingEnabled()) 401 { 402 this.__javaNewString10aSet = true; 403 } 404 } 405 return javaNewString10a; 406 } 407 408 /** 409 * @see ClassifierFacade#isListType() 410 * @return boolean 411 */ 412 protected abstract boolean handleIsListType(); 413 414 private boolean __listType11a; 415 private boolean __listType11aSet = false; 416 417 /** 418 * True if this classifier represents a list type. False otherwise. 419 * @return (boolean)handleIsListType() 420 */ 421 public final boolean isListType() 422 { 423 boolean listType11a = this.__listType11a; 424 if (!this.__listType11aSet) 425 { 426 // listType has no pre constraints 427 listType11a = handleIsListType(); 428 // listType has no post constraints 429 this.__listType11a = listType11a; 430 if (isMetafacadePropertyCachingEnabled()) 431 { 432 this.__listType11aSet = true; 433 } 434 } 435 return listType11a; 436 } 437 438 /** 439 * @see ClassifierFacade#isSetType() 440 * @return boolean 441 */ 442 protected abstract boolean handleIsSetType(); 443 444 private boolean __setType12a; 445 private boolean __setType12aSet = false; 446 447 /** 448 * True if this classifier represents a set type. False otherwise. 449 * @return (boolean)handleIsSetType() 450 */ 451 public final boolean isSetType() 452 { 453 boolean setType12a = this.__setType12a; 454 if (!this.__setType12aSet) 455 { 456 // setType has no pre constraints 457 setType12a = handleIsSetType(); 458 // setType has no post constraints 459 this.__setType12a = setType12a; 460 if (isMetafacadePropertyCachingEnabled()) 461 { 462 this.__setType12aSet = true; 463 } 464 } 465 return setType12a; 466 } 467 468 /** 469 * @see ClassifierFacade#isFileType() 470 * @return boolean 471 */ 472 protected abstract boolean handleIsFileType(); 473 474 private boolean __fileType13a; 475 private boolean __fileType13aSet = false; 476 477 /** 478 * Returns true if this type represents a 'file' type. 479 * @return (boolean)handleIsFileType() 480 */ 481 public final boolean isFileType() 482 { 483 boolean fileType13a = this.__fileType13a; 484 if (!this.__fileType13aSet) 485 { 486 // fileType has no pre constraints 487 fileType13a = handleIsFileType(); 488 // fileType has no post constraints 489 this.__fileType13a = fileType13a; 490 if (isMetafacadePropertyCachingEnabled()) 491 { 492 this.__fileType13aSet = true; 493 } 494 } 495 return fileType13a; 496 } 497 498 /** 499 * @see ClassifierFacade#isMapType() 500 * @return boolean 501 */ 502 protected abstract boolean handleIsMapType(); 503 504 private boolean __mapType14a; 505 private boolean __mapType14aSet = false; 506 507 /** 508 * Indicates whether or not this classifier represents a Map type. 509 * @return (boolean)handleIsMapType() 510 */ 511 public final boolean isMapType() 512 { 513 boolean mapType14a = this.__mapType14a; 514 if (!this.__mapType14aSet) 515 { 516 // mapType has no pre constraints 517 mapType14a = handleIsMapType(); 518 // mapType has no post constraints 519 this.__mapType14a = mapType14a; 520 if (isMetafacadePropertyCachingEnabled()) 521 { 522 this.__mapType14aSet = true; 523 } 524 } 525 return mapType14a; 526 } 527 528 /** 529 * @see ClassifierFacade#isStringType() 530 * @return boolean 531 */ 532 protected abstract boolean handleIsStringType(); 533 534 private boolean __stringType15a; 535 private boolean __stringType15aSet = false; 536 537 /** 538 * Indicates whether or not this classifier represents a string type. 539 * @return (boolean)handleIsStringType() 540 */ 541 public final boolean isStringType() 542 { 543 boolean stringType15a = this.__stringType15a; 544 if (!this.__stringType15aSet) 545 { 546 // stringType has no pre constraints 547 stringType15a = handleIsStringType(); 548 // stringType has no post constraints 549 this.__stringType15a = stringType15a; 550 if (isMetafacadePropertyCachingEnabled()) 551 { 552 this.__stringType15aSet = true; 553 } 554 } 555 return stringType15a; 556 } 557 558 /** 559 * @see ClassifierFacade#isEnumeration() 560 * @return boolean 561 */ 562 protected abstract boolean handleIsEnumeration(); 563 564 private boolean __enumeration16a; 565 private boolean __enumeration16aSet = false; 566 567 /** 568 * True if this classifier is in fact marked as an enumeration. 569 * @return (boolean)handleIsEnumeration() 570 */ 571 public final boolean isEnumeration() 572 { 573 boolean enumeration16a = this.__enumeration16a; 574 if (!this.__enumeration16aSet) 575 { 576 // enumeration has no pre constraints 577 enumeration16a = handleIsEnumeration(); 578 // enumeration has no post constraints 579 this.__enumeration16a = enumeration16a; 580 if (isMetafacadePropertyCachingEnabled()) 581 { 582 this.__enumeration16aSet = true; 583 } 584 } 585 return enumeration16a; 586 } 587 588 /** 589 * @see ClassifierFacade#getArrayName() 590 * @return String 591 */ 592 protected abstract String handleGetArrayName(); 593 594 private String __arrayName17a; 595 private boolean __arrayName17aSet = false; 596 597 /** 598 * The name of the classifier as an array. 599 * @return (String)handleGetArrayName() 600 */ 601 public final String getArrayName() 602 { 603 String arrayName17a = this.__arrayName17a; 604 if (!this.__arrayName17aSet) 605 { 606 // arrayName has no pre constraints 607 arrayName17a = handleGetArrayName(); 608 // arrayName has no post constraints 609 this.__arrayName17a = arrayName17a; 610 if (isMetafacadePropertyCachingEnabled()) 611 { 612 this.__arrayName17aSet = true; 613 } 614 } 615 return arrayName17a; 616 } 617 618 /** 619 * @see ClassifierFacade#getFullyQualifiedArrayName() 620 * @return String 621 */ 622 protected abstract String handleGetFullyQualifiedArrayName(); 623 624 private String __fullyQualifiedArrayName18a; 625 private boolean __fullyQualifiedArrayName18aSet = false; 626 627 /** 628 * The fully qualified name of the classifier as an array. 629 * @return (String)handleGetFullyQualifiedArrayName() 630 */ 631 public final String getFullyQualifiedArrayName() 632 { 633 String fullyQualifiedArrayName18a = this.__fullyQualifiedArrayName18a; 634 if (!this.__fullyQualifiedArrayName18aSet) 635 { 636 // fullyQualifiedArrayName has no pre constraints 637 fullyQualifiedArrayName18a = handleGetFullyQualifiedArrayName(); 638 // fullyQualifiedArrayName has no post constraints 639 this.__fullyQualifiedArrayName18a = fullyQualifiedArrayName18a; 640 if (isMetafacadePropertyCachingEnabled()) 641 { 642 this.__fullyQualifiedArrayName18aSet = true; 643 } 644 } 645 return fullyQualifiedArrayName18a; 646 } 647 648 /** 649 * @see ClassifierFacade#getSerialVersionUID() 650 * @return long 651 */ 652 protected abstract long handleGetSerialVersionUID(); 653 654 private long __serialVersionUID19a; 655 private boolean __serialVersionUID19aSet = false; 656 657 /** 658 * Returns the serial version UID of the underlying model element. 659 * @return (long)handleGetSerialVersionUID() 660 */ 661 public final long getSerialVersionUID() 662 { 663 long serialVersionUID19a = this.__serialVersionUID19a; 664 if (!this.__serialVersionUID19aSet) 665 { 666 // serialVersionUID has no pre constraints 667 serialVersionUID19a = handleGetSerialVersionUID(); 668 // serialVersionUID has no post constraints 669 this.__serialVersionUID19a = serialVersionUID19a; 670 if (isMetafacadePropertyCachingEnabled()) 671 { 672 this.__serialVersionUID19aSet = true; 673 } 674 } 675 return serialVersionUID19a; 676 } 677 678 /** 679 * @see ClassifierFacade#isBlobType() 680 * @return boolean 681 */ 682 protected abstract boolean handleIsBlobType(); 683 684 private boolean __blobType20a; 685 private boolean __blobType20aSet = false; 686 687 /** 688 * Returns true if this type represents a Blob type. 689 * @return (boolean)handleIsBlobType() 690 */ 691 public final boolean isBlobType() 692 { 693 boolean blobType20a = this.__blobType20a; 694 if (!this.__blobType20aSet) 695 { 696 // blobType has no pre constraints 697 blobType20a = handleIsBlobType(); 698 // blobType has no post constraints 699 this.__blobType20a = blobType20a; 700 if (isMetafacadePropertyCachingEnabled()) 701 { 702 this.__blobType20aSet = true; 703 } 704 } 705 return blobType20a; 706 } 707 708 /** 709 * @see ClassifierFacade#isBooleanType() 710 * @return boolean 711 */ 712 protected abstract boolean handleIsBooleanType(); 713 714 private boolean __booleanType21a; 715 private boolean __booleanType21aSet = false; 716 717 /** 718 * Indicates if this type represents a boolean type or not. 719 * @return (boolean)handleIsBooleanType() 720 */ 721 public final boolean isBooleanType() 722 { 723 boolean booleanType21a = this.__booleanType21a; 724 if (!this.__booleanType21aSet) 725 { 726 // booleanType has no pre constraints 727 booleanType21a = handleIsBooleanType(); 728 // booleanType has no post constraints 729 this.__booleanType21a = booleanType21a; 730 if (isMetafacadePropertyCachingEnabled()) 731 { 732 this.__booleanType21aSet = true; 733 } 734 } 735 return booleanType21a; 736 } 737 738 /** 739 * @see ClassifierFacade#isTimeType() 740 * @return boolean 741 */ 742 protected abstract boolean handleIsTimeType(); 743 744 private boolean __timeType22a; 745 private boolean __timeType22aSet = false; 746 747 /** 748 * Indicates whether or not this classifier represents a time type. 749 * @return (boolean)handleIsTimeType() 750 */ 751 public final boolean isTimeType() 752 { 753 boolean timeType22a = this.__timeType22a; 754 if (!this.__timeType22aSet) 755 { 756 // timeType has no pre constraints 757 timeType22a = handleIsTimeType(); 758 // timeType has no post constraints 759 this.__timeType22a = timeType22a; 760 if (isMetafacadePropertyCachingEnabled()) 761 { 762 this.__timeType22aSet = true; 763 } 764 } 765 return timeType22a; 766 } 767 768 /** 769 * @see ClassifierFacade#isLeaf() 770 * @return boolean 771 */ 772 protected abstract boolean handleIsLeaf(); 773 774 private boolean __leaf23a; 775 private boolean __leaf23aSet = false; 776 777 /** 778 * True if this classifier cannot be extended and represent a leaf in the inheritance tree. 779 * @return (boolean)handleIsLeaf() 780 */ 781 public final boolean isLeaf() 782 { 783 boolean leaf23a = this.__leaf23a; 784 if (!this.__leaf23aSet) 785 { 786 // leaf has no pre constraints 787 leaf23a = handleIsLeaf(); 788 // leaf has no post constraints 789 this.__leaf23a = leaf23a; 790 if (isMetafacadePropertyCachingEnabled()) 791 { 792 this.__leaf23aSet = true; 793 } 794 } 795 return leaf23a; 796 } 797 798 /** 799 * @see ClassifierFacade#getImplementedInterfaceList() 800 * @return String 801 */ 802 protected abstract String handleGetImplementedInterfaceList(); 803 804 private String __implementedInterfaceList24a; 805 private boolean __implementedInterfaceList24aSet = false; 806 807 /** 808 * A comma separated list of the fully qualified names of all implemented interfaces. 809 * @return (String)handleGetImplementedInterfaceList() 810 */ 811 public final String getImplementedInterfaceList() 812 { 813 String implementedInterfaceList24a = this.__implementedInterfaceList24a; 814 if (!this.__implementedInterfaceList24aSet) 815 { 816 // implementedInterfaceList has no pre constraints 817 implementedInterfaceList24a = handleGetImplementedInterfaceList(); 818 // implementedInterfaceList has no post constraints 819 this.__implementedInterfaceList24a = implementedInterfaceList24a; 820 if (isMetafacadePropertyCachingEnabled()) 821 { 822 this.__implementedInterfaceList24aSet = true; 823 } 824 } 825 return implementedInterfaceList24a; 826 } 827 828 /** 829 * @see ClassifierFacade#getRequiredConstructorParameters() 830 * @return Collection<ModelElementFacade> 831 */ 832 protected abstract Collection<ModelElementFacade> handleGetRequiredConstructorParameters(); 833 834 private Collection<ModelElementFacade> __requiredConstructorParameters25a; 835 private boolean __requiredConstructorParameters25aSet = false; 836 837 /** 838 * A collection containing all required and/or read-only 'properties' of the classifier. 839 * Properties are any attributes and navigable connecting association ends. 840 * @return (Collection<ModelElementFacade>)handleGetRequiredConstructorParameters() 841 */ 842 public final Collection<ModelElementFacade> getRequiredConstructorParameters() 843 { 844 Collection<ModelElementFacade> requiredConstructorParameters25a = this.__requiredConstructorParameters25a; 845 if (!this.__requiredConstructorParameters25aSet) 846 { 847 // requiredConstructorParameters has no pre constraints 848 requiredConstructorParameters25a = handleGetRequiredConstructorParameters(); 849 // requiredConstructorParameters has no post constraints 850 this.__requiredConstructorParameters25a = requiredConstructorParameters25a; 851 if (isMetafacadePropertyCachingEnabled()) 852 { 853 this.__requiredConstructorParameters25aSet = true; 854 } 855 } 856 return requiredConstructorParameters25a; 857 } 858 859 /** 860 * @see ClassifierFacade#getAllRequiredConstructorParameters() 861 * @return Collection<ModelElementFacade> 862 */ 863 protected abstract Collection<ModelElementFacade> handleGetAllRequiredConstructorParameters(); 864 865 private Collection<ModelElementFacade> __allRequiredConstructorParameters26a; 866 private boolean __allRequiredConstructorParameters26aSet = false; 867 868 /** 869 * A collection containing all required and/or read-only 'properties' of the classifier and its 870 * ancestors. Properties are any attributes and navigable connecting association ends. 871 * @return (Collection<ModelElementFacade>)handleGetAllRequiredConstructorParameters() 872 */ 873 public final Collection<ModelElementFacade> getAllRequiredConstructorParameters() 874 { 875 Collection<ModelElementFacade> allRequiredConstructorParameters26a = this.__allRequiredConstructorParameters26a; 876 if (!this.__allRequiredConstructorParameters26aSet) 877 { 878 // allRequiredConstructorParameters has no pre constraints 879 allRequiredConstructorParameters26a = handleGetAllRequiredConstructorParameters(); 880 // allRequiredConstructorParameters has no post constraints 881 this.__allRequiredConstructorParameters26a = allRequiredConstructorParameters26a; 882 if (isMetafacadePropertyCachingEnabled()) 883 { 884 this.__allRequiredConstructorParameters26aSet = true; 885 } 886 } 887 return allRequiredConstructorParameters26a; 888 } 889 890 /** 891 * @see ClassifierFacade#getProperties() 892 * @return List<ModelElementFacade> 893 */ 894 protected abstract List<ModelElementFacade> handleGetProperties(); 895 896 private List<ModelElementFacade> __properties27a; 897 private boolean __properties27aSet = false; 898 899 /** 900 * A collection containing all 'properties' of the classifier. Properties are any attributes 901 * and navigable connecting association ends. 902 * @return (List<ModelElementFacade>)handleGetProperties() 903 */ 904 public final List<ModelElementFacade> getProperties() 905 { 906 List<ModelElementFacade> properties27a = this.__properties27a; 907 if (!this.__properties27aSet) 908 { 909 // properties has no pre constraints 910 properties27a = handleGetProperties(); 911 // properties has no post constraints 912 this.__properties27a = properties27a; 913 if (isMetafacadePropertyCachingEnabled()) 914 { 915 this.__properties27aSet = true; 916 } 917 } 918 return properties27a; 919 } 920 921 /** 922 * @see ClassifierFacade#getAllProperties() 923 * @return Collection<ModelElementFacade> 924 */ 925 protected abstract Collection<ModelElementFacade> handleGetAllProperties(); 926 927 private Collection<ModelElementFacade> __allProperties28a; 928 private boolean __allProperties28aSet = false; 929 930 /** 931 * A collection containing all 'properties' of the classifier and its ancestors. Properties are 932 * any attributes and navigable connecting association ends. 933 * @return (Collection<ModelElementFacade>)handleGetAllProperties() 934 */ 935 public final Collection<ModelElementFacade> getAllProperties() 936 { 937 Collection<ModelElementFacade> allProperties28a = this.__allProperties28a; 938 if (!this.__allProperties28aSet) 939 { 940 // allProperties has no pre constraints 941 allProperties28a = handleGetAllProperties(); 942 // allProperties has no post constraints 943 this.__allProperties28a = allProperties28a; 944 if (isMetafacadePropertyCachingEnabled()) 945 { 946 this.__allProperties28aSet = true; 947 } 948 } 949 return allProperties28a; 950 } 951 952 /** 953 * @see ClassifierFacade#isAssociationClass() 954 * @return boolean 955 */ 956 protected abstract boolean handleIsAssociationClass(); 957 958 private boolean __associationClass29a; 959 private boolean __associationClass29aSet = false; 960 961 /** 962 * True if the ClassifierFacade is an AssociationClass. 963 * @return (boolean)handleIsAssociationClass() 964 */ 965 public final boolean isAssociationClass() 966 { 967 boolean associationClass29a = this.__associationClass29a; 968 if (!this.__associationClass29aSet) 969 { 970 // associationClass has no pre constraints 971 associationClass29a = handleIsAssociationClass(); 972 // associationClass has no post constraints 973 this.__associationClass29a = associationClass29a; 974 if (isMetafacadePropertyCachingEnabled()) 975 { 976 this.__associationClass29aSet = true; 977 } 978 } 979 return associationClass29a; 980 } 981 982 /** 983 * @see ClassifierFacade#isClobType() 984 * @return boolean 985 */ 986 protected abstract boolean handleIsClobType(); 987 988 private boolean __clobType30a; 989 private boolean __clobType30aSet = false; 990 991 /** 992 * Returns true if this type represents a Clob type. 993 * @return (boolean)handleIsClobType() 994 */ 995 public final boolean isClobType() 996 { 997 boolean clobType30a = this.__clobType30a; 998 if (!this.__clobType30aSet) 999 { 1000 // clobType has no pre constraints 1001 clobType30a = handleIsClobType(); 1002 // clobType has no post constraints 1003 this.__clobType30a = clobType30a; 1004 if (isMetafacadePropertyCachingEnabled()) 1005 { 1006 this.__clobType30aSet = true; 1007 } 1008 } 1009 return clobType30a; 1010 } 1011 1012 /** 1013 * @see ClassifierFacade#isEmbeddedValue() 1014 * @return boolean 1015 */ 1016 protected abstract boolean handleIsEmbeddedValue(); 1017 1018 private boolean __embeddedValue31a; 1019 private boolean __embeddedValue31aSet = false; 1020 1021 /** 1022 * Indicates whether or not this classifier represents an "EmbeddedValue'. 1023 * @return (boolean)handleIsEmbeddedValue() 1024 */ 1025 public final boolean isEmbeddedValue() 1026 { 1027 boolean embeddedValue31a = this.__embeddedValue31a; 1028 if (!this.__embeddedValue31aSet) 1029 { 1030 // embeddedValue has no pre constraints 1031 embeddedValue31a = handleIsEmbeddedValue(); 1032 // embeddedValue has no post constraints 1033 this.__embeddedValue31a = embeddedValue31a; 1034 if (isMetafacadePropertyCachingEnabled()) 1035 { 1036 this.__embeddedValue31aSet = true; 1037 } 1038 } 1039 return embeddedValue31a; 1040 } 1041 1042 /** 1043 * @see ClassifierFacade#isIntegerType() 1044 * @return boolean 1045 */ 1046 protected abstract boolean handleIsIntegerType(); 1047 1048 private boolean __integerType32a; 1049 private boolean __integerType32aSet = false; 1050 1051 /** 1052 * Indicates if this type represents an int or Integer or java.lang.Integer type or not. 1053 * @return (boolean)handleIsIntegerType() 1054 */ 1055 public final boolean isIntegerType() 1056 { 1057 boolean integerType32a = this.__integerType32a; 1058 if (!this.__integerType32aSet) 1059 { 1060 // integerType has no pre constraints 1061 integerType32a = handleIsIntegerType(); 1062 // integerType has no post constraints 1063 this.__integerType32a = integerType32a; 1064 if (isMetafacadePropertyCachingEnabled()) 1065 { 1066 this.__integerType32aSet = true; 1067 } 1068 } 1069 return integerType32a; 1070 } 1071 1072 /** 1073 * @see ClassifierFacade#isFloatType() 1074 * @return boolean 1075 */ 1076 protected abstract boolean handleIsFloatType(); 1077 1078 private boolean __floatType33a; 1079 private boolean __floatType33aSet = false; 1080 1081 /** 1082 * Indicates if this type represents a Float type or not. 1083 * @return (boolean)handleIsFloatType() 1084 */ 1085 public final boolean isFloatType() 1086 { 1087 boolean floatType33a = this.__floatType33a; 1088 if (!this.__floatType33aSet) 1089 { 1090 // floatType has no pre constraints 1091 floatType33a = handleIsFloatType(); 1092 // floatType has no post constraints 1093 this.__floatType33a = floatType33a; 1094 if (isMetafacadePropertyCachingEnabled()) 1095 { 1096 this.__floatType33aSet = true; 1097 } 1098 } 1099 return floatType33a; 1100 } 1101 1102 /** 1103 * @see ClassifierFacade#isLongType() 1104 * @return boolean 1105 */ 1106 protected abstract boolean handleIsLongType(); 1107 1108 private boolean __longType34a; 1109 private boolean __longType34aSet = false; 1110 1111 /** 1112 * Indicates if this type represents a Long type or not. 1113 * @return (boolean)handleIsLongType() 1114 */ 1115 public final boolean isLongType() 1116 { 1117 boolean longType34a = this.__longType34a; 1118 if (!this.__longType34aSet) 1119 { 1120 // longType has no pre constraints 1121 longType34a = handleIsLongType(); 1122 // longType has no post constraints 1123 this.__longType34a = longType34a; 1124 if (isMetafacadePropertyCachingEnabled()) 1125 { 1126 this.__longType34aSet = true; 1127 } 1128 } 1129 return longType34a; 1130 } 1131 1132 /** 1133 * @see ClassifierFacade#isDoubleType() 1134 * @return boolean 1135 */ 1136 protected abstract boolean handleIsDoubleType(); 1137 1138 private boolean __doubleType35a; 1139 private boolean __doubleType35aSet = false; 1140 1141 /** 1142 * Indicates if this type represents a Double type or not. 1143 * @return (boolean)handleIsDoubleType() 1144 */ 1145 public final boolean isDoubleType() 1146 { 1147 boolean doubleType35a = this.__doubleType35a; 1148 if (!this.__doubleType35aSet) 1149 { 1150 // doubleType has no pre constraints 1151 doubleType35a = handleIsDoubleType(); 1152 // doubleType has no post constraints 1153 this.__doubleType35a = doubleType35a; 1154 if (isMetafacadePropertyCachingEnabled()) 1155 { 1156 this.__doubleType35aSet = true; 1157 } 1158 } 1159 return doubleType35a; 1160 } 1161 1162 /** 1163 * @see ClassifierFacade#isWrappedPrimitive() 1164 * @return boolean 1165 */ 1166 protected abstract boolean handleIsWrappedPrimitive(); 1167 1168 private boolean __wrappedPrimitive36a; 1169 private boolean __wrappedPrimitive36aSet = false; 1170 1171 /** 1172 * Returns true if this type is a wrapped primitive type. 1173 * @return (boolean)handleIsWrappedPrimitive() 1174 */ 1175 public final boolean isWrappedPrimitive() 1176 { 1177 boolean wrappedPrimitive36a = this.__wrappedPrimitive36a; 1178 if (!this.__wrappedPrimitive36aSet) 1179 { 1180 // wrappedPrimitive has no pre constraints 1181 wrappedPrimitive36a = handleIsWrappedPrimitive(); 1182 // wrappedPrimitive has no post constraints 1183 this.__wrappedPrimitive36a = wrappedPrimitive36a; 1184 if (isMetafacadePropertyCachingEnabled()) 1185 { 1186 this.__wrappedPrimitive36aSet = true; 1187 } 1188 } 1189 return wrappedPrimitive36a; 1190 } 1191 1192 /** 1193 * @see ClassifierFacade#getJavaNullString() 1194 * @return String 1195 */ 1196 protected abstract String handleGetJavaNullString(); 1197 1198 private String __javaNullString37a; 1199 private boolean __javaNullString37aSet = false; 1200 1201 /** 1202 * A String representing the null-value for this classifier type to be used in a Java 1203 * environment. 1204 * @return (String)handleGetJavaNullString() 1205 */ 1206 public final String getJavaNullString() 1207 { 1208 String javaNullString37a = this.__javaNullString37a; 1209 if (!this.__javaNullString37aSet) 1210 { 1211 // javaNullString has no pre constraints 1212 javaNullString37a = handleGetJavaNullString(); 1213 // javaNullString has no post constraints 1214 this.__javaNullString37a = javaNullString37a; 1215 if (isMetafacadePropertyCachingEnabled()) 1216 { 1217 this.__javaNullString37aSet = true; 1218 } 1219 } 1220 return javaNullString37a; 1221 } 1222 1223 /** 1224 * @see ClassifierFacade#isCharacterType() 1225 * @return boolean 1226 */ 1227 protected abstract boolean handleIsCharacterType(); 1228 1229 private boolean __characterType38a; 1230 private boolean __characterType38aSet = false; 1231 1232 /** 1233 * Indicates if this type represents a char, Character, or java.lang.Character type or not. 1234 * @return (boolean)handleIsCharacterType() 1235 */ 1236 public final boolean isCharacterType() 1237 { 1238 boolean characterType38a = this.__characterType38a; 1239 if (!this.__characterType38aSet) 1240 { 1241 // characterType has no pre constraints 1242 characterType38a = handleIsCharacterType(); 1243 // characterType has no post constraints 1244 this.__characterType38a = characterType38a; 1245 if (isMetafacadePropertyCachingEnabled()) 1246 { 1247 this.__characterType38aSet = true; 1248 } 1249 } 1250 return characterType38a; 1251 } 1252 1253 // ---------------- business methods ---------------------- 1254 1255 /** 1256 * Method to be implemented in descendants 1257 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 1258 * hierarchy and gets the attributes from the super classes as well. 1259 * @param follow 1260 * @return List<AttributeFacade> 1261 */ 1262 protected abstract List<AttributeFacade> handleGetAttributes(boolean follow); 1263 1264 /** 1265 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 1266 * hierarchy and gets the attributes from the super classes as well. 1267 * @param follow boolean 1268 * Whether or not to follow the inheritance hierarchy when retrieveing attributes. 1269 * @return handleGetAttributes(follow) 1270 */ 1271 public List<AttributeFacade> getAttributes(boolean follow) 1272 { 1273 // getAttributes has no pre constraints 1274 List<AttributeFacade> returnValue = handleGetAttributes(follow); 1275 // getAttributes has no post constraints 1276 return returnValue; 1277 } 1278 1279 /** 1280 * Method to be implemented in descendants 1281 * Return the attribute which name matches the parameter 1282 * @param name 1283 * @return AttributeFacade 1284 */ 1285 protected abstract AttributeFacade handleFindAttribute(String name); 1286 1287 /** 1288 * Return the attribute which name matches the parameter 1289 * @param name String 1290 * TODO: Model Documentation for 1291 * ClassifierFacade.findAttribute(name) 1292 * @return handleFindAttribute(name) 1293 */ 1294 public AttributeFacade findAttribute(String name) 1295 { 1296 // findAttribute has no pre constraints 1297 AttributeFacade returnValue = handleFindAttribute(name); 1298 // findAttribute has no post constraints 1299 return returnValue; 1300 } 1301 1302 /** 1303 * Method to be implemented in descendants 1304 * Gets all properties (attributes and navigable association ends) for the classifier and if 1305 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 1306 * classes as well. 1307 * @param follow 1308 * @return List 1309 */ 1310 protected abstract List handleGetProperties(boolean follow); 1311 1312 /** 1313 * Gets all properties (attributes and navigable association ends) for the classifier and if 1314 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 1315 * classes as well. 1316 * @param follow boolean 1317 * TODO: Model Documentation for 1318 * ClassifierFacade.getProperties(follow) 1319 * @return handleGetProperties(follow) 1320 */ 1321 public List getProperties(boolean follow) 1322 { 1323 // getProperties has no pre constraints 1324 List returnValue = handleGetProperties(follow); 1325 // getProperties has no post constraints 1326 return returnValue; 1327 } 1328 1329 /** 1330 * Method to be implemented in descendants 1331 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 1332 * is true goes up the inheritance hierarchy and gets the super association ends as well. 1333 * @param follow 1334 * @return List<AssociationEndFacade> 1335 */ 1336 protected abstract List<AssociationEndFacade> handleGetNavigableConnectingEnds(boolean follow); 1337 1338 /** 1339 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 1340 * is true goes up the inheritance hierarchy and gets the super association ends as well. 1341 * @param follow boolean 1342 * Whether or not to follow the inheritance hierarchy when retrieving navicables. 1343 * @return handleGetNavigableConnectingEnds(follow) 1344 */ 1345 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow) 1346 { 1347 // getNavigableConnectingEnds has no pre constraints 1348 List<AssociationEndFacade> returnValue = handleGetNavigableConnectingEnds(follow); 1349 // getNavigableConnectingEnds has no post constraints 1350 return returnValue; 1351 } 1352 1353 // ------------- associations ------------------ 1354 1355 private ClassifierFacade __getArray1r; 1356 private boolean __getArray1rSet = false; 1357 1358 /** 1359 * Assuming that the classifier is an array, this will return the non array type of the 1360 * classifier from 1361 * the model. If the classifier is NOT an array, it will just return itself. 1362 * @return (ClassifierFacade)handleGetArray() 1363 */ 1364 public final ClassifierFacade getArray() 1365 { 1366 ClassifierFacade getArray1r = this.__getArray1r; 1367 if (!this.__getArray1rSet) 1368 { 1369 // nonArray has no pre constraints 1370 Object result = handleGetArray(); 1371 MetafacadeBase shieldedResult = this.shieldedElement(result); 1372 try 1373 { 1374 getArray1r = (ClassifierFacade)shieldedResult; 1375 } 1376 catch (ClassCastException ex) 1377 { 1378 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1379 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getArray ClassifierFacade " + result + ": " + shieldedResult); 1380 } 1381 // nonArray has no post constraints 1382 this.__getArray1r = getArray1r; 1383 if (isMetafacadePropertyCachingEnabled()) 1384 { 1385 this.__getArray1rSet = true; 1386 } 1387 } 1388 return getArray1r; 1389 } 1390 1391 /** 1392 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1393 * @return Object 1394 */ 1395 protected abstract Object handleGetArray(); 1396 1397 /** 1398 * A Classifier is a classification of instances - it describes a set of instances that have 1399 * features 1400 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1401 * may be 1402 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1403 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1404 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1405 * a 1406 * description of the workings of the classifier. Classifier is defined to be a kind of 1407 * templateable 1408 * element so that a classifier can be parameterized. It is also defined to be a kind of 1409 * parameterable 1410 * element so that a classifier can be a formal template parameter. 1411 * @return (List<OperationFacade>)handleGetInstanceOperations() 1412 */ 1413 public final List<OperationFacade> getInstanceOperations() 1414 { 1415 List<OperationFacade> getInstanceOperations2r = null; 1416 // classifierFacade has no pre constraints 1417 List result = handleGetInstanceOperations(); 1418 List shieldedResult = this.shieldedElements(result); 1419 try 1420 { 1421 getInstanceOperations2r = (List<OperationFacade>)shieldedResult; 1422 } 1423 catch (ClassCastException ex) 1424 { 1425 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1426 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getInstanceOperations List<OperationFacade> " + result + ": " + shieldedResult); 1427 } 1428 // classifierFacade has no post constraints 1429 return getInstanceOperations2r; 1430 } 1431 1432 /** 1433 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1434 * @return List 1435 */ 1436 protected abstract List handleGetInstanceOperations(); 1437 1438 /** 1439 * Gets the owner of this operation 1440 * @return (List<OperationFacade>)handleGetOperations() 1441 */ 1442 public final List<OperationFacade> getOperations() 1443 { 1444 List<OperationFacade> getOperations3r = null; 1445 // owner has no pre constraints 1446 List result = handleGetOperations(); 1447 List shieldedResult = this.shieldedElements(result); 1448 try 1449 { 1450 getOperations3r = (List<OperationFacade>)shieldedResult; 1451 } 1452 catch (ClassCastException ex) 1453 { 1454 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1455 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getOperations List<OperationFacade> " + result + ": " + shieldedResult); 1456 } 1457 // owner has no post constraints 1458 return getOperations3r; 1459 } 1460 1461 /** 1462 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1463 * @return List 1464 */ 1465 protected abstract List handleGetOperations(); 1466 1467 /** 1468 * A Classifier is a classification of instances - it describes a set of instances that have 1469 * features 1470 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1471 * may be 1472 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1473 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1474 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1475 * a 1476 * description of the workings of the classifier. Classifier is defined to be a kind of 1477 * templateable 1478 * element so that a classifier can be parameterized. It is also defined to be a kind of 1479 * parameterable 1480 * element so that a classifier can be a formal template parameter. 1481 * @return (List<OperationFacade>)handleGetStaticOperations() 1482 */ 1483 public final List<OperationFacade> getStaticOperations() 1484 { 1485 List<OperationFacade> getStaticOperations4r = null; 1486 // classifierFacade has no pre constraints 1487 List result = handleGetStaticOperations(); 1488 List shieldedResult = this.shieldedElements(result); 1489 try 1490 { 1491 getStaticOperations4r = (List<OperationFacade>)shieldedResult; 1492 } 1493 catch (ClassCastException ex) 1494 { 1495 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1496 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getStaticOperations List<OperationFacade> " + result + ": " + shieldedResult); 1497 } 1498 // classifierFacade has no post constraints 1499 return getStaticOperations4r; 1500 } 1501 1502 /** 1503 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1504 * @return List 1505 */ 1506 protected abstract List handleGetStaticOperations(); 1507 1508 /** 1509 * A Classifier is a classification of instances - it describes a set of instances that have 1510 * features 1511 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1512 * may be 1513 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1514 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1515 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1516 * a 1517 * description of the workings of the classifier. Classifier is defined to be a kind of 1518 * templateable 1519 * element so that a classifier can be parameterized. It is also defined to be a kind of 1520 * parameterable 1521 * element so that a classifier can be a formal template parameter. 1522 * @return (Collection<ClassifierFacade>)handleGetAbstractions() 1523 */ 1524 public final Collection<ClassifierFacade> getAbstractions() 1525 { 1526 Collection<ClassifierFacade> getAbstractions5r = null; 1527 // classifierFacade has no pre constraints 1528 Collection result = handleGetAbstractions(); 1529 List shieldedResult = this.shieldedElements(result); 1530 try 1531 { 1532 getAbstractions5r = (Collection<ClassifierFacade>)shieldedResult; 1533 } 1534 catch (ClassCastException ex) 1535 { 1536 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1537 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getAbstractions Collection<ClassifierFacade> " + result + ": " + shieldedResult); 1538 } 1539 // classifierFacade has no post constraints 1540 return getAbstractions5r; 1541 } 1542 1543 /** 1544 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1545 * @return Collection 1546 */ 1547 protected abstract Collection handleGetAbstractions(); 1548 1549 /** 1550 * Gets the classifier who is the owner of the attributes. 1551 * @return (List<AttributeFacade>)handleGetAttributes() 1552 */ 1553 public final List<AttributeFacade> getAttributes() 1554 { 1555 List<AttributeFacade> getAttributes6r = null; 1556 // owner has no pre constraints 1557 List result = handleGetAttributes(); 1558 List shieldedResult = this.shieldedElements(result); 1559 try 1560 { 1561 getAttributes6r = (List<AttributeFacade>)shieldedResult; 1562 } 1563 catch (ClassCastException ex) 1564 { 1565 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1566 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getAttributes List<AttributeFacade> " + result + ": " + shieldedResult); 1567 } 1568 // owner has no post constraints 1569 return getAttributes6r; 1570 } 1571 1572 /** 1573 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1574 * @return List 1575 */ 1576 protected abstract List handleGetAttributes(); 1577 1578 /** 1579 * A Classifier is a classification of instances - it describes a set of instances that have 1580 * features 1581 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1582 * may be 1583 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1584 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1585 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1586 * a 1587 * description of the workings of the classifier. Classifier is defined to be a kind of 1588 * templateable 1589 * element so that a classifier can be parameterized. It is also defined to be a kind of 1590 * parameterable 1591 * element so that a classifier can be a formal template parameter. 1592 * @return (Collection<AttributeFacade>)handleGetStaticAttributes() 1593 */ 1594 public final Collection<AttributeFacade> getStaticAttributes() 1595 { 1596 Collection<AttributeFacade> getStaticAttributes7r = null; 1597 // classifierFacade has no pre constraints 1598 Collection result = handleGetStaticAttributes(); 1599 List shieldedResult = this.shieldedElements(result); 1600 try 1601 { 1602 getStaticAttributes7r = (Collection<AttributeFacade>)shieldedResult; 1603 } 1604 catch (ClassCastException ex) 1605 { 1606 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1607 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getStaticAttributes Collection<AttributeFacade> " + result + ": " + shieldedResult); 1608 } 1609 // classifierFacade has no post constraints 1610 return getStaticAttributes7r; 1611 } 1612 1613 /** 1614 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1615 * @return Collection 1616 */ 1617 protected abstract Collection handleGetStaticAttributes(); 1618 1619 /** 1620 * A Classifier is a classification of instances - it describes a set of instances that have 1621 * features 1622 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1623 * may be 1624 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1625 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1626 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1627 * a 1628 * description of the workings of the classifier. Classifier is defined to be a kind of 1629 * templateable 1630 * element so that a classifier can be parameterized. It is also defined to be a kind of 1631 * parameterable 1632 * element so that a classifier can be a formal template parameter. 1633 * @return (Collection<AssociationEndFacade>)handleGetNavigableConnectingEnds() 1634 */ 1635 public final Collection<AssociationEndFacade> getNavigableConnectingEnds() 1636 { 1637 Collection<AssociationEndFacade> getNavigableConnectingEnds8r = null; 1638 // classifierFacade has no pre constraints 1639 Collection result = handleGetNavigableConnectingEnds(); 1640 List shieldedResult = this.shieldedElements(result); 1641 try 1642 { 1643 getNavigableConnectingEnds8r = (Collection<AssociationEndFacade>)shieldedResult; 1644 } 1645 catch (ClassCastException ex) 1646 { 1647 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1648 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getNavigableConnectingEnds Collection<AssociationEndFacade> " + result + ": " + shieldedResult); 1649 } 1650 // classifierFacade has no post constraints 1651 return getNavigableConnectingEnds8r; 1652 } 1653 1654 /** 1655 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1656 * @return Collection 1657 */ 1658 protected abstract Collection handleGetNavigableConnectingEnds(); 1659 1660 /** 1661 * A Classifier is a classification of instances - it describes a set of instances that have 1662 * features 1663 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1664 * may be 1665 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1666 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1667 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1668 * a 1669 * description of the workings of the classifier. Classifier is defined to be a kind of 1670 * templateable 1671 * element so that a classifier can be parameterized. It is also defined to be a kind of 1672 * parameterable 1673 * element so that a classifier can be a formal template parameter. 1674 * @return (List<AssociationEndFacade>)handleGetAssociationEnds() 1675 */ 1676 public final List<AssociationEndFacade> getAssociationEnds() 1677 { 1678 List<AssociationEndFacade> getAssociationEnds9r = null; 1679 // classifierFacade has no pre constraints 1680 List result = handleGetAssociationEnds(); 1681 List shieldedResult = this.shieldedElements(result); 1682 try 1683 { 1684 getAssociationEnds9r = (List<AssociationEndFacade>)shieldedResult; 1685 } 1686 catch (ClassCastException ex) 1687 { 1688 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1689 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getAssociationEnds List<AssociationEndFacade> " + result + ": " + shieldedResult); 1690 } 1691 // classifierFacade has no post constraints 1692 return getAssociationEnds9r; 1693 } 1694 1695 /** 1696 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1697 * @return List 1698 */ 1699 protected abstract List handleGetAssociationEnds(); 1700 1701 /** 1702 * A Classifier is a classification of instances - it describes a set of instances that have 1703 * features 1704 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1705 * may be 1706 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1707 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1708 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1709 * a 1710 * description of the workings of the classifier. Classifier is defined to be a kind of 1711 * templateable 1712 * element so that a classifier can be parameterized. It is also defined to be a kind of 1713 * parameterable 1714 * element so that a classifier can be a formal template parameter. 1715 * @return (Collection<AttributeFacade>)handleGetInstanceAttributes() 1716 */ 1717 public final Collection<AttributeFacade> getInstanceAttributes() 1718 { 1719 Collection<AttributeFacade> getInstanceAttributes10r = null; 1720 // classifierFacade has no pre constraints 1721 Collection result = handleGetInstanceAttributes(); 1722 List shieldedResult = this.shieldedElements(result); 1723 try 1724 { 1725 getInstanceAttributes10r = (Collection<AttributeFacade>)shieldedResult; 1726 } 1727 catch (ClassCastException ex) 1728 { 1729 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1730 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getInstanceAttributes Collection<AttributeFacade> " + result + ": " + shieldedResult); 1731 } 1732 // classifierFacade has no post constraints 1733 return getInstanceAttributes10r; 1734 } 1735 1736 /** 1737 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1738 * @return Collection 1739 */ 1740 protected abstract Collection handleGetInstanceAttributes(); 1741 1742 private ClassifierFacade __getNonArray11r; 1743 private boolean __getNonArray11rSet = false; 1744 1745 /** 1746 * Gets the array type for this classifier. If this classifier already represents an array, it 1747 * just returns itself. 1748 * @return (ClassifierFacade)handleGetNonArray() 1749 */ 1750 public final ClassifierFacade getNonArray() 1751 { 1752 ClassifierFacade getNonArray11r = this.__getNonArray11r; 1753 if (!this.__getNonArray11rSet) 1754 { 1755 // array has no pre constraints 1756 Object result = handleGetNonArray(); 1757 MetafacadeBase shieldedResult = this.shieldedElement(result); 1758 try 1759 { 1760 getNonArray11r = (ClassifierFacade)shieldedResult; 1761 } 1762 catch (ClassCastException ex) 1763 { 1764 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1765 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getNonArray ClassifierFacade " + result + ": " + shieldedResult); 1766 } 1767 // array has no post constraints 1768 this.__getNonArray11r = getNonArray11r; 1769 if (isMetafacadePropertyCachingEnabled()) 1770 { 1771 this.__getNonArray11rSet = true; 1772 } 1773 } 1774 return getNonArray11r; 1775 } 1776 1777 /** 1778 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1779 * @return Object 1780 */ 1781 protected abstract Object handleGetNonArray(); 1782 1783 /** 1784 * Lists the classes associated to this one, there is no repitition of classes. The order of the 1785 * elements is predictable. 1786 * @return (Collection<ClassifierFacade>)handleGetAllAssociatedClasses() 1787 */ 1788 public final Collection<ClassifierFacade> getAllAssociatedClasses() 1789 { 1790 Collection<ClassifierFacade> getAllAssociatedClasses12r = null; 1791 // associatedClasses has no pre constraints 1792 Collection result = handleGetAllAssociatedClasses(); 1793 List shieldedResult = this.shieldedElements(result); 1794 try 1795 { 1796 getAllAssociatedClasses12r = (Collection<ClassifierFacade>)shieldedResult; 1797 } 1798 catch (ClassCastException ex) 1799 { 1800 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1801 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getAllAssociatedClasses Collection<ClassifierFacade> " + result + ": " + shieldedResult); 1802 } 1803 // associatedClasses has no post constraints 1804 return getAllAssociatedClasses12r; 1805 } 1806 1807 /** 1808 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1809 * @return Collection 1810 */ 1811 protected abstract Collection handleGetAllAssociatedClasses(); 1812 1813 /** 1814 * Lists all classes associated to this one and any ancestor classes (through generalization). 1815 * There will be no duplicates. The order of the elements is predictable. 1816 * @return (Collection<ClassifierFacade>)handleGetAssociatedClasses() 1817 */ 1818 public final Collection<ClassifierFacade> getAssociatedClasses() 1819 { 1820 Collection<ClassifierFacade> getAssociatedClasses13r = null; 1821 // allAssociatedClasses has no pre constraints 1822 Collection result = handleGetAssociatedClasses(); 1823 List shieldedResult = this.shieldedElements(result); 1824 try 1825 { 1826 getAssociatedClasses13r = (Collection<ClassifierFacade>)shieldedResult; 1827 } 1828 catch (ClassCastException ex) 1829 { 1830 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1831 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getAssociatedClasses Collection<ClassifierFacade> " + result + ": " + shieldedResult); 1832 } 1833 // allAssociatedClasses has no post constraints 1834 return getAssociatedClasses13r; 1835 } 1836 1837 /** 1838 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1839 * @return Collection 1840 */ 1841 protected abstract Collection handleGetAssociatedClasses(); 1842 1843 private Collection<ClassifierFacade> __getInterfaceAbstractions14r; 1844 private boolean __getInterfaceAbstractions14rSet = false; 1845 1846 /** 1847 * A Classifier is a classification of instances - it describes a set of instances that have 1848 * features 1849 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1850 * may be 1851 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1852 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1853 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1854 * a 1855 * description of the workings of the classifier. Classifier is defined to be a kind of 1856 * templateable 1857 * element so that a classifier can be parameterized. It is also defined to be a kind of 1858 * parameterable 1859 * element so that a classifier can be a formal template parameter. 1860 * @return (Collection<ClassifierFacade>)handleGetInterfaceAbstractions() 1861 */ 1862 public final Collection<ClassifierFacade> getInterfaceAbstractions() 1863 { 1864 Collection<ClassifierFacade> getInterfaceAbstractions14r = this.__getInterfaceAbstractions14r; 1865 if (!this.__getInterfaceAbstractions14rSet) 1866 { 1867 // classifierFacade has no pre constraints 1868 Collection result = handleGetInterfaceAbstractions(); 1869 List shieldedResult = this.shieldedElements(result); 1870 try 1871 { 1872 getInterfaceAbstractions14r = (Collection<ClassifierFacade>)shieldedResult; 1873 } 1874 catch (ClassCastException ex) 1875 { 1876 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1877 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getInterfaceAbstractions Collection<ClassifierFacade> " + result + ": " + shieldedResult); 1878 } 1879 // classifierFacade has no post constraints 1880 this.__getInterfaceAbstractions14r = getInterfaceAbstractions14r; 1881 if (isMetafacadePropertyCachingEnabled()) 1882 { 1883 this.__getInterfaceAbstractions14rSet = true; 1884 } 1885 } 1886 return getInterfaceAbstractions14r; 1887 } 1888 1889 /** 1890 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1891 * @return Collection 1892 */ 1893 protected abstract Collection handleGetInterfaceAbstractions(); 1894 1895 private ClassifierFacade __getSuperClass15r; 1896 private boolean __getSuperClass15rSet = false; 1897 1898 /** 1899 * A Classifier is a classification of instances - it describes a set of instances that have 1900 * features 1901 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1902 * may be 1903 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1904 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1905 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1906 * a 1907 * description of the workings of the classifier. Classifier is defined to be a kind of 1908 * templateable 1909 * element so that a classifier can be parameterized. It is also defined to be a kind of 1910 * parameterable 1911 * element so that a classifier can be a formal template parameter. 1912 * @return (ClassifierFacade)handleGetSuperClass() 1913 */ 1914 public final ClassifierFacade getSuperClass() 1915 { 1916 ClassifierFacade getSuperClass15r = this.__getSuperClass15r; 1917 if (!this.__getSuperClass15rSet) 1918 { 1919 // classifierFacade has no pre constraints 1920 Object result = handleGetSuperClass(); 1921 MetafacadeBase shieldedResult = this.shieldedElement(result); 1922 try 1923 { 1924 getSuperClass15r = (ClassifierFacade)shieldedResult; 1925 } 1926 catch (ClassCastException ex) 1927 { 1928 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1929 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getSuperClass ClassifierFacade " + result + ": " + shieldedResult); 1930 } 1931 // classifierFacade has no post constraints 1932 this.__getSuperClass15r = getSuperClass15r; 1933 if (isMetafacadePropertyCachingEnabled()) 1934 { 1935 this.__getSuperClass15rSet = true; 1936 } 1937 } 1938 return getSuperClass15r; 1939 } 1940 1941 /** 1942 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1943 * @return Object 1944 */ 1945 protected abstract Object handleGetSuperClass(); 1946 1947 private Collection<OperationFacade> __getImplementationOperations16r; 1948 private boolean __getImplementationOperations16rSet = false; 1949 1950 /** 1951 * A Classifier is a classification of instances - it describes a set of instances that have 1952 * features 1953 * in common. Can specify a generalization hierarchy by referencing its general classifiers. It 1954 * may be 1955 * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a 1956 * generalization hierarchy by referencing its general classifiers. Has the capability to own 1957 * collaboration uses. These collaboration uses link a collaboration with the classifier to give 1958 * a 1959 * description of the workings of the classifier. Classifier is defined to be a kind of 1960 * templateable 1961 * element so that a classifier can be parameterized. It is also defined to be a kind of 1962 * parameterable 1963 * element so that a classifier can be a formal template parameter. 1964 * @return (Collection<OperationFacade>)handleGetImplementationOperations() 1965 */ 1966 public final Collection<OperationFacade> getImplementationOperations() 1967 { 1968 Collection<OperationFacade> getImplementationOperations16r = this.__getImplementationOperations16r; 1969 if (!this.__getImplementationOperations16rSet) 1970 { 1971 // classifierFacade has no pre constraints 1972 Collection result = handleGetImplementationOperations(); 1973 List shieldedResult = this.shieldedElements(result); 1974 try 1975 { 1976 getImplementationOperations16r = (Collection<OperationFacade>)shieldedResult; 1977 } 1978 catch (ClassCastException ex) 1979 { 1980 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1981 ClassifierFacadeLogic.logger.warn("incorrect metafacade cast for ClassifierFacadeLogic.getImplementationOperations Collection<OperationFacade> " + result + ": " + shieldedResult); 1982 } 1983 // classifierFacade has no post constraints 1984 this.__getImplementationOperations16r = getImplementationOperations16r; 1985 if (isMetafacadePropertyCachingEnabled()) 1986 { 1987 this.__getImplementationOperations16rSet = true; 1988 } 1989 } 1990 return getImplementationOperations16r; 1991 } 1992 1993 /** 1994 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1995 * @return Collection 1996 */ 1997 protected abstract Collection handleGetImplementationOperations(); 1998 1999 /** 2000 * <p><b>Constraint:</b> org::andromda::metafacades::uml::ClassifierFacade::classifier must have a name</p> 2001 * <p><b>Error:</b> Each classifier must have a non-empty name.</p> 2002 * <p><b>OCL:</b> context ClassifierFacade inv: name->notEmpty()</p> 2003 * <p><b>Constraint:</b> org::andromda::metafacades::uml::ClassifierFacade::attribute names must be unique</p> 2004 * <p><b>Error:</b> Each attribute on an element must have a unique name.</p> 2005 * <p><b>OCL:</b> context ClassifierFacade 2006inv : attributes -> isUnique(name)</p> 2007 * <p><b>Constraint:</b> org::andromda::metafacades::uml::ClassifierFacade::association end names must be unique</p> 2008 * <p><b>Error:</b> The name of each navigable connecting association end must be unique.</p> 2009 * <p><b>OCL:</b> context ClassifierFacade 2010inv : navigableConnectingEnds -> isUnique(name)</p> 2011 * <p><b>Constraint:</b> org::andromda::metafacades::uml::ClassifierFacade::source dependencies must be unique</p> 2012 * <p><b>Error:</b> Each dependency going out a of an element must have a unique name.</p> 2013 * <p><b>OCL:</b> context ClassifierFacade 2014inv : sourceDependencies -> isUnique(name)</p> 2015 * @param validationMessages Collection<ModelValidationMessage> 2016 * @see GeneralizableElementFacadeLogicImpl#validateInvariants(Collection validationMessages) 2017 */ 2018 @Override 2019 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 2020 { 2021 super.validateInvariants(validationMessages); 2022 try 2023 { 2024 final Object contextElement = this.THIS(); 2025 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"name"))); 2026 if (!constraintValid) 2027 { 2028 validationMessages.add( 2029 new ModelValidationMessage( 2030 (MetafacadeBase)contextElement , 2031 "org::andromda::metafacades::uml::ClassifierFacade::classifier must have a name", 2032 "Each classifier must have a non-empty name.")); 2033 } 2034 } 2035 catch (Throwable th) 2036 { 2037 Throwable cause = th.getCause(); 2038 int depth = 0; // Some throwables have infinite recursion 2039 while (cause != null && depth < 7) 2040 { 2041 th = cause; 2042 depth++; 2043 } 2044 logger.error("Error validating constraint 'org::andromda::metafacades::uml::ClassifierFacade::classifier must have a name' ON " 2045 + this.THIS().toString() + ": " + th.getMessage(), th); 2046 } 2047 try 2048 { 2049 final Object contextElement = this.THIS(); 2050 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.isUnique(OCLIntrospector.invoke(contextElement,"attributes"),new Transformer(){public Object transform(Object object){return OCLIntrospector.invoke(object,"name");}})); 2051 if (!constraintValid) 2052 { 2053 validationMessages.add( 2054 new ModelValidationMessage( 2055 (MetafacadeBase)contextElement , 2056 "org::andromda::metafacades::uml::ClassifierFacade::attribute names must be unique", 2057 "Each attribute on an element must have a unique name.")); 2058 } 2059 } 2060 catch (Throwable th) 2061 { 2062 Throwable cause = th.getCause(); 2063 int depth = 0; // Some throwables have infinite recursion 2064 while (cause != null && depth < 7) 2065 { 2066 th = cause; 2067 depth++; 2068 } 2069 logger.error("Error validating constraint 'org::andromda::metafacades::uml::ClassifierFacade::attribute names must be unique' ON " 2070 + this.THIS().toString() + ": " + th.getMessage(), th); 2071 } 2072 try 2073 { 2074 final Object contextElement = this.THIS(); 2075 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.isUnique(OCLIntrospector.invoke(contextElement,"navigableConnectingEnds"),new Transformer(){public Object transform(Object object){return OCLIntrospector.invoke(object,"name");}})); 2076 if (!constraintValid) 2077 { 2078 validationMessages.add( 2079 new ModelValidationMessage( 2080 (MetafacadeBase)contextElement , 2081 "org::andromda::metafacades::uml::ClassifierFacade::association end names must be unique", 2082 "The name of each navigable connecting association end must be unique.")); 2083 } 2084 } 2085 catch (Throwable th) 2086 { 2087 Throwable cause = th.getCause(); 2088 int depth = 0; // Some throwables have infinite recursion 2089 while (cause != null && depth < 7) 2090 { 2091 th = cause; 2092 depth++; 2093 } 2094 logger.error("Error validating constraint 'org::andromda::metafacades::uml::ClassifierFacade::association end names must be unique' ON " 2095 + this.THIS().toString() + ": " + th.getMessage(), th); 2096 } 2097 try 2098 { 2099 final Object contextElement = this.THIS(); 2100 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.isUnique(OCLIntrospector.invoke(contextElement,"sourceDependencies"),new Transformer(){public Object transform(Object object){return OCLIntrospector.invoke(object,"name");}})); 2101 if (!constraintValid) 2102 { 2103 validationMessages.add( 2104 new ModelValidationMessage( 2105 (MetafacadeBase)contextElement , 2106 "org::andromda::metafacades::uml::ClassifierFacade::source dependencies must be unique", 2107 "Each dependency going out a of an element must have a unique name.")); 2108 } 2109 } 2110 catch (Throwable th) 2111 { 2112 Throwable cause = th.getCause(); 2113 int depth = 0; // Some throwables have infinite recursion 2114 while (cause != null && depth < 7) 2115 { 2116 th = cause; 2117 depth++; 2118 } 2119 logger.error("Error validating constraint 'org::andromda::metafacades::uml::ClassifierFacade::source dependencies must be unique' ON " 2120 + this.THIS().toString() + ": " + th.getMessage(), th); 2121 } 2122 } 2123}