001// license-header java merge-point 002// 003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 004// 005package org.andromda.cartridges.bpm4struts.metafacades; 006 007import java.util.Collection; 008import java.util.List; 009import org.andromda.core.common.Introspector; 010import org.andromda.core.metafacade.MetafacadeBase; 011import org.andromda.core.metafacade.MetafacadeFactory; 012import org.andromda.core.metafacade.ModelValidationMessage; 013import org.andromda.metafacades.uml.AssociationEndFacade; 014import org.andromda.metafacades.uml.AttributeFacade; 015import org.andromda.metafacades.uml.ClassifierFacade; 016import org.andromda.metafacades.uml.ConstraintFacade; 017import org.andromda.metafacades.uml.DependencyFacade; 018import org.andromda.metafacades.uml.GeneralizableElementFacade; 019import org.andromda.metafacades.uml.GeneralizationFacade; 020import org.andromda.metafacades.uml.ModelElementFacade; 021import org.andromda.metafacades.uml.ModelFacade; 022import org.andromda.metafacades.uml.OperationFacade; 023import org.andromda.metafacades.uml.PackageFacade; 024import org.andromda.metafacades.uml.StateMachineFacade; 025import org.andromda.metafacades.uml.StereotypeFacade; 026import org.andromda.metafacades.uml.TaggedValueFacade; 027import org.andromda.metafacades.uml.TemplateParameterFacade; 028import org.andromda.metafacades.uml.TypeMappings; 029import org.andromda.translation.ocl.validation.OCLCollections; 030import org.andromda.translation.ocl.validation.OCLExpressions; 031import org.andromda.translation.ocl.validation.OCLIntrospector; 032import org.andromda.translation.ocl.validation.OCLResultEnsurer; 033import org.apache.commons.collections.Predicate; 034import org.apache.log4j.Logger; 035 036/** 037 * TODO: Model Documentation for org.andromda.cartridges.bpm4struts.metafacades.StrutsSessionObject 038 * MetafacadeLogic for StrutsSessionObject 039 * 040 * @see StrutsSessionObject 041 */ 042public abstract class StrutsSessionObjectLogic 043 extends MetafacadeBase 044 implements StrutsSessionObject 045{ 046 /** 047 * The underlying UML object 048 * @see Object 049 */ 050 protected Object metaObject; 051 052 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 053 * @param metaObjectIn 054 * @param context 055 */ 056 protected StrutsSessionObjectLogic(Object metaObjectIn, String context) 057 { 058 super(metaObjectIn, getContext(context)); 059 this.superClassifierFacade = 060 (ClassifierFacade) 061 MetafacadeFactory.getInstance().createFacadeImpl( 062 "org.andromda.metafacades.uml.ClassifierFacade", 063 metaObjectIn, 064 getContext(context)); 065 this.metaObject = metaObjectIn; 066 } 067 068 /** 069 * The logger instance. 070 */ 071 private static final Logger logger = Logger.getLogger(StrutsSessionObjectLogic.class); 072 073 /** 074 * Gets the context for this metafacade logic instance. 075 * @param context String. Set to StrutsSessionObject if null 076 * @return context String 077 */ 078 private static String getContext(String context) 079 { 080 if (context == null) 081 { 082 context = "org.andromda.cartridges.bpm4struts.metafacades.StrutsSessionObject"; 083 } 084 return context; 085 } 086 087 private ClassifierFacade superClassifierFacade; 088 private boolean superClassifierFacadeInitialized = false; 089 090 /** 091 * Gets the ClassifierFacade parent instance. 092 * @return this.superClassifierFacade ClassifierFacade 093 */ 094 private ClassifierFacade getSuperClassifierFacade() 095 { 096 if (!this.superClassifierFacadeInitialized) 097 { 098 ((MetafacadeBase)this.superClassifierFacade).setMetafacadeContext(this.getMetafacadeContext()); 099 this.superClassifierFacadeInitialized = true; 100 } 101 return this.superClassifierFacade; 102 } 103 104 /** Reset context only for non-root metafacades 105 * @param context 106 * @see MetafacadeBase#resetMetafacadeContext(String context) 107 */ 108 @Override 109 public void resetMetafacadeContext(String context) 110 { 111 if (!this.contextRoot) // reset context only for non-root metafacades 112 { 113 context = getContext(context); // to have same value as in original constructor call 114 setMetafacadeContext (context); 115 if (this.superClassifierFacadeInitialized) 116 { 117 ((MetafacadeBase)this.superClassifierFacade).resetMetafacadeContext(context); 118 } 119 } 120 } 121 122 /** 123 * @return boolean true always 124 * @see StrutsSessionObject 125 */ 126 public boolean isStrutsSessionObjectMetaType() 127 { 128 return true; 129 } 130 131 // --------------- attributes --------------------- 132 133 /** 134 * @see org.andromda.cartridges.bpm4struts.metafacades.StrutsSessionObject#getSessionKey() 135 * @return String 136 */ 137 protected abstract String handleGetSessionKey(); 138 139 private String __sessionKey1a; 140 private boolean __sessionKey1aSet = false; 141 142 /** 143 * The key to which the instance of this object will be mapped in the session. 144 * @return (String)handleGetSessionKey() 145 */ 146 public final String getSessionKey() 147 { 148 String sessionKey1a = this.__sessionKey1a; 149 if (!this.__sessionKey1aSet) 150 { 151 // sessionKey has no pre constraints 152 sessionKey1a = handleGetSessionKey(); 153 // sessionKey has no post constraints 154 this.__sessionKey1a = sessionKey1a; 155 if (isMetafacadePropertyCachingEnabled()) 156 { 157 this.__sessionKey1aSet = true; 158 } 159 } 160 return sessionKey1a; 161 } 162 163 /** 164 * @see org.andromda.cartridges.bpm4struts.metafacades.StrutsSessionObject#getFullPath() 165 * @return String 166 */ 167 protected abstract String handleGetFullPath(); 168 169 private String __fullPath2a; 170 private boolean __fullPath2aSet = false; 171 172 /** 173 * The full path to the session object class file (comparable to the package name). 174 * @return (String)handleGetFullPath() 175 */ 176 public final String getFullPath() 177 { 178 String fullPath2a = this.__fullPath2a; 179 if (!this.__fullPath2aSet) 180 { 181 // fullPath has no pre constraints 182 fullPath2a = handleGetFullPath(); 183 // fullPath has no post constraints 184 this.__fullPath2a = fullPath2a; 185 if (isMetafacadePropertyCachingEnabled()) 186 { 187 this.__fullPath2aSet = true; 188 } 189 } 190 return fullPath2a; 191 } 192 193 // ------------- associations ------------------ 194 195 /** 196 * @return true 197 * @see ClassifierFacade 198 */ 199 public boolean isClassifierFacadeMetaType() 200 { 201 return true; 202 } 203 204 /** 205 * @return true 206 * @see GeneralizableElementFacade 207 */ 208 public boolean isGeneralizableElementFacadeMetaType() 209 { 210 return true; 211 } 212 213 /** 214 * @return true 215 * @see ModelElementFacade 216 */ 217 public boolean isModelElementFacadeMetaType() 218 { 219 return true; 220 } 221 222 // ----------- delegates to ClassifierFacade ------------ 223 /** 224 * Return the attribute which name matches the parameter 225 * @see ClassifierFacade#findAttribute(String name) 226 */ 227 public AttributeFacade findAttribute(String name) 228 { 229 return this.getSuperClassifierFacade().findAttribute(name); 230 } 231 232 /** 233 * Those abstraction dependencies for which this classifier is the client. 234 * @see ClassifierFacade#getAbstractions() 235 */ 236 public Collection<ClassifierFacade> getAbstractions() 237 { 238 return this.getSuperClassifierFacade().getAbstractions(); 239 } 240 241 /** 242 * Lists all classes associated to this one and any ancestor classes (through generalization). 243 * There will be no duplicates. The order of the elements is predictable. 244 * @see ClassifierFacade#getAllAssociatedClasses() 245 */ 246 public Collection<ClassifierFacade> getAllAssociatedClasses() 247 { 248 return this.getSuperClassifierFacade().getAllAssociatedClasses(); 249 } 250 251 /** 252 * A collection containing all 'properties' of the classifier and its ancestors. Properties are 253 * any attributes and navigable connecting association ends. 254 * @see ClassifierFacade#getAllProperties() 255 */ 256 public Collection<ModelElementFacade> getAllProperties() 257 { 258 return this.getSuperClassifierFacade().getAllProperties(); 259 } 260 261 /** 262 * A collection containing all required and/or read-only 'properties' of the classifier and its 263 * ancestors. Properties are any attributes and navigable connecting association ends. 264 * @see ClassifierFacade#getAllRequiredConstructorParameters() 265 */ 266 public Collection<ModelElementFacade> getAllRequiredConstructorParameters() 267 { 268 return this.getSuperClassifierFacade().getAllRequiredConstructorParameters(); 269 } 270 271 /** 272 * Gets the array type for this classifier. If this classifier already represents an array, it 273 * just returns itself. 274 * @see ClassifierFacade#getArray() 275 */ 276 public ClassifierFacade getArray() 277 { 278 return this.getSuperClassifierFacade().getArray(); 279 } 280 281 /** 282 * The name of the classifier as an array. 283 * @see ClassifierFacade#getArrayName() 284 */ 285 public String getArrayName() 286 { 287 return this.getSuperClassifierFacade().getArrayName(); 288 } 289 290 /** 291 * Lists the classes associated to this one, there is no repitition of classes. The order of the 292 * elements is predictable. 293 * @see ClassifierFacade#getAssociatedClasses() 294 */ 295 public Collection<ClassifierFacade> getAssociatedClasses() 296 { 297 return this.getSuperClassifierFacade().getAssociatedClasses(); 298 } 299 300 /** 301 * Gets the association ends belonging to a classifier. 302 * @see ClassifierFacade#getAssociationEnds() 303 */ 304 public List<AssociationEndFacade> getAssociationEnds() 305 { 306 return this.getSuperClassifierFacade().getAssociationEnds(); 307 } 308 309 /** 310 * Gets the attributes that belong to the classifier. 311 * @see ClassifierFacade#getAttributes() 312 */ 313 public List<AttributeFacade> getAttributes() 314 { 315 return this.getSuperClassifierFacade().getAttributes(); 316 } 317 318 /** 319 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 320 * hierarchy and gets the attributes from the super classes as well. 321 * @see ClassifierFacade#getAttributes(boolean follow) 322 */ 323 public List<AttributeFacade> getAttributes(boolean follow) 324 { 325 return this.getSuperClassifierFacade().getAttributes(follow); 326 } 327 328 /** 329 * The fully qualified name of the classifier as an array. 330 * @see ClassifierFacade#getFullyQualifiedArrayName() 331 */ 332 public String getFullyQualifiedArrayName() 333 { 334 return this.getSuperClassifierFacade().getFullyQualifiedArrayName(); 335 } 336 337 /** 338 * Returns all those operations that could be implemented at this classifier's level. This means 339 * the operations owned by this classifier as well as any realized interface's operations 340 * (recursively) in case this classifier itself is not already an interface, or generalized when 341 * this classifier is an interface. 342 * @see ClassifierFacade#getImplementationOperations() 343 */ 344 public Collection<OperationFacade> getImplementationOperations() 345 { 346 return this.getSuperClassifierFacade().getImplementationOperations(); 347 } 348 349 /** 350 * A comma separated list of the fully qualified names of all implemented interfaces. 351 * @see ClassifierFacade#getImplementedInterfaceList() 352 */ 353 public String getImplementedInterfaceList() 354 { 355 return this.getSuperClassifierFacade().getImplementedInterfaceList(); 356 } 357 358 /** 359 * Those attributes that are scoped to an instance of this class. 360 * @see ClassifierFacade#getInstanceAttributes() 361 */ 362 public Collection<AttributeFacade> getInstanceAttributes() 363 { 364 return this.getSuperClassifierFacade().getInstanceAttributes(); 365 } 366 367 /** 368 * Those operations that are scoped to an instance of this class. 369 * @see ClassifierFacade#getInstanceOperations() 370 */ 371 public List<OperationFacade> getInstanceOperations() 372 { 373 return this.getSuperClassifierFacade().getInstanceOperations(); 374 } 375 376 /** 377 * Those interfaces that are abstractions of this classifier, this basically means this 378 * classifier realizes them. 379 * @see ClassifierFacade#getInterfaceAbstractions() 380 */ 381 public Collection<ClassifierFacade> getInterfaceAbstractions() 382 { 383 return this.getSuperClassifierFacade().getInterfaceAbstractions(); 384 } 385 386 /** 387 * A String representing a new Constructor declaration for this classifier type to be used in a 388 * Java environment. 389 * @see ClassifierFacade#getJavaNewString() 390 */ 391 public String getJavaNewString() 392 { 393 return this.getSuperClassifierFacade().getJavaNewString(); 394 } 395 396 /** 397 * A String representing the null-value for this classifier type to be used in a Java 398 * environment. 399 * @see ClassifierFacade#getJavaNullString() 400 */ 401 public String getJavaNullString() 402 { 403 return this.getSuperClassifierFacade().getJavaNullString(); 404 } 405 406 /** 407 * The other ends of this classifier's association ends which are navigable. 408 * @see ClassifierFacade#getNavigableConnectingEnds() 409 */ 410 public Collection<AssociationEndFacade> getNavigableConnectingEnds() 411 { 412 return this.getSuperClassifierFacade().getNavigableConnectingEnds(); 413 } 414 415 /** 416 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 417 * is true goes up the inheritance hierarchy and gets the super association ends as well. 418 * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow) 419 */ 420 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow) 421 { 422 return this.getSuperClassifierFacade().getNavigableConnectingEnds(follow); 423 } 424 425 /** 426 * Assuming that the classifier is an array, this will return the non array type of the 427 * classifier from 428 * the model. If the classifier is NOT an array, it will just return itself. 429 * @see ClassifierFacade#getNonArray() 430 */ 431 public ClassifierFacade getNonArray() 432 { 433 return this.getSuperClassifierFacade().getNonArray(); 434 } 435 436 /** 437 * The attributes from this classifier in the form of an operation call (this example would be 438 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the 439 * classifier, the result would be an empty '()'. 440 * @see ClassifierFacade#getOperationCallFromAttributes() 441 */ 442 public String getOperationCallFromAttributes() 443 { 444 return this.getSuperClassifierFacade().getOperationCallFromAttributes(); 445 } 446 447 /** 448 * The operations owned by this classifier. 449 * @see ClassifierFacade#getOperations() 450 */ 451 public List<OperationFacade> getOperations() 452 { 453 return this.getSuperClassifierFacade().getOperations(); 454 } 455 456 /** 457 * A collection containing all 'properties' of the classifier. Properties are any attributes 458 * and navigable connecting association ends. 459 * @see ClassifierFacade#getProperties() 460 */ 461 public List<ModelElementFacade> getProperties() 462 { 463 return this.getSuperClassifierFacade().getProperties(); 464 } 465 466 /** 467 * Gets all properties (attributes and navigable association ends) for the classifier and if 468 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 469 * classes as well. 470 * @see ClassifierFacade#getProperties(boolean follow) 471 */ 472 public List getProperties(boolean follow) 473 { 474 return this.getSuperClassifierFacade().getProperties(follow); 475 } 476 477 /** 478 * A collection containing all required and/or read-only 'properties' of the classifier. 479 * Properties are any attributes and navigable connecting association ends. 480 * @see ClassifierFacade#getRequiredConstructorParameters() 481 */ 482 public Collection<ModelElementFacade> getRequiredConstructorParameters() 483 { 484 return this.getSuperClassifierFacade().getRequiredConstructorParameters(); 485 } 486 487 /** 488 * Returns the serial version UID of the underlying model element. 489 * @see ClassifierFacade#getSerialVersionUID() 490 */ 491 public long getSerialVersionUID() 492 { 493 return this.getSuperClassifierFacade().getSerialVersionUID(); 494 } 495 496 /** 497 * Those attributes that are scoped to the definition of this class. 498 * @see ClassifierFacade#getStaticAttributes() 499 */ 500 public Collection<AttributeFacade> getStaticAttributes() 501 { 502 return this.getSuperClassifierFacade().getStaticAttributes(); 503 } 504 505 /** 506 * Those operations that are scoped to the definition of this class. 507 * @see ClassifierFacade#getStaticOperations() 508 */ 509 public List<OperationFacade> getStaticOperations() 510 { 511 return this.getSuperClassifierFacade().getStaticOperations(); 512 } 513 514 /** 515 * This class' superclass, returns the generalization if it is a ClassifierFacade, null 516 * otherwise. 517 * @see ClassifierFacade#getSuperClass() 518 */ 519 public ClassifierFacade getSuperClass() 520 { 521 return this.getSuperClassifierFacade().getSuperClass(); 522 } 523 524 /** 525 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long' 526 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will 527 * return a null. Note that wrapper mappings must be defined for the namespace by defining the 528 * 'wrapperMappingsUri', this property must point to the location of the mappings file which 529 * maps the primitives to wrapper types. 530 * @see ClassifierFacade#getWrapperName() 531 */ 532 public String getWrapperName() 533 { 534 return this.getSuperClassifierFacade().getWrapperName(); 535 } 536 537 /** 538 * Indicates if this classifier is 'abstract'. 539 * @see ClassifierFacade#isAbstract() 540 */ 541 public boolean isAbstract() 542 { 543 return this.getSuperClassifierFacade().isAbstract(); 544 } 545 546 /** 547 * True if this classifier represents an array type. False otherwise. 548 * @see ClassifierFacade#isArrayType() 549 */ 550 public boolean isArrayType() 551 { 552 return this.getSuperClassifierFacade().isArrayType(); 553 } 554 555 /** 556 * True if the ClassifierFacade is an AssociationClass. 557 * @see ClassifierFacade#isAssociationClass() 558 */ 559 public boolean isAssociationClass() 560 { 561 return this.getSuperClassifierFacade().isAssociationClass(); 562 } 563 564 /** 565 * Returns true if this type represents a Blob type. 566 * @see ClassifierFacade#isBlobType() 567 */ 568 public boolean isBlobType() 569 { 570 return this.getSuperClassifierFacade().isBlobType(); 571 } 572 573 /** 574 * Indicates if this type represents a boolean type or not. 575 * @see ClassifierFacade#isBooleanType() 576 */ 577 public boolean isBooleanType() 578 { 579 return this.getSuperClassifierFacade().isBooleanType(); 580 } 581 582 /** 583 * Indicates if this type represents a char, Character, or java.lang.Character type or not. 584 * @see ClassifierFacade#isCharacterType() 585 */ 586 public boolean isCharacterType() 587 { 588 return this.getSuperClassifierFacade().isCharacterType(); 589 } 590 591 /** 592 * Returns true if this type represents a Clob type. 593 * @see ClassifierFacade#isClobType() 594 */ 595 public boolean isClobType() 596 { 597 return this.getSuperClassifierFacade().isClobType(); 598 } 599 600 /** 601 * True if this classifier represents a collection type. False otherwise. 602 * @see ClassifierFacade#isCollectionType() 603 */ 604 public boolean isCollectionType() 605 { 606 return this.getSuperClassifierFacade().isCollectionType(); 607 } 608 609 /** 610 * True/false depending on whether or not this classifier represents a datatype. A data type is 611 * a type whose instances are identified only by their value. A data type may contain attributes 612 * to support the modeling of structured data types. 613 * @see ClassifierFacade#isDataType() 614 */ 615 public boolean isDataType() 616 { 617 return this.getSuperClassifierFacade().isDataType(); 618 } 619 620 /** 621 * True when this classifier is a date type. 622 * @see ClassifierFacade#isDateType() 623 */ 624 public boolean isDateType() 625 { 626 return this.getSuperClassifierFacade().isDateType(); 627 } 628 629 /** 630 * Indicates if this type represents a Double type or not. 631 * @see ClassifierFacade#isDoubleType() 632 */ 633 public boolean isDoubleType() 634 { 635 return this.getSuperClassifierFacade().isDoubleType(); 636 } 637 638 /** 639 * Indicates whether or not this classifier represents an "EmbeddedValue'. 640 * @see ClassifierFacade#isEmbeddedValue() 641 */ 642 public boolean isEmbeddedValue() 643 { 644 return this.getSuperClassifierFacade().isEmbeddedValue(); 645 } 646 647 /** 648 * True if this classifier is in fact marked as an enumeration. 649 * @see ClassifierFacade#isEnumeration() 650 */ 651 public boolean isEnumeration() 652 { 653 return this.getSuperClassifierFacade().isEnumeration(); 654 } 655 656 /** 657 * Returns true if this type represents a 'file' type. 658 * @see ClassifierFacade#isFileType() 659 */ 660 public boolean isFileType() 661 { 662 return this.getSuperClassifierFacade().isFileType(); 663 } 664 665 /** 666 * Indicates if this type represents a Float type or not. 667 * @see ClassifierFacade#isFloatType() 668 */ 669 public boolean isFloatType() 670 { 671 return this.getSuperClassifierFacade().isFloatType(); 672 } 673 674 /** 675 * Indicates if this type represents an int or Integer or java.lang.Integer type or not. 676 * @see ClassifierFacade#isIntegerType() 677 */ 678 public boolean isIntegerType() 679 { 680 return this.getSuperClassifierFacade().isIntegerType(); 681 } 682 683 /** 684 * True/false depending on whether or not this Classifier represents an interface. 685 * @see ClassifierFacade#isInterface() 686 */ 687 public boolean isInterface() 688 { 689 return this.getSuperClassifierFacade().isInterface(); 690 } 691 692 /** 693 * True if this classifier cannot be extended and represent a leaf in the inheritance tree. 694 * @see ClassifierFacade#isLeaf() 695 */ 696 public boolean isLeaf() 697 { 698 return this.getSuperClassifierFacade().isLeaf(); 699 } 700 701 /** 702 * True if this classifier represents a list type. False otherwise. 703 * @see ClassifierFacade#isListType() 704 */ 705 public boolean isListType() 706 { 707 return this.getSuperClassifierFacade().isListType(); 708 } 709 710 /** 711 * Indicates if this type represents a Long type or not. 712 * @see ClassifierFacade#isLongType() 713 */ 714 public boolean isLongType() 715 { 716 return this.getSuperClassifierFacade().isLongType(); 717 } 718 719 /** 720 * Indicates whether or not this classifier represents a Map type. 721 * @see ClassifierFacade#isMapType() 722 */ 723 public boolean isMapType() 724 { 725 return this.getSuperClassifierFacade().isMapType(); 726 } 727 728 /** 729 * Indicates whether or not this classifier represents a primitive type. 730 * @see ClassifierFacade#isPrimitive() 731 */ 732 public boolean isPrimitive() 733 { 734 return this.getSuperClassifierFacade().isPrimitive(); 735 } 736 737 /** 738 * True if this classifier represents a set type. False otherwise. 739 * @see ClassifierFacade#isSetType() 740 */ 741 public boolean isSetType() 742 { 743 return this.getSuperClassifierFacade().isSetType(); 744 } 745 746 /** 747 * Indicates whether or not this classifier represents a string type. 748 * @see ClassifierFacade#isStringType() 749 */ 750 public boolean isStringType() 751 { 752 return this.getSuperClassifierFacade().isStringType(); 753 } 754 755 /** 756 * Indicates whether or not this classifier represents a time type. 757 * @see ClassifierFacade#isTimeType() 758 */ 759 public boolean isTimeType() 760 { 761 return this.getSuperClassifierFacade().isTimeType(); 762 } 763 764 /** 765 * Returns true if this type is a wrapped primitive type. 766 * @see ClassifierFacade#isWrappedPrimitive() 767 */ 768 public boolean isWrappedPrimitive() 769 { 770 return this.getSuperClassifierFacade().isWrappedPrimitive(); 771 } 772 773 /** 774 * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set 775 * to true. 776 * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow) 777 */ 778 public Object findTaggedValue(String tagName, boolean follow) 779 { 780 return this.getSuperClassifierFacade().findTaggedValue(tagName, follow); 781 } 782 783 /** 784 * All generalizations for this generalizable element, goes up the inheritance tree. 785 * @see GeneralizableElementFacade#getAllGeneralizations() 786 */ 787 public Collection<GeneralizableElementFacade> getAllGeneralizations() 788 { 789 return this.getSuperClassifierFacade().getAllGeneralizations(); 790 } 791 792 /** 793 * All specializations (travels down the inheritance hierarchy). 794 * @see GeneralizableElementFacade#getAllSpecializations() 795 */ 796 public Collection<GeneralizableElementFacade> getAllSpecializations() 797 { 798 return this.getSuperClassifierFacade().getAllSpecializations(); 799 } 800 801 /** 802 * Gets the direct generalization for this generalizable element. 803 * @see GeneralizableElementFacade#getGeneralization() 804 */ 805 public GeneralizableElementFacade getGeneralization() 806 { 807 return this.getSuperClassifierFacade().getGeneralization(); 808 } 809 810 /** 811 * Gets the actual links that this generalization element is part of (it plays either the 812 * specialization or generalization). 813 * @see GeneralizableElementFacade#getGeneralizationLinks() 814 */ 815 public Collection<GeneralizationFacade> getGeneralizationLinks() 816 { 817 return this.getSuperClassifierFacade().getGeneralizationLinks(); 818 } 819 820 /** 821 * A comma separated list of the fully qualified names of all generalizations. 822 * @see GeneralizableElementFacade#getGeneralizationList() 823 */ 824 public String getGeneralizationList() 825 { 826 return this.getSuperClassifierFacade().getGeneralizationList(); 827 } 828 829 /** 830 * The element found when you recursively follow the generalization path up to the root. If an 831 * element has no generalization itself will be considered the root. 832 * @see GeneralizableElementFacade#getGeneralizationRoot() 833 */ 834 public GeneralizableElementFacade getGeneralizationRoot() 835 { 836 return this.getSuperClassifierFacade().getGeneralizationRoot(); 837 } 838 839 /** 840 * Return all generalizations (ancestors) from this generalizable element. 841 * @see GeneralizableElementFacade#getGeneralizations() 842 */ 843 public Collection<GeneralizableElementFacade> getGeneralizations() 844 { 845 return this.getSuperClassifierFacade().getGeneralizations(); 846 } 847 848 /** 849 * Gets the direct specializations (i.e. sub elements) for this generalizatble element. 850 * @see GeneralizableElementFacade#getSpecializations() 851 */ 852 public Collection<GeneralizableElementFacade> getSpecializations() 853 { 854 return this.getSuperClassifierFacade().getSpecializations(); 855 } 856 857 /** 858 * Copies all tagged values from the given ModelElementFacade to this model element facade. 859 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element) 860 */ 861 public void copyTaggedValues(ModelElementFacade element) 862 { 863 this.getSuperClassifierFacade().copyTaggedValues(element); 864 } 865 866 /** 867 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 868 * one found will be returned. 869 * @see ModelElementFacade#findTaggedValue(String tagName) 870 */ 871 public Object findTaggedValue(String tagName) 872 { 873 return this.getSuperClassifierFacade().findTaggedValue(tagName); 874 } 875 876 /** 877 * Returns all the values for the tagged value with the specified name. The returned collection 878 * will contains only String instances, or will be empty. Never null. 879 * @see ModelElementFacade#findTaggedValues(String tagName) 880 */ 881 public Collection<Object> findTaggedValues(String tagName) 882 { 883 return this.getSuperClassifierFacade().findTaggedValues(tagName); 884 } 885 886 /** 887 * Returns the fully qualified name of the model element. The fully qualified name includes 888 * complete package qualified name of the underlying model element. The templates parameter will 889 * be replaced by the correct one given the binding relation of the parameter to this element. 890 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement) 891 */ 892 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement) 893 { 894 return this.getSuperClassifierFacade().getBindedFullyQualifiedName(bindedElement); 895 } 896 897 /** 898 * Gets all constraints belonging to the model element. 899 * @see ModelElementFacade#getConstraints() 900 */ 901 public Collection<ConstraintFacade> getConstraints() 902 { 903 return this.getSuperClassifierFacade().getConstraints(); 904 } 905 906 /** 907 * Returns the constraints of the argument kind that have been placed onto this model. Typical 908 * kinds are "inv", "pre" and "post". Other kinds are possible. 909 * @see ModelElementFacade#getConstraints(String kind) 910 */ 911 public Collection<ConstraintFacade> getConstraints(String kind) 912 { 913 return this.getSuperClassifierFacade().getConstraints(kind); 914 } 915 916 /** 917 * Gets the documentation for the model element, The indent argument is prefixed to each line. 918 * By default this method wraps lines after 64 characters. 919 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 920 * @see ModelElementFacade#getDocumentation(String indent) 921 */ 922 public String getDocumentation(String indent) 923 { 924 return this.getSuperClassifierFacade().getDocumentation(indent); 925 } 926 927 /** 928 * This method returns the documentation for this model element, with the lines wrapped after 929 * the specified number of characters, values of less than 1 will indicate no line wrapping is 930 * required. By default paragraphs are returned as HTML. 931 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 932 * @see ModelElementFacade#getDocumentation(String indent, int lineLength) 933 */ 934 public String getDocumentation(String indent, int lineLength) 935 { 936 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength); 937 } 938 939 /** 940 * This method returns the documentation for this model element, with the lines wrapped after 941 * the specified number of characters, values of less than 1 will indicate no line wrapping is 942 * required. HTML style determines if HTML Escaping is applied. 943 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle) 944 */ 945 public String getDocumentation(String indent, int lineLength, boolean htmlStyle) 946 { 947 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength, htmlStyle); 948 } 949 950 /** 951 * The fully qualified name of this model element. 952 * @see ModelElementFacade#getFullyQualifiedName() 953 */ 954 public String getFullyQualifiedName() 955 { 956 return this.getSuperClassifierFacade().getFullyQualifiedName(); 957 } 958 959 /** 960 * Returns the fully qualified name of the model element. The fully qualified name includes 961 * complete package qualified name of the underlying model element. If modelName is true, then 962 * the original name of the model element (the name contained within the model) will be the name 963 * returned, otherwise a name from a language mapping will be returned. 964 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName) 965 */ 966 public String getFullyQualifiedName(boolean modelName) 967 { 968 return this.getSuperClassifierFacade().getFullyQualifiedName(modelName); 969 } 970 971 /** 972 * Returns the fully qualified name as a path, the returned value always starts with out a slash 973 * '/'. 974 * @see ModelElementFacade#getFullyQualifiedNamePath() 975 */ 976 public String getFullyQualifiedNamePath() 977 { 978 return this.getSuperClassifierFacade().getFullyQualifiedNamePath(); 979 } 980 981 /** 982 * Gets the unique identifier of the underlying model element. 983 * @see ModelElementFacade#getId() 984 */ 985 public String getId() 986 { 987 return this.getSuperClassifierFacade().getId(); 988 } 989 990 /** 991 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which 992 * are not represented by other properties, i.e. native, transient, volatile, synchronized, 993 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings: 994 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require 995 * JDK5 compiler level. 996 * @see ModelElementFacade#getKeywords() 997 */ 998 public Collection<String> getKeywords() 999 { 1000 return this.getSuperClassifierFacade().getKeywords(); 1001 } 1002 1003 /** 1004 * UML2: Retrieves a localized label for this named element. 1005 * @see ModelElementFacade#getLabel() 1006 */ 1007 public String getLabel() 1008 { 1009 return this.getSuperClassifierFacade().getLabel(); 1010 } 1011 1012 /** 1013 * The language mappings that have been set for this model element. 1014 * @see ModelElementFacade#getLanguageMappings() 1015 */ 1016 public TypeMappings getLanguageMappings() 1017 { 1018 return this.getSuperClassifierFacade().getLanguageMappings(); 1019 } 1020 1021 /** 1022 * Return the model containing this model element (multiple models may be loaded and processed 1023 * at the same time). 1024 * @see ModelElementFacade#getModel() 1025 */ 1026 public ModelFacade getModel() 1027 { 1028 return this.getSuperClassifierFacade().getModel(); 1029 } 1030 1031 /** 1032 * The name of the model element. 1033 * @see ModelElementFacade#getName() 1034 */ 1035 public String getName() 1036 { 1037 return this.getSuperClassifierFacade().getName(); 1038 } 1039 1040 /** 1041 * Gets the package to which this model element belongs. 1042 * @see ModelElementFacade#getPackage() 1043 */ 1044 public ModelElementFacade getPackage() 1045 { 1046 return this.getSuperClassifierFacade().getPackage(); 1047 } 1048 1049 /** 1050 * The name of this model element's package. 1051 * @see ModelElementFacade#getPackageName() 1052 */ 1053 public String getPackageName() 1054 { 1055 return this.getSuperClassifierFacade().getPackageName(); 1056 } 1057 1058 /** 1059 * Gets the package name (optionally providing the ability to retrieve the model name and not 1060 * the mapped name). 1061 * @see ModelElementFacade#getPackageName(boolean modelName) 1062 */ 1063 public String getPackageName(boolean modelName) 1064 { 1065 return this.getSuperClassifierFacade().getPackageName(modelName); 1066 } 1067 1068 /** 1069 * Returns the package as a path, the returned value always starts with out a slash '/'. 1070 * @see ModelElementFacade#getPackagePath() 1071 */ 1072 public String getPackagePath() 1073 { 1074 return this.getSuperClassifierFacade().getPackagePath(); 1075 } 1076 1077 /** 1078 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the 1079 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from 1080 * the names of the containing namespaces starting at the root of the hierarchy and ending with 1081 * the name of the NamedElement itself. 1082 * @see ModelElementFacade#getQualifiedName() 1083 */ 1084 public String getQualifiedName() 1085 { 1086 return this.getSuperClassifierFacade().getQualifiedName(); 1087 } 1088 1089 /** 1090 * Gets the root package for the model element. 1091 * @see ModelElementFacade#getRootPackage() 1092 */ 1093 public PackageFacade getRootPackage() 1094 { 1095 return this.getSuperClassifierFacade().getRootPackage(); 1096 } 1097 1098 /** 1099 * Gets the dependencies for which this model element is the source. 1100 * @see ModelElementFacade#getSourceDependencies() 1101 */ 1102 public Collection<DependencyFacade> getSourceDependencies() 1103 { 1104 return this.getSuperClassifierFacade().getSourceDependencies(); 1105 } 1106 1107 /** 1108 * If this model element is the context of an activity graph, this represents that activity 1109 * graph. 1110 * @see ModelElementFacade#getStateMachineContext() 1111 */ 1112 public StateMachineFacade getStateMachineContext() 1113 { 1114 return this.getSuperClassifierFacade().getStateMachineContext(); 1115 } 1116 1117 /** 1118 * The collection of ALL stereotype names for this model element. 1119 * @see ModelElementFacade#getStereotypeNames() 1120 */ 1121 public Collection<String> getStereotypeNames() 1122 { 1123 return this.getSuperClassifierFacade().getStereotypeNames(); 1124 } 1125 1126 /** 1127 * Gets all stereotypes for this model element. 1128 * @see ModelElementFacade#getStereotypes() 1129 */ 1130 public Collection<StereotypeFacade> getStereotypes() 1131 { 1132 return this.getSuperClassifierFacade().getStereotypes(); 1133 } 1134 1135 /** 1136 * Return the TaggedValues associated with this model element, under all stereotypes. 1137 * @see ModelElementFacade#getTaggedValues() 1138 */ 1139 public Collection<TaggedValueFacade> getTaggedValues() 1140 { 1141 return this.getSuperClassifierFacade().getTaggedValues(); 1142 } 1143 1144 /** 1145 * Gets the dependencies for which this model element is the target. 1146 * @see ModelElementFacade#getTargetDependencies() 1147 */ 1148 public Collection<DependencyFacade> getTargetDependencies() 1149 { 1150 return this.getSuperClassifierFacade().getTargetDependencies(); 1151 } 1152 1153 /** 1154 * Get the template parameter for this model element having the parameterName 1155 * @see ModelElementFacade#getTemplateParameter(String parameterName) 1156 */ 1157 public Object getTemplateParameter(String parameterName) 1158 { 1159 return this.getSuperClassifierFacade().getTemplateParameter(parameterName); 1160 } 1161 1162 /** 1163 * Get the template parameters for this model element 1164 * @see ModelElementFacade#getTemplateParameters() 1165 */ 1166 public Collection<TemplateParameterFacade> getTemplateParameters() 1167 { 1168 return this.getSuperClassifierFacade().getTemplateParameters(); 1169 } 1170 1171 /** 1172 * The visibility (i.e. public, private, protected or package) of the model element, will 1173 * attempt a lookup for these values in the language mappings (if any). 1174 * @see ModelElementFacade#getVisibility() 1175 */ 1176 public String getVisibility() 1177 { 1178 return this.getSuperClassifierFacade().getVisibility(); 1179 } 1180 1181 /** 1182 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 1183 * is taken into account when searching for the stereotype), false otherwise. 1184 * @see ModelElementFacade#hasExactStereotype(String stereotypeName) 1185 */ 1186 public boolean hasExactStereotype(String stereotypeName) 1187 { 1188 return this.getSuperClassifierFacade().hasExactStereotype(stereotypeName); 1189 } 1190 1191 /** 1192 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 1193 * pipe, semicolon, or << >> 1194 * @see ModelElementFacade#hasKeyword(String keywordName) 1195 */ 1196 public boolean hasKeyword(String keywordName) 1197 { 1198 return this.getSuperClassifierFacade().hasKeyword(keywordName); 1199 } 1200 1201 /** 1202 * Returns true if the model element has the specified stereotype. If the stereotype itself 1203 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 1204 * one of the stereotype's ancestors has a matching name this method will return true, false 1205 * otherwise. 1206 * For example, if we have a certain stereotype called <<exception>> and a model element has a 1207 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 1208 * method with 'stereotypeName' defined as 'exception' the method would return true since 1209 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 1210 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 1211 * @see ModelElementFacade#hasStereotype(String stereotypeName) 1212 */ 1213 public boolean hasStereotype(String stereotypeName) 1214 { 1215 return this.getSuperClassifierFacade().hasStereotype(stereotypeName); 1216 } 1217 1218 /** 1219 * True if there are target dependencies from this element that are instances of BindingFacade. 1220 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies. 1221 * @see ModelElementFacade#isBindingDependenciesPresent() 1222 */ 1223 public boolean isBindingDependenciesPresent() 1224 { 1225 return this.getSuperClassifierFacade().isBindingDependenciesPresent(); 1226 } 1227 1228 /** 1229 * Indicates if any constraints are present on this model element. 1230 * @see ModelElementFacade#isConstraintsPresent() 1231 */ 1232 public boolean isConstraintsPresent() 1233 { 1234 return this.getSuperClassifierFacade().isConstraintsPresent(); 1235 } 1236 1237 /** 1238 * Indicates if any documentation is present on this model element. 1239 * @see ModelElementFacade#isDocumentationPresent() 1240 */ 1241 public boolean isDocumentationPresent() 1242 { 1243 return this.getSuperClassifierFacade().isDocumentationPresent(); 1244 } 1245 1246 /** 1247 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript. 1248 * @see ModelElementFacade#isReservedWord() 1249 */ 1250 public boolean isReservedWord() 1251 { 1252 return this.getSuperClassifierFacade().isReservedWord(); 1253 } 1254 1255 /** 1256 * True is there are template parameters on this model element. For UML2, applies to Class, 1257 * Operation, Property, and Parameter. 1258 * @see ModelElementFacade#isTemplateParametersPresent() 1259 */ 1260 public boolean isTemplateParametersPresent() 1261 { 1262 return this.getSuperClassifierFacade().isTemplateParametersPresent(); 1263 } 1264 1265 /** 1266 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++, 1267 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on 1268 * Enumerations and Interfaces, optionally applies on other model elements. 1269 * @see ModelElementFacade#isValidIdentifierName() 1270 */ 1271 public boolean isValidIdentifierName() 1272 { 1273 return this.getSuperClassifierFacade().isValidIdentifierName(); 1274 } 1275 1276 /** 1277 * Searches for the constraint with the specified 'name' on this model element, and if found 1278 * translates it using the specified 'translation' from a translation library discovered by the 1279 * framework. 1280 * @see ModelElementFacade#translateConstraint(String name, String translation) 1281 */ 1282 public String translateConstraint(String name, String translation) 1283 { 1284 return this.getSuperClassifierFacade().translateConstraint(name, translation); 1285 } 1286 1287 /** 1288 * Translates all constraints belonging to this model element with the given 'translation'. 1289 * @see ModelElementFacade#translateConstraints(String translation) 1290 */ 1291 public String[] translateConstraints(String translation) 1292 { 1293 return this.getSuperClassifierFacade().translateConstraints(translation); 1294 } 1295 1296 /** 1297 * Translates the constraints of the specified 'kind' belonging to this model element. 1298 * @see ModelElementFacade#translateConstraints(String kind, String translation) 1299 */ 1300 public String[] translateConstraints(String kind, String translation) 1301 { 1302 return this.getSuperClassifierFacade().translateConstraints(kind, translation); 1303 } 1304 1305 /** 1306 * @see MetafacadeBase#initialize() 1307 */ 1308 @Override 1309 public void initialize() 1310 { 1311 this.getSuperClassifierFacade().initialize(); 1312 } 1313 1314 /** 1315 * @return Object getSuperClassifierFacade().getValidationOwner() 1316 * @see MetafacadeBase#getValidationOwner() 1317 */ 1318 @Override 1319 public Object getValidationOwner() 1320 { 1321 Object owner = this.getSuperClassifierFacade().getValidationOwner(); 1322 return owner; 1323 } 1324 1325 /** 1326 * @return String getSuperClassifierFacade().getValidationName() 1327 * @see MetafacadeBase#getValidationName() 1328 */ 1329 @Override 1330 public String getValidationName() 1331 { 1332 String name = this.getSuperClassifierFacade().getValidationName(); 1333 return name; 1334 } 1335 1336 /** 1337 * <p><b>Constraint:</b> org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs a name</p> 1338 * <p><b>Error:</b> Each session object needs a good name, it will be used to look up the actual instance in the session scope.</p> 1339 * <p><b>OCL:</b> context StrutsSessionObject inv: name->notEmpty()</p> 1340 * <p><b>Constraint:</b> org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs public attributes</p> 1341 * <p><b>Error:</b> All attributes on a session object must have a public visibility.</p> 1342 * <p><b>OCL:</b> context StrutsSessionObject 1343inv : attributes -> forAll(visibility = 'public')</p> 1344 * @param validationMessages Collection<ModelValidationMessage> 1345 * @see MetafacadeBase#validateInvariants(Collection validationMessages) 1346 */ 1347 @Override 1348 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 1349 { 1350 this.getSuperClassifierFacade().validateInvariants(validationMessages); 1351 try 1352 { 1353 final Object contextElement = this.THIS(); 1354 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"name"))); 1355 if (!constraintValid) 1356 { 1357 validationMessages.add( 1358 new ModelValidationMessage( 1359 (MetafacadeBase)contextElement , 1360 "org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs a name", 1361 "Each session object needs a good name, it will be used to look up the actual instance in the session scope.")); 1362 } 1363 } 1364 catch (Throwable th) 1365 { 1366 Throwable cause = th.getCause(); 1367 int depth = 0; // Some throwables have infinite recursion 1368 while (cause != null && depth < 7) 1369 { 1370 th = cause; 1371 depth++; 1372 } 1373 logger.error("Error validating constraint 'org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs a name' ON " 1374 + this.THIS().toString() + ": " + th.getMessage(), th); 1375 } 1376 try 1377 { 1378 final Object contextElement = this.THIS(); 1379 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.forAll(OCLIntrospector.invoke(contextElement,"attributes"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf(OCLExpressions.equal(OCLIntrospector.invoke(object,"visibility"),"public"))).booleanValue();}})); 1380 if (!constraintValid) 1381 { 1382 validationMessages.add( 1383 new ModelValidationMessage( 1384 (MetafacadeBase)contextElement , 1385 "org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs public attributes", 1386 "All attributes on a session object must have a public visibility.")); 1387 } 1388 } 1389 catch (Throwable th) 1390 { 1391 Throwable cause = th.getCause(); 1392 int depth = 0; // Some throwables have infinite recursion 1393 while (cause != null && depth < 7) 1394 { 1395 th = cause; 1396 depth++; 1397 } 1398 logger.error("Error validating constraint 'org::andromda::cartridges::bpm4struts::metafacades::StrutsSessionObject::session object needs public attributes' ON " 1399 + this.THIS().toString() + ": " + th.getMessage(), th); 1400 } 1401 } 1402 1403 /** 1404 * The property that stores the name of the metafacade. 1405 */ 1406 private static final String NAME_PROPERTY = "name"; 1407 private static final String FQNAME_PROPERTY = "fullyQualifiedName"; 1408 1409 /** 1410 * @see Object#toString() 1411 */ 1412 @Override 1413 public String toString() 1414 { 1415 final StringBuilder toString = new StringBuilder(this.getClass().getName()); 1416 toString.append("["); 1417 try 1418 { 1419 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY)); 1420 } 1421 catch (final Throwable tryAgain) 1422 { 1423 try 1424 { 1425 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY)); 1426 } 1427 catch (final Throwable ignore) 1428 { 1429 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property 1430 } 1431 } 1432 toString.append("]"); 1433 return toString.toString(); 1434 } 1435}