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.common.Introspector; 010import org.andromda.core.metafacade.MetafacadeBase; 011import org.andromda.core.metafacade.ModelValidationMessage; 012import org.andromda.metafacades.uml.ConstraintFacade; 013import org.andromda.metafacades.uml.DependencyFacade; 014import org.andromda.metafacades.uml.ModelElementFacade; 015import org.andromda.metafacades.uml.ModelFacade; 016import org.andromda.metafacades.uml.PackageFacade; 017import org.andromda.metafacades.uml.StateMachineFacade; 018import org.andromda.metafacades.uml.StereotypeFacade; 019import org.andromda.metafacades.uml.TaggedValueFacade; 020import org.andromda.metafacades.uml.TemplateParameterFacade; 021import org.andromda.metafacades.uml.TypeMappings; 022import org.apache.log4j.Logger; 023import org.omg.uml.foundation.core.ModelElement; 024 025/** 026 * Represents a model element. It may be an Element or NamedElement. A named element is an element 027 * in a model that may have a name. An element is a constituent of a model. As such, it has the 028 * capability of owning other elements. 029 * MetafacadeLogic for ModelElementFacade 030 * 031 * @see ModelElementFacade 032 */ 033public abstract class ModelElementFacadeLogic 034 extends MetafacadeBase 035 implements ModelElementFacade 036{ 037 /** 038 * The underlying UML object 039 * @see ModelElement 040 */ 041 protected ModelElement metaObject; 042 043 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 044 * @param metaObjectIn 045 * @param context 046 */ 047 protected ModelElementFacadeLogic(ModelElement metaObjectIn, String context) 048 { 049 super(metaObjectIn, getContext(context)); 050 this.metaObject = metaObjectIn; 051 } 052 053 /** 054 * The logger instance. 055 */ 056 private static final Logger logger = Logger.getLogger(ModelElementFacadeLogic.class); 057 058 /** 059 * Gets the context for this metafacade logic instance. 060 * @param context String. Set to ModelElementFacade if null 061 * @return context String 062 */ 063 private static String getContext(String context) 064 { 065 if (context == null) 066 { 067 context = "org.andromda.metafacades.uml.ModelElementFacade"; 068 } 069 return context; 070 } 071 072 /** Reset context only for non-root metafacades 073 * @param context 074 */ 075 @Override 076 public void resetMetafacadeContext(String context) 077 { 078 if (!this.contextRoot) // reset context only for non-root metafacades 079 { 080 context = getContext(context); // to have same value as in original constructor call 081 setMetafacadeContext (context); 082 } 083 } 084 085 /** 086 * @return boolean true always 087 * @see ModelElementFacade 088 */ 089 public boolean isModelElementFacadeMetaType() 090 { 091 return true; 092 } 093 094 // --------------- attributes --------------------- 095 096 /** 097 * @see ModelElementFacade#getVisibility() 098 * @return String 099 */ 100 protected abstract String handleGetVisibility(); 101 102 private String __visibility1a; 103 private boolean __visibility1aSet = false; 104 105 /** 106 * The visibility (i.e. public, private, protected or package) of the model element, will 107 * attempt a lookup for these values in the language mappings (if any). 108 * @return (String)handleGetVisibility() 109 */ 110 public final String getVisibility() 111 { 112 String visibility1a = this.__visibility1a; 113 if (!this.__visibility1aSet) 114 { 115 // visibility has no pre constraints 116 visibility1a = handleGetVisibility(); 117 // visibility has no post constraints 118 this.__visibility1a = visibility1a; 119 if (isMetafacadePropertyCachingEnabled()) 120 { 121 this.__visibility1aSet = true; 122 } 123 } 124 return visibility1a; 125 } 126 127 /** 128 * @see ModelElementFacade#getPackagePath() 129 * @return String 130 */ 131 protected abstract String handleGetPackagePath(); 132 133 private String __packagePath2a; 134 private boolean __packagePath2aSet = false; 135 136 /** 137 * Returns the package as a path, the returned value always starts with out a slash '/'. 138 * @return (String)handleGetPackagePath() 139 */ 140 public final String getPackagePath() 141 { 142 String packagePath2a = this.__packagePath2a; 143 if (!this.__packagePath2aSet) 144 { 145 // packagePath has no pre constraints 146 packagePath2a = handleGetPackagePath(); 147 // packagePath has no post constraints 148 this.__packagePath2a = packagePath2a; 149 if (isMetafacadePropertyCachingEnabled()) 150 { 151 this.__packagePath2aSet = true; 152 } 153 } 154 return packagePath2a; 155 } 156 157 /** 158 * @see ModelElementFacade#getName() 159 * @return String 160 */ 161 protected abstract String handleGetName(); 162 163 private String __name3a; 164 private boolean __name3aSet = false; 165 166 /** 167 * The name of the model element. 168 * @return (String)handleGetName() 169 */ 170 public final String getName() 171 { 172 String name3a = this.__name3a; 173 if (!this.__name3aSet) 174 { 175 // name has no pre constraints 176 name3a = handleGetName(); 177 // name has no post constraints 178 this.__name3a = name3a; 179 if (isMetafacadePropertyCachingEnabled()) 180 { 181 this.__name3aSet = true; 182 } 183 } 184 return name3a; 185 } 186 187 /** 188 * @see ModelElementFacade#getPackageName() 189 * @return String 190 */ 191 protected abstract String handleGetPackageName(); 192 193 private String __packageName4a; 194 private boolean __packageName4aSet = false; 195 196 /** 197 * The name of this model element's package. 198 * @return (String)handleGetPackageName() 199 */ 200 public final String getPackageName() 201 { 202 String packageName4a = this.__packageName4a; 203 if (!this.__packageName4aSet) 204 { 205 // packageName has no pre constraints 206 packageName4a = handleGetPackageName(); 207 // packageName has no post constraints 208 this.__packageName4a = packageName4a; 209 if (isMetafacadePropertyCachingEnabled()) 210 { 211 this.__packageName4aSet = true; 212 } 213 } 214 return packageName4a; 215 } 216 217 /** 218 * @see ModelElementFacade#getFullyQualifiedName() 219 * @return String 220 */ 221 protected abstract String handleGetFullyQualifiedName(); 222 223 private String __fullyQualifiedName5a; 224 private boolean __fullyQualifiedName5aSet = false; 225 226 /** 227 * The fully qualified name of this model element. 228 * @return (String)handleGetFullyQualifiedName() 229 */ 230 public final String getFullyQualifiedName() 231 { 232 String fullyQualifiedName5a = this.__fullyQualifiedName5a; 233 if (!this.__fullyQualifiedName5aSet) 234 { 235 // fullyQualifiedName has no pre constraints 236 fullyQualifiedName5a = handleGetFullyQualifiedName(); 237 // fullyQualifiedName has no post constraints 238 this.__fullyQualifiedName5a = fullyQualifiedName5a; 239 if (isMetafacadePropertyCachingEnabled()) 240 { 241 this.__fullyQualifiedName5aSet = true; 242 } 243 } 244 return fullyQualifiedName5a; 245 } 246 247 /** 248 * @see ModelElementFacade#getFullyQualifiedNamePath() 249 * @return String 250 */ 251 protected abstract String handleGetFullyQualifiedNamePath(); 252 253 private String __fullyQualifiedNamePath6a; 254 private boolean __fullyQualifiedNamePath6aSet = false; 255 256 /** 257 * Returns the fully qualified name as a path, the returned value always starts with out a slash 258 * '/'. 259 * @return (String)handleGetFullyQualifiedNamePath() 260 */ 261 public final String getFullyQualifiedNamePath() 262 { 263 String fullyQualifiedNamePath6a = this.__fullyQualifiedNamePath6a; 264 if (!this.__fullyQualifiedNamePath6aSet) 265 { 266 // fullyQualifiedNamePath has no pre constraints 267 fullyQualifiedNamePath6a = handleGetFullyQualifiedNamePath(); 268 // fullyQualifiedNamePath has no post constraints 269 this.__fullyQualifiedNamePath6a = fullyQualifiedNamePath6a; 270 if (isMetafacadePropertyCachingEnabled()) 271 { 272 this.__fullyQualifiedNamePath6aSet = true; 273 } 274 } 275 return fullyQualifiedNamePath6a; 276 } 277 278 /** 279 * @see ModelElementFacade#getLanguageMappings() 280 * @return TypeMappings 281 */ 282 protected abstract TypeMappings handleGetLanguageMappings(); 283 284 private TypeMappings __languageMappings7a; 285 private boolean __languageMappings7aSet = false; 286 287 /** 288 * The language mappings that have been set for this model element. 289 * @return (TypeMappings)handleGetLanguageMappings() 290 */ 291 public final TypeMappings getLanguageMappings() 292 { 293 TypeMappings languageMappings7a = this.__languageMappings7a; 294 if (!this.__languageMappings7aSet) 295 { 296 // languageMappings has no pre constraints 297 languageMappings7a = handleGetLanguageMappings(); 298 // languageMappings has no post constraints 299 this.__languageMappings7a = languageMappings7a; 300 if (isMetafacadePropertyCachingEnabled()) 301 { 302 this.__languageMappings7aSet = true; 303 } 304 } 305 return languageMappings7a; 306 } 307 308 /** 309 * @see ModelElementFacade#getStereotypeNames() 310 * @return Collection<String> 311 */ 312 protected abstract Collection<String> handleGetStereotypeNames(); 313 314 private Collection<String> __stereotypeNames8a; 315 private boolean __stereotypeNames8aSet = false; 316 317 /** 318 * The collection of ALL stereotype names for this model element. 319 * @return (Collection<String>)handleGetStereotypeNames() 320 */ 321 public final Collection<String> getStereotypeNames() 322 { 323 Collection<String> stereotypeNames8a = this.__stereotypeNames8a; 324 if (!this.__stereotypeNames8aSet) 325 { 326 // stereotypeNames has no pre constraints 327 stereotypeNames8a = handleGetStereotypeNames(); 328 // stereotypeNames has no post constraints 329 this.__stereotypeNames8a = stereotypeNames8a; 330 if (isMetafacadePropertyCachingEnabled()) 331 { 332 this.__stereotypeNames8aSet = true; 333 } 334 } 335 return stereotypeNames8a; 336 } 337 338 /** 339 * @see ModelElementFacade#getId() 340 * @return String 341 */ 342 protected abstract String handleGetId(); 343 344 private String __id9a; 345 private boolean __id9aSet = false; 346 347 /** 348 * Gets the unique identifier of the underlying model element. 349 * @return (String)handleGetId() 350 */ 351 public final String getId() 352 { 353 String id9a = this.__id9a; 354 if (!this.__id9aSet) 355 { 356 // id has no pre constraints 357 id9a = handleGetId(); 358 // id has no post constraints 359 this.__id9a = id9a; 360 if (isMetafacadePropertyCachingEnabled()) 361 { 362 this.__id9aSet = true; 363 } 364 } 365 return id9a; 366 } 367 368 /** 369 * @see ModelElementFacade#isConstraintsPresent() 370 * @return boolean 371 */ 372 protected abstract boolean handleIsConstraintsPresent(); 373 374 private boolean __constraintsPresent10a; 375 private boolean __constraintsPresent10aSet = false; 376 377 /** 378 * Indicates if any constraints are present on this model element. 379 * @return (boolean)handleIsConstraintsPresent() 380 */ 381 public final boolean isConstraintsPresent() 382 { 383 boolean constraintsPresent10a = this.__constraintsPresent10a; 384 if (!this.__constraintsPresent10aSet) 385 { 386 // constraintsPresent has no pre constraints 387 constraintsPresent10a = handleIsConstraintsPresent(); 388 // constraintsPresent has no post constraints 389 this.__constraintsPresent10a = constraintsPresent10a; 390 if (isMetafacadePropertyCachingEnabled()) 391 { 392 this.__constraintsPresent10aSet = true; 393 } 394 } 395 return constraintsPresent10a; 396 } 397 398 /** 399 * @see ModelElementFacade#isBindingDependenciesPresent() 400 * @return boolean 401 */ 402 protected abstract boolean handleIsBindingDependenciesPresent(); 403 404 private boolean __bindingDependenciesPresent11a; 405 private boolean __bindingDependenciesPresent11aSet = false; 406 407 /** 408 * True if there are target dependencies from this element that are instances of BindingFacade. 409 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies. 410 * @return (boolean)handleIsBindingDependenciesPresent() 411 */ 412 public final boolean isBindingDependenciesPresent() 413 { 414 boolean bindingDependenciesPresent11a = this.__bindingDependenciesPresent11a; 415 if (!this.__bindingDependenciesPresent11aSet) 416 { 417 // bindingDependenciesPresent has no pre constraints 418 bindingDependenciesPresent11a = handleIsBindingDependenciesPresent(); 419 // bindingDependenciesPresent has no post constraints 420 this.__bindingDependenciesPresent11a = bindingDependenciesPresent11a; 421 if (isMetafacadePropertyCachingEnabled()) 422 { 423 this.__bindingDependenciesPresent11aSet = true; 424 } 425 } 426 return bindingDependenciesPresent11a; 427 } 428 429 /** 430 * @see ModelElementFacade#isTemplateParametersPresent() 431 * @return boolean 432 */ 433 protected abstract boolean handleIsTemplateParametersPresent(); 434 435 private boolean __templateParametersPresent12a; 436 private boolean __templateParametersPresent12aSet = false; 437 438 /** 439 * True is there are template parameters on this model element. For UML2, applies to Class, 440 * Operation, Property, and Parameter. 441 * @return (boolean)handleIsTemplateParametersPresent() 442 */ 443 public final boolean isTemplateParametersPresent() 444 { 445 boolean templateParametersPresent12a = this.__templateParametersPresent12a; 446 if (!this.__templateParametersPresent12aSet) 447 { 448 // templateParametersPresent has no pre constraints 449 templateParametersPresent12a = handleIsTemplateParametersPresent(); 450 // templateParametersPresent has no post constraints 451 this.__templateParametersPresent12a = templateParametersPresent12a; 452 if (isMetafacadePropertyCachingEnabled()) 453 { 454 this.__templateParametersPresent12aSet = true; 455 } 456 } 457 return templateParametersPresent12a; 458 } 459 460 /** 461 * @see ModelElementFacade#getKeywords() 462 * @return Collection<String> 463 */ 464 protected abstract Collection<String> handleGetKeywords(); 465 466 private Collection<String> __keywords13a; 467 private boolean __keywords13aSet = false; 468 469 /** 470 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which 471 * are not represented by other properties, i.e. native, transient, volatile, synchronized, 472 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings: 473 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require 474 * JDK5 compiler level. 475 * @return (Collection<String>)handleGetKeywords() 476 */ 477 public final Collection<String> getKeywords() 478 { 479 Collection<String> keywords13a = this.__keywords13a; 480 if (!this.__keywords13aSet) 481 { 482 // keywords has no pre constraints 483 keywords13a = handleGetKeywords(); 484 // keywords has no post constraints 485 this.__keywords13a = keywords13a; 486 if (isMetafacadePropertyCachingEnabled()) 487 { 488 this.__keywords13aSet = true; 489 } 490 } 491 return keywords13a; 492 } 493 494 /** 495 * @see ModelElementFacade#getLabel() 496 * @return String 497 */ 498 protected abstract String handleGetLabel(); 499 500 private String __label14a; 501 private boolean __label14aSet = false; 502 503 /** 504 * UML2: Retrieves a localized label for this named element. 505 * @return (String)handleGetLabel() 506 */ 507 public final String getLabel() 508 { 509 String label14a = this.__label14a; 510 if (!this.__label14aSet) 511 { 512 // label has no pre constraints 513 label14a = handleGetLabel(); 514 // label has no post constraints 515 this.__label14a = label14a; 516 if (isMetafacadePropertyCachingEnabled()) 517 { 518 this.__label14aSet = true; 519 } 520 } 521 return label14a; 522 } 523 524 /** 525 * @see ModelElementFacade#getQualifiedName() 526 * @return String 527 */ 528 protected abstract String handleGetQualifiedName(); 529 530 private String __qualifiedName15a; 531 private boolean __qualifiedName15aSet = false; 532 533 /** 534 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the 535 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from 536 * the names of the containing namespaces starting at the root of the hierarchy and ending with 537 * the name of the NamedElement itself. 538 * @return (String)handleGetQualifiedName() 539 */ 540 public final String getQualifiedName() 541 { 542 String qualifiedName15a = this.__qualifiedName15a; 543 if (!this.__qualifiedName15aSet) 544 { 545 // qualifiedName has no pre constraints 546 qualifiedName15a = handleGetQualifiedName(); 547 // qualifiedName has no post constraints 548 this.__qualifiedName15a = qualifiedName15a; 549 if (isMetafacadePropertyCachingEnabled()) 550 { 551 this.__qualifiedName15aSet = true; 552 } 553 } 554 return qualifiedName15a; 555 } 556 557 /** 558 * @see ModelElementFacade#isReservedWord() 559 * @return boolean 560 */ 561 protected abstract boolean handleIsReservedWord(); 562 563 private boolean __reservedWord16a; 564 private boolean __reservedWord16aSet = false; 565 566 /** 567 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript. 568 * @return (boolean)handleIsReservedWord() 569 */ 570 public final boolean isReservedWord() 571 { 572 boolean reservedWord16a = this.__reservedWord16a; 573 if (!this.__reservedWord16aSet) 574 { 575 // reservedWord has no pre constraints 576 reservedWord16a = handleIsReservedWord(); 577 // reservedWord has no post constraints 578 this.__reservedWord16a = reservedWord16a; 579 if (isMetafacadePropertyCachingEnabled()) 580 { 581 this.__reservedWord16aSet = true; 582 } 583 } 584 return reservedWord16a; 585 } 586 587 /** 588 * @see ModelElementFacade#isDocumentationPresent() 589 * @return boolean 590 */ 591 protected abstract boolean handleIsDocumentationPresent(); 592 593 private boolean __documentationPresent17a; 594 private boolean __documentationPresent17aSet = false; 595 596 /** 597 * Indicates if any documentation is present on this model element. 598 * @return (boolean)handleIsDocumentationPresent() 599 */ 600 public final boolean isDocumentationPresent() 601 { 602 boolean documentationPresent17a = this.__documentationPresent17a; 603 if (!this.__documentationPresent17aSet) 604 { 605 // documentationPresent has no pre constraints 606 documentationPresent17a = handleIsDocumentationPresent(); 607 // documentationPresent has no post constraints 608 this.__documentationPresent17a = documentationPresent17a; 609 if (isMetafacadePropertyCachingEnabled()) 610 { 611 this.__documentationPresent17aSet = true; 612 } 613 } 614 return documentationPresent17a; 615 } 616 617 /** 618 * @see ModelElementFacade#isValidIdentifierName() 619 * @return boolean 620 */ 621 protected abstract boolean handleIsValidIdentifierName(); 622 623 private boolean __validIdentifierName18a; 624 private boolean __validIdentifierName18aSet = false; 625 626 /** 627 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++, 628 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on 629 * Enumerations and Interfaces, optionally applies on other model elements. 630 * @return (boolean)handleIsValidIdentifierName() 631 */ 632 public final boolean isValidIdentifierName() 633 { 634 boolean validIdentifierName18a = this.__validIdentifierName18a; 635 if (!this.__validIdentifierName18aSet) 636 { 637 // validIdentifierName has no pre constraints 638 validIdentifierName18a = handleIsValidIdentifierName(); 639 // validIdentifierName has no post constraints 640 this.__validIdentifierName18a = validIdentifierName18a; 641 if (isMetafacadePropertyCachingEnabled()) 642 { 643 this.__validIdentifierName18aSet = true; 644 } 645 } 646 return validIdentifierName18a; 647 } 648 649 // ---------------- business methods ---------------------- 650 651 /** 652 * Method to be implemented in descendants 653 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 654 * one found will be returned. 655 * @param tagName 656 * @return Object 657 */ 658 protected abstract Object handleFindTaggedValue(String tagName); 659 660 /** 661 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 662 * one found will be returned. 663 * @param tagName String 664 * TODO: Model Documentation for 665 * ModelElementFacade.findTaggedValue(tagName) 666 * @return handleFindTaggedValue(tagName) 667 */ 668 public Object findTaggedValue(String tagName) 669 { 670 // findTaggedValue has no pre constraints 671 Object returnValue = handleFindTaggedValue(tagName); 672 // findTaggedValue has no post constraints 673 return returnValue; 674 } 675 676 /** 677 * Method to be implemented in descendants 678 * Returns true if the model element has the specified stereotype. If the stereotype itself 679 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 680 * one of the stereotype's ancestors has a matching name this method will return true, false 681 * otherwise. 682 * For example, if we have a certain stereotype called <<exception>> and a model element has a 683 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 684 * method with 'stereotypeName' defined as 'exception' the method would return true since 685 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 686 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 687 * @param stereotypeName 688 * @return boolean 689 */ 690 protected abstract boolean handleHasStereotype(String stereotypeName); 691 692 /** 693 * Returns true if the model element has the specified stereotype. If the stereotype itself 694 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 695 * one of the stereotype's ancestors has a matching name this method will return true, false 696 * otherwise. 697 * For example, if we have a certain stereotype called <<exception>> and a model element has a 698 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 699 * method with 'stereotypeName' defined as 'exception' the method would return true since 700 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 701 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 702 * @param stereotypeName String 703 * TODO: Model Documentation for 704 * ModelElementFacade.hasStereotype(stereotypeName) 705 * @return handleHasStereotype(stereotypeName) 706 */ 707 public boolean hasStereotype(String stereotypeName) 708 { 709 // hasStereotype has no pre constraints 710 boolean returnValue = handleHasStereotype(stereotypeName); 711 // hasStereotype has no post constraints 712 return returnValue; 713 } 714 715 /** 716 * Method to be implemented in descendants 717 * Gets the documentation for the model element, The indent argument is prefixed to each line. 718 * By default this method wraps lines after 64 characters. 719 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 720 * @param indent 721 * @return String 722 */ 723 protected abstract String handleGetDocumentation(String indent); 724 725 /** 726 * Gets the documentation for the model element, The indent argument is prefixed to each line. 727 * By default this method wraps lines after 64 characters. 728 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 729 * @param indent String 730 * <p>Specifies the amount to indent by.</p> 731 * @return handleGetDocumentation(indent) 732 */ 733 public String getDocumentation(String indent) 734 { 735 // getDocumentation has no pre constraints 736 String returnValue = handleGetDocumentation(indent); 737 // getDocumentation has no post constraints 738 return returnValue; 739 } 740 741 /** 742 * Method to be implemented in descendants 743 * Returns the fully qualified name of the model element. The fully qualified name includes 744 * complete package qualified name of the underlying model element. If modelName is true, then 745 * the original name of the model element (the name contained within the model) will be the name 746 * returned, otherwise a name from a language mapping will be returned. 747 * @param modelName 748 * @return String 749 */ 750 protected abstract String handleGetFullyQualifiedName(boolean modelName); 751 752 /** 753 * Returns the fully qualified name of the model element. The fully qualified name includes 754 * complete package qualified name of the underlying model element. If modelName is true, then 755 * the original name of the model element (the name contained within the model) will be the name 756 * returned, otherwise a name from a language mapping will be returned. 757 * @param modelName boolean 758 * If true, then the original model name will be returned regardless of any underlying language 759 * mappings used. 760 * @return handleGetFullyQualifiedName(modelName) 761 */ 762 public String getFullyQualifiedName(boolean modelName) 763 { 764 // getFullyQualifiedName has no pre constraints 765 String returnValue = handleGetFullyQualifiedName(modelName); 766 // getFullyQualifiedName has no post constraints 767 return returnValue; 768 } 769 770 /** 771 * Method to be implemented in descendants 772 * This method returns the documentation for this model element, with the lines wrapped after 773 * the specified number of characters, values of less than 1 will indicate no line wrapping is 774 * required. By default paragraphs are returned as HTML. 775 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 776 * @param indent 777 * @param lineLength 778 * @return String 779 */ 780 protected abstract String handleGetDocumentation(String indent, int lineLength); 781 782 /** 783 * This method returns the documentation for this model element, with the lines wrapped after 784 * the specified number of characters, values of less than 1 will indicate no line wrapping is 785 * required. By default paragraphs are returned as HTML. 786 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 787 * @param indent String 788 * TODO: Model Documentation for 789 * ModelElementFacade.getDocumentation(indent) 790 * @param lineLength int 791 * TODO: Model Documentation for 792 * ModelElementFacade.getDocumentation(lineLength) 793 * @return handleGetDocumentation(indent, lineLength) 794 */ 795 public String getDocumentation(String indent, int lineLength) 796 { 797 // getDocumentation has no pre constraints 798 String returnValue = handleGetDocumentation(indent, lineLength); 799 // getDocumentation has no post constraints 800 return returnValue; 801 } 802 803 /** 804 * Method to be implemented in descendants 805 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 806 * is taken into account when searching for the stereotype), false otherwise. 807 * @param stereotypeName 808 * @return boolean 809 */ 810 protected abstract boolean handleHasExactStereotype(String stereotypeName); 811 812 /** 813 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 814 * is taken into account when searching for the stereotype), false otherwise. 815 * @param stereotypeName String 816 * The name of the stereotype to check for. 817 * @return handleHasExactStereotype(stereotypeName) 818 */ 819 public boolean hasExactStereotype(String stereotypeName) 820 { 821 // hasExactStereotype has no pre constraints 822 boolean returnValue = handleHasExactStereotype(stereotypeName); 823 // hasExactStereotype has no post constraints 824 return returnValue; 825 } 826 827 /** 828 * Method to be implemented in descendants 829 * Searches for the constraint with the specified 'name' on this model element, and if found 830 * translates it using the specified 'translation' from a translation library discovered by the 831 * framework. 832 * @param name 833 * @param translation 834 * @return String 835 */ 836 protected abstract String handleTranslateConstraint(String name, String translation); 837 838 /** 839 * Searches for the constraint with the specified 'name' on this model element, and if found 840 * translates it using the specified 'translation' from a translation library discovered by the 841 * framework. 842 * @param name String 843 * The name of the constraint to find. 844 * @param translation String 845 * The name of the translation to use. This must be a translation within a translation library 846 * discovered by the framework. 847 * @return handleTranslateConstraint(name, translation) 848 */ 849 public String translateConstraint(String name, String translation) 850 { 851 // translateConstraint has no pre constraints 852 String returnValue = handleTranslateConstraint(name, translation); 853 // translateConstraint has no post constraints 854 return returnValue; 855 } 856 857 /** 858 * Method to be implemented in descendants 859 * Translates the constraints of the specified 'kind' belonging to this model element. 860 * @param kind 861 * @param translation 862 * @return String[] 863 */ 864 protected abstract String[] handleTranslateConstraints(String kind, String translation); 865 866 /** 867 * Translates the constraints of the specified 'kind' belonging to this model element. 868 * @param kind String 869 * The 'kind' of the constraint (i.e. inv, body, pre, post, etc.). 870 * @param translation String 871 * The name of the translation to use. This must be a translation within a translation library 872 * discovered by the framework. 873 * @return handleTranslateConstraints(kind, translation) 874 */ 875 public String[] translateConstraints(String kind, String translation) 876 { 877 // translateConstraints has no pre constraints 878 String[] returnValue = handleTranslateConstraints(kind, translation); 879 // translateConstraints has no post constraints 880 return returnValue; 881 } 882 883 /** 884 * Method to be implemented in descendants 885 * Translates all constraints belonging to this model element with the given 'translation'. 886 * @param translation 887 * @return String[] 888 */ 889 protected abstract String[] handleTranslateConstraints(String translation); 890 891 /** 892 * Translates all constraints belonging to this model element with the given 'translation'. 893 * @param translation String 894 * The name of the translation to use. This must be a translation within a translation library 895 * discovered by the framework. 896 * @return handleTranslateConstraints(translation) 897 */ 898 public String[] translateConstraints(String translation) 899 { 900 // translateConstraints has no pre constraints 901 String[] returnValue = handleTranslateConstraints(translation); 902 // translateConstraints has no post constraints 903 return returnValue; 904 } 905 906 /** 907 * Method to be implemented in descendants 908 * Returns the constraints of the argument kind that have been placed onto this model. Typical 909 * kinds are "inv", "pre" and "post". Other kinds are possible. 910 * @param kind 911 * @return Collection<ConstraintFacade> 912 */ 913 protected abstract Collection<ConstraintFacade> handleGetConstraints(String kind); 914 915 /** 916 * Returns the constraints of the argument kind that have been placed onto this model. Typical 917 * kinds are "inv", "pre" and "post". Other kinds are possible. 918 * @param kind String 919 * TODO: Model Documentation for 920 * ModelElementFacade.getConstraints(kind) 921 * @return handleGetConstraints(kind) 922 */ 923 public Collection<ConstraintFacade> getConstraints(String kind) 924 { 925 // getConstraints has no pre constraints 926 Collection<ConstraintFacade> returnValue = handleGetConstraints(kind); 927 // getConstraints has no post constraints 928 return returnValue; 929 } 930 931 /** 932 * Method to be implemented in descendants 933 * Returns all the values for the tagged value with the specified name. The returned collection 934 * will contains only String instances, or will be empty. Never null. 935 * @param tagName 936 * @return Collection<Object> 937 */ 938 protected abstract Collection<Object> handleFindTaggedValues(String tagName); 939 940 /** 941 * Returns all the values for the tagged value with the specified name. The returned collection 942 * will contains only String instances, or will be empty. Never null. 943 * @param tagName String 944 * TODO: Model Documentation for 945 * ModelElementFacade.findTaggedValues(tagName) 946 * @return handleFindTaggedValues(tagName) 947 */ 948 public Collection<Object> findTaggedValues(String tagName) 949 { 950 // findTaggedValues has no pre constraints 951 Collection<Object> returnValue = handleFindTaggedValues(tagName); 952 // findTaggedValues has no post constraints 953 return returnValue; 954 } 955 956 /** 957 * Method to be implemented in descendants 958 * This method returns the documentation for this model element, with the lines wrapped after 959 * the specified number of characters, values of less than 1 will indicate no line wrapping is 960 * required. HTML style determines if HTML Escaping is applied. 961 * @param indent 962 * @param lineLength 963 * @param htmlStyle 964 * @return String 965 */ 966 protected abstract String handleGetDocumentation(String indent, int lineLength, boolean htmlStyle); 967 968 /** 969 * This method returns the documentation for this model element, with the lines wrapped after 970 * the specified number of characters, values of less than 1 will indicate no line wrapping is 971 * required. HTML style determines if HTML Escaping is applied. 972 * @param indent String 973 * TODO: Model Documentation for 974 * ModelElementFacade.getDocumentation(indent) 975 * @param lineLength int 976 * TODO: Model Documentation for 977 * ModelElementFacade.getDocumentation(lineLength) 978 * @param htmlStyle boolean 979 * TODO: Model Documentation for 980 * ModelElementFacade.getDocumentation(htmlStyle) 981 * @return handleGetDocumentation(indent, lineLength, htmlStyle) 982 */ 983 public String getDocumentation(String indent, int lineLength, boolean htmlStyle) 984 { 985 // getDocumentation has no pre constraints 986 String returnValue = handleGetDocumentation(indent, lineLength, htmlStyle); 987 // getDocumentation has no post constraints 988 return returnValue; 989 } 990 991 /** 992 * Method to be implemented in descendants 993 * Gets the package name (optionally providing the ability to retrieve the model name and not 994 * the mapped name). 995 * @param modelName 996 * @return String 997 */ 998 protected abstract String handleGetPackageName(boolean modelName); 999 1000 /** 1001 * Gets the package name (optionally providing the ability to retrieve the model name and not 1002 * the mapped name). 1003 * @param modelName boolean 1004 * A flag indicating whether or not the model name should be retrieved. 1005 * @return handleGetPackageName(modelName) 1006 */ 1007 public String getPackageName(boolean modelName) 1008 { 1009 // getPackageName has no pre constraints 1010 String returnValue = handleGetPackageName(modelName); 1011 // getPackageName has no post constraints 1012 return returnValue; 1013 } 1014 1015 /** 1016 * Method to be implemented in descendants 1017 * Copies all tagged values from the given ModelElementFacade to this model element facade. 1018 * @param element 1019 */ 1020 protected abstract void handleCopyTaggedValues(ModelElementFacade element); 1021 1022 /** 1023 * Copies all tagged values from the given ModelElementFacade to this model element facade. 1024 * @param element ModelElementFacade 1025 * The element from which to copy the tagged values. 1026 */ 1027 public void copyTaggedValues(ModelElementFacade element) 1028 { 1029 // copyTaggedValues has no pre constraints 1030 handleCopyTaggedValues(element); 1031 // copyTaggedValues has no post constraints 1032 } 1033 1034 /** 1035 * Method to be implemented in descendants 1036 * Get the template parameter for this model element having the parameterName 1037 * @param parameterName 1038 * @return Object 1039 */ 1040 protected abstract Object handleGetTemplateParameter(String parameterName); 1041 1042 /** 1043 * Get the template parameter for this model element having the parameterName 1044 * @param parameterName String 1045 * TODO: Model Documentation for 1046 * ModelElementFacade.getTemplateParameter(parameterName) 1047 * @return handleGetTemplateParameter(parameterName) 1048 */ 1049 public Object getTemplateParameter(String parameterName) 1050 { 1051 // getTemplateParameter has no pre constraints 1052 Object returnValue = handleGetTemplateParameter(parameterName); 1053 // getTemplateParameter has no post constraints 1054 return returnValue; 1055 } 1056 1057 /** 1058 * Method to be implemented in descendants 1059 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 1060 * pipe, semicolon, or << >> 1061 * @param keywordName 1062 * @return boolean 1063 */ 1064 protected abstract boolean handleHasKeyword(String keywordName); 1065 1066 /** 1067 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 1068 * pipe, semicolon, or << >> 1069 * @param keywordName String 1070 * Keyword to find in the list of UML Element Keywords. 1071 * @return handleHasKeyword(keywordName) 1072 */ 1073 public boolean hasKeyword(String keywordName) 1074 { 1075 // hasKeyword has no pre constraints 1076 boolean returnValue = handleHasKeyword(keywordName); 1077 // hasKeyword has no post constraints 1078 return returnValue; 1079 } 1080 1081 /** 1082 * Method to be implemented in descendants 1083 * Returns the fully qualified name of the model element. The fully qualified name includes 1084 * complete package qualified name of the underlying model element. The templates parameter will 1085 * be replaced by the correct one given the binding relation of the parameter to this element. 1086 * @param bindedElement 1087 * @return String 1088 */ 1089 protected abstract String handleGetBindedFullyQualifiedName(ModelElementFacade bindedElement); 1090 1091 /** 1092 * Returns the fully qualified name of the model element. The fully qualified name includes 1093 * complete package qualified name of the underlying model element. The templates parameter will 1094 * be replaced by the correct one given the binding relation of the parameter to this element. 1095 * @param bindedElement ModelElementFacade 1096 * the element that will be used to find binding to the templates parameters of this element. 1097 * @return handleGetBindedFullyQualifiedName(bindedElement) 1098 */ 1099 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement) 1100 { 1101 // getBindedFullyQualifiedName has no pre constraints 1102 String returnValue = handleGetBindedFullyQualifiedName(bindedElement); 1103 // getBindedFullyQualifiedName has no post constraints 1104 return returnValue; 1105 } 1106 1107 // ------------- associations ------------------ 1108 1109 /** 1110 * The source element of this dependency. 1111 * @return (Collection<DependencyFacade>)handleGetSourceDependencies() 1112 */ 1113 public final Collection<DependencyFacade> getSourceDependencies() 1114 { 1115 Collection<DependencyFacade> getSourceDependencies1r = null; 1116 // sourceElement has no pre constraints 1117 Collection result = handleGetSourceDependencies(); 1118 List shieldedResult = this.shieldedElements(result); 1119 try 1120 { 1121 getSourceDependencies1r = (Collection<DependencyFacade>)shieldedResult; 1122 } 1123 catch (ClassCastException ex) 1124 { 1125 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1126 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getSourceDependencies Collection<DependencyFacade> " + result + ": " + shieldedResult); 1127 } 1128 // sourceElement has no post constraints 1129 return getSourceDependencies1r; 1130 } 1131 1132 /** 1133 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1134 * @return Collection 1135 */ 1136 protected abstract Collection handleGetSourceDependencies(); 1137 1138 /** 1139 * Gets the element to which the dependencies belong. 1140 * @return (Collection<DependencyFacade>)handleGetTargetDependencies() 1141 */ 1142 public final Collection<DependencyFacade> getTargetDependencies() 1143 { 1144 Collection<DependencyFacade> getTargetDependencies2r = null; 1145 // targetElement has no pre constraints 1146 Collection result = handleGetTargetDependencies(); 1147 List shieldedResult = this.shieldedElements(result); 1148 try 1149 { 1150 getTargetDependencies2r = (Collection<DependencyFacade>)shieldedResult; 1151 } 1152 catch (ClassCastException ex) 1153 { 1154 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1155 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getTargetDependencies Collection<DependencyFacade> " + result + ": " + shieldedResult); 1156 } 1157 // targetElement has no post constraints 1158 return getTargetDependencies2r; 1159 } 1160 1161 /** 1162 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1163 * @return Collection 1164 */ 1165 protected abstract Collection handleGetTargetDependencies(); 1166 1167 /** 1168 * Gets the model element to which the constraint applies (i.e. is the context of). 1169 * @return (Collection<ConstraintFacade>)handleGetConstraints() 1170 */ 1171 public final Collection<ConstraintFacade> getConstraints() 1172 { 1173 Collection<ConstraintFacade> getConstraints3r = null; 1174 // contextElement has no pre constraints 1175 Collection result = handleGetConstraints(); 1176 List shieldedResult = this.shieldedElements(result); 1177 try 1178 { 1179 getConstraints3r = (Collection<ConstraintFacade>)shieldedResult; 1180 } 1181 catch (ClassCastException ex) 1182 { 1183 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1184 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getConstraints Collection<ConstraintFacade> " + result + ": " + shieldedResult); 1185 } 1186 // contextElement has no post constraints 1187 return getConstraints3r; 1188 } 1189 1190 /** 1191 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1192 * @return Collection 1193 */ 1194 protected abstract Collection handleGetConstraints(); 1195 1196 /** 1197 * Represents a model element. It may be an Element or NamedElement. A named element is an 1198 * element in a 1199 * model that may have a name. An element is a constituent of a model. As such, it has the 1200 * capability 1201 * of owning other elements. 1202 * @return (Collection<StereotypeFacade>)handleGetStereotypes() 1203 */ 1204 public final Collection<StereotypeFacade> getStereotypes() 1205 { 1206 Collection<StereotypeFacade> getStereotypes4r = null; 1207 // modelElementFacade has no pre constraints 1208 Collection result = handleGetStereotypes(); 1209 List shieldedResult = this.shieldedElements(result); 1210 try 1211 { 1212 getStereotypes4r = (Collection<StereotypeFacade>)shieldedResult; 1213 } 1214 catch (ClassCastException ex) 1215 { 1216 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1217 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getStereotypes Collection<StereotypeFacade> " + result + ": " + shieldedResult); 1218 } 1219 // modelElementFacade has no post constraints 1220 return getStereotypes4r; 1221 } 1222 1223 /** 1224 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1225 * @return Collection 1226 */ 1227 protected abstract Collection handleGetStereotypes(); 1228 1229 /** 1230 * Represents a model element. It may be an Element or NamedElement. A named element is an 1231 * element in a 1232 * model that may have a name. An element is a constituent of a model. As such, it has the 1233 * capability 1234 * of owning other elements. 1235 * @return (ModelFacade)handleGetModel() 1236 */ 1237 public final ModelFacade getModel() 1238 { 1239 ModelFacade getModel5r = null; 1240 // modelElementFacade has no pre constraints 1241 Object result = handleGetModel(); 1242 MetafacadeBase shieldedResult = this.shieldedElement(result); 1243 try 1244 { 1245 getModel5r = (ModelFacade)shieldedResult; 1246 } 1247 catch (ClassCastException ex) 1248 { 1249 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1250 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getModel ModelFacade " + result + ": " + shieldedResult); 1251 } 1252 // modelElementFacade has no post constraints 1253 return getModel5r; 1254 } 1255 1256 /** 1257 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1258 * @return Object 1259 */ 1260 protected abstract Object handleGetModel(); 1261 1262 /** 1263 * Represents a model element. It may be an Element or NamedElement. A named element is an 1264 * element in a 1265 * model that may have a name. An element is a constituent of a model. As such, it has the 1266 * capability 1267 * of owning other elements. 1268 * @return (Collection<TaggedValueFacade>)handleGetTaggedValues() 1269 */ 1270 public final Collection<TaggedValueFacade> getTaggedValues() 1271 { 1272 Collection<TaggedValueFacade> getTaggedValues6r = null; 1273 // modelElementFacade has no pre constraints 1274 Collection result = handleGetTaggedValues(); 1275 List shieldedResult = this.shieldedElements(result); 1276 try 1277 { 1278 getTaggedValues6r = (Collection<TaggedValueFacade>)shieldedResult; 1279 } 1280 catch (ClassCastException ex) 1281 { 1282 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1283 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getTaggedValues Collection<TaggedValueFacade> " + result + ": " + shieldedResult); 1284 } 1285 // modelElementFacade has no post constraints 1286 return getTaggedValues6r; 1287 } 1288 1289 /** 1290 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1291 * @return Collection 1292 */ 1293 protected abstract Collection handleGetTaggedValues(); 1294 1295 /** 1296 * Represents a model element. It may be an Element or NamedElement. A named element is an 1297 * element in a 1298 * model that may have a name. An element is a constituent of a model. As such, it has the 1299 * capability 1300 * of owning other elements. 1301 * @return (Collection<TemplateParameterFacade>)handleGetTemplateParameters() 1302 */ 1303 public final Collection<TemplateParameterFacade> getTemplateParameters() 1304 { 1305 Collection<TemplateParameterFacade> getTemplateParameters7r = null; 1306 // modelElementFacade has no pre constraints 1307 Collection result = handleGetTemplateParameters(); 1308 List shieldedResult = this.shieldedElements(result); 1309 try 1310 { 1311 getTemplateParameters7r = (Collection<TemplateParameterFacade>)shieldedResult; 1312 } 1313 catch (ClassCastException ex) 1314 { 1315 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1316 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getTemplateParameters Collection<TemplateParameterFacade> " + result + ": " + shieldedResult); 1317 } 1318 // modelElementFacade has no post constraints 1319 return getTemplateParameters7r; 1320 } 1321 1322 /** 1323 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 1324 * @return Collection 1325 */ 1326 protected abstract Collection handleGetTemplateParameters(); 1327 1328 /** 1329 * Represents a model element. It may be an Element or NamedElement. A named element is an 1330 * element in a 1331 * model that may have a name. An element is a constituent of a model. As such, it has the 1332 * capability 1333 * of owning other elements. 1334 * @return (ModelElementFacade)handleGetPackage() 1335 */ 1336 public final ModelElementFacade getPackage() 1337 { 1338 ModelElementFacade getPackage8r = null; 1339 // modelElementFacade has no pre constraints 1340 Object result = handleGetPackage(); 1341 MetafacadeBase shieldedResult = this.shieldedElement(result); 1342 try 1343 { 1344 getPackage8r = (ModelElementFacade)shieldedResult; 1345 } 1346 catch (ClassCastException ex) 1347 { 1348 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1349 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getPackage ModelElementFacade " + result + ": " + shieldedResult); 1350 } 1351 // modelElementFacade has no post constraints 1352 return getPackage8r; 1353 } 1354 1355 /** 1356 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1357 * @return Object 1358 */ 1359 protected abstract Object handleGetPackage(); 1360 1361 /** 1362 * Gets all the model elements belonging to the root package. 1363 * @return (PackageFacade)handleGetRootPackage() 1364 */ 1365 public final PackageFacade getRootPackage() 1366 { 1367 PackageFacade getRootPackage9r = null; 1368 // modelElements has no pre constraints 1369 Object result = handleGetRootPackage(); 1370 MetafacadeBase shieldedResult = this.shieldedElement(result); 1371 try 1372 { 1373 getRootPackage9r = (PackageFacade)shieldedResult; 1374 } 1375 catch (ClassCastException ex) 1376 { 1377 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1378 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getRootPackage PackageFacade " + result + ": " + shieldedResult); 1379 } 1380 // modelElements has no post constraints 1381 return getRootPackage9r; 1382 } 1383 1384 /** 1385 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1386 * @return Object 1387 */ 1388 protected abstract Object handleGetRootPackage(); 1389 1390 /** 1391 * Represents a model element. It may be an Element or NamedElement. A named element is an 1392 * element in a 1393 * model that may have a name. An element is a constituent of a model. As such, it has the 1394 * capability 1395 * of owning other elements. 1396 * @return (StateMachineFacade)handleGetStateMachineContext() 1397 */ 1398 public final StateMachineFacade getStateMachineContext() 1399 { 1400 StateMachineFacade getStateMachineContext10r = null; 1401 // contextElement has no pre constraints 1402 Object result = handleGetStateMachineContext(); 1403 MetafacadeBase shieldedResult = this.shieldedElement(result); 1404 try 1405 { 1406 getStateMachineContext10r = (StateMachineFacade)shieldedResult; 1407 } 1408 catch (ClassCastException ex) 1409 { 1410 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 1411 ModelElementFacadeLogic.logger.warn("incorrect metafacade cast for ModelElementFacadeLogic.getStateMachineContext StateMachineFacade " + result + ": " + shieldedResult); 1412 } 1413 // contextElement has no post constraints 1414 return getStateMachineContext10r; 1415 } 1416 1417 /** 1418 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 1419 * @return Object 1420 */ 1421 protected abstract Object handleGetStateMachineContext(); 1422 1423 /** 1424 * @param validationMessages Collection<ModelValidationMessage> 1425 * @see MetafacadeBase#validateInvariants(Collection validationMessages) 1426 */ 1427 @Override 1428 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 1429 { 1430 } 1431 1432 /** 1433 * The property that stores the name of the metafacade. 1434 */ 1435 private static final String NAME_PROPERTY = "name"; 1436 private static final String FQNAME_PROPERTY = "fullyQualifiedName"; 1437 1438 /** 1439 * @see Object#toString() 1440 */ 1441 @Override 1442 public String toString() 1443 { 1444 final StringBuilder toString = new StringBuilder(this.getClass().getName()); 1445 toString.append("["); 1446 try 1447 { 1448 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY)); 1449 } 1450 catch (final Throwable tryAgain) 1451 { 1452 try 1453 { 1454 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY)); 1455 } 1456 catch (final Throwable ignore) 1457 { 1458 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property 1459 } 1460 } 1461 toString.append("]"); 1462 return toString.toString(); 1463 } 1464}