View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.ejb3.metafacades;
6   
7   import java.util.Collection;
8   import org.andromda.core.common.Introspector;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.MetafacadeFactory;
11  import org.andromda.core.metafacade.ModelValidationMessage;
12  import org.andromda.metafacades.uml.ClassifierFacade;
13  import org.andromda.metafacades.uml.ConstraintFacade;
14  import org.andromda.metafacades.uml.DependencyFacade;
15  import org.andromda.metafacades.uml.ModelElementFacade;
16  import org.andromda.metafacades.uml.ModelFacade;
17  import org.andromda.metafacades.uml.OperationFacade;
18  import org.andromda.metafacades.uml.PackageFacade;
19  import org.andromda.metafacades.uml.ParameterFacade;
20  import org.andromda.metafacades.uml.StateMachineFacade;
21  import org.andromda.metafacades.uml.StereotypeFacade;
22  import org.andromda.metafacades.uml.TaggedValueFacade;
23  import org.andromda.metafacades.uml.TemplateParameterFacade;
24  import org.andromda.metafacades.uml.TypeMappings;
25  
26  /**
27   * Represents an operation in an entity EJB bean POJO.
28   * MetafacadeLogic for EJB3OperationFacade
29   *
30   * @see EJB3OperationFacade
31   */
32  public abstract class EJB3OperationFacadeLogic
33      extends MetafacadeBase
34      implements EJB3OperationFacade
35  {
36      /**
37       * The underlying UML object
38       * @see Object
39       */
40      protected Object metaObject;
41  
42      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
43       * @param metaObjectIn
44       * @param context
45       */
46      protected EJB3OperationFacadeLogic(Object metaObjectIn, String context)
47      {
48          super(metaObjectIn, getContext(context));
49          this.superOperationFacade =
50             (OperationFacade)
51              MetafacadeFactory.getInstance().createFacadeImpl(
52                      "org.andromda.metafacades.uml.OperationFacade",
53                      metaObjectIn,
54                      getContext(context));
55          this.metaObject = metaObjectIn;
56      }
57  
58      /**
59       * Gets the context for this metafacade logic instance.
60       * @param context String. Set to EJB3OperationFacade if null
61       * @return context String
62       */
63      private static String getContext(String context)
64      {
65          if (context == null)
66          {
67              context = "org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade";
68          }
69          return context;
70      }
71  
72      private OperationFacade superOperationFacade;
73      private boolean superOperationFacadeInitialized = false;
74  
75      /**
76       * Gets the OperationFacade parent instance.
77       * @return this.superOperationFacade OperationFacade
78       */
79      private OperationFacade getSuperOperationFacade()
80      {
81          if (!this.superOperationFacadeInitialized)
82          {
83              ((MetafacadeBase)this.superOperationFacade).setMetafacadeContext(this.getMetafacadeContext());
84              this.superOperationFacadeInitialized = true;
85          }
86          return this.superOperationFacade;
87      }
88  
89      /** Reset context only for non-root metafacades
90       * @param context
91       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
92       */
93      @Override
94      public void resetMetafacadeContext(String context)
95      {
96          if (!this.contextRoot) // reset context only for non-root metafacades
97          {
98              context = getContext(context);  // to have same value as in original constructor call
99              setMetafacadeContext (context);
100             if (this.superOperationFacadeInitialized)
101             {
102                 ((MetafacadeBase)this.superOperationFacade).resetMetafacadeContext(context);
103             }
104         }
105     }
106 
107     /**
108      * @return boolean true always
109      * @see EJB3OperationFacade
110      */
111     public boolean isEJB3OperationFacadeMetaType()
112     {
113         return true;
114     }
115 
116     // --------------- attributes ---------------------
117 
118    /**
119     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isBusinessOperation()
120     * @return boolean
121     */
122     protected abstract boolean handleIsBusinessOperation();
123 
124     private boolean __businessOperation1a;
125     private boolean __businessOperation1aSet = false;
126 
127     /**
128      * True/false on whether or not this operation is an EJB business operation.  This returns true
129      * if the operation is not one of the following:
130      * Create Method
131      * Finder or Query Method
132      * Select Method
133      * @return (boolean)handleIsBusinessOperation()
134      */
135     public final boolean isBusinessOperation()
136     {
137         boolean businessOperation1a = this.__businessOperation1a;
138         if (!this.__businessOperation1aSet)
139         {
140             // businessOperation has no pre constraints
141             businessOperation1a = handleIsBusinessOperation();
142             // businessOperation has no post constraints
143             this.__businessOperation1a = businessOperation1a;
144             if (isMetafacadePropertyCachingEnabled())
145             {
146                 this.__businessOperation1aSet = true;
147             }
148         }
149         return businessOperation1a;
150     }
151 
152    /**
153     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isSelectMethod()
154     * @return boolean
155     */
156     protected abstract boolean handleIsSelectMethod();
157 
158     private boolean __selectMethod2a;
159     private boolean __selectMethod2aSet = false;
160 
161     /**
162      * True/false on whether or not this operation represents a select method.
163      * @return (boolean)handleIsSelectMethod()
164      */
165     public final boolean isSelectMethod()
166     {
167         boolean selectMethod2a = this.__selectMethod2a;
168         if (!this.__selectMethod2aSet)
169         {
170             // selectMethod has no pre constraints
171             selectMethod2a = handleIsSelectMethod();
172             // selectMethod has no post constraints
173             this.__selectMethod2a = selectMethod2a;
174             if (isMetafacadePropertyCachingEnabled())
175             {
176                 this.__selectMethod2aSet = true;
177             }
178         }
179         return selectMethod2a;
180     }
181 
182    /**
183     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPrePersist()
184     * @return boolean
185     */
186     protected abstract boolean handleIsPrePersist();
187 
188     private boolean __prePersist3a;
189     private boolean __prePersist3aSet = false;
190 
191     /**
192      * Returns true if the associated operation has the <<PrePersist>> stereotype.
193      * NOTE: The method signature must return void and have no args.
194      * @return (boolean)handleIsPrePersist()
195      */
196     public final boolean isPrePersist()
197     {
198         boolean prePersist3a = this.__prePersist3a;
199         if (!this.__prePersist3aSet)
200         {
201             // prePersist has no pre constraints
202             prePersist3a = handleIsPrePersist();
203             // prePersist has no post constraints
204             this.__prePersist3a = prePersist3a;
205             if (isMetafacadePropertyCachingEnabled())
206             {
207                 this.__prePersist3aSet = true;
208             }
209         }
210         return prePersist3a;
211     }
212 
213    /**
214     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPostPersist()
215     * @return boolean
216     */
217     protected abstract boolean handleIsPostPersist();
218 
219     private boolean __postPersist4a;
220     private boolean __postPersist4aSet = false;
221 
222     /**
223      * Returns true if the associated operation has the <<PostPersist>> stereotype.
224      * NOTE: The method signature must return void and have no args.
225      * @return (boolean)handleIsPostPersist()
226      */
227     public final boolean isPostPersist()
228     {
229         boolean postPersist4a = this.__postPersist4a;
230         if (!this.__postPersist4aSet)
231         {
232             // postPersist has no pre constraints
233             postPersist4a = handleIsPostPersist();
234             // postPersist has no post constraints
235             this.__postPersist4a = postPersist4a;
236             if (isMetafacadePropertyCachingEnabled())
237             {
238                 this.__postPersist4aSet = true;
239             }
240         }
241         return postPersist4a;
242     }
243 
244    /**
245     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPreRemove()
246     * @return boolean
247     */
248     protected abstract boolean handleIsPreRemove();
249 
250     private boolean __preRemove5a;
251     private boolean __preRemove5aSet = false;
252 
253     /**
254      * Returns true if the associated operation has the <<PreRemove>> stereotype.
255      * NOTE: The method signature must return void and have no args.
256      * @return (boolean)handleIsPreRemove()
257      */
258     public final boolean isPreRemove()
259     {
260         boolean preRemove5a = this.__preRemove5a;
261         if (!this.__preRemove5aSet)
262         {
263             // preRemove has no pre constraints
264             preRemove5a = handleIsPreRemove();
265             // preRemove has no post constraints
266             this.__preRemove5a = preRemove5a;
267             if (isMetafacadePropertyCachingEnabled())
268             {
269                 this.__preRemove5aSet = true;
270             }
271         }
272         return preRemove5a;
273     }
274 
275    /**
276     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPostRemove()
277     * @return boolean
278     */
279     protected abstract boolean handleIsPostRemove();
280 
281     private boolean __postRemove6a;
282     private boolean __postRemove6aSet = false;
283 
284     /**
285      * Returns true if the associated operation has the <<PostRemove>> stereotype.
286      * NOTE: The method signature must return void and have no args.
287      * @return (boolean)handleIsPostRemove()
288      */
289     public final boolean isPostRemove()
290     {
291         boolean postRemove6a = this.__postRemove6a;
292         if (!this.__postRemove6aSet)
293         {
294             // postRemove has no pre constraints
295             postRemove6a = handleIsPostRemove();
296             // postRemove has no post constraints
297             this.__postRemove6a = postRemove6a;
298             if (isMetafacadePropertyCachingEnabled())
299             {
300                 this.__postRemove6aSet = true;
301             }
302         }
303         return postRemove6a;
304     }
305 
306    /**
307     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPreUpdate()
308     * @return boolean
309     */
310     protected abstract boolean handleIsPreUpdate();
311 
312     private boolean __preUpdate7a;
313     private boolean __preUpdate7aSet = false;
314 
315     /**
316      * Returns true if the associated operation has the <<PreUpdate>> stereotype.
317      * NOTE: The method signature must return void and have no args.
318      * @return (boolean)handleIsPreUpdate()
319      */
320     public final boolean isPreUpdate()
321     {
322         boolean preUpdate7a = this.__preUpdate7a;
323         if (!this.__preUpdate7aSet)
324         {
325             // preUpdate has no pre constraints
326             preUpdate7a = handleIsPreUpdate();
327             // preUpdate has no post constraints
328             this.__preUpdate7a = preUpdate7a;
329             if (isMetafacadePropertyCachingEnabled())
330             {
331                 this.__preUpdate7aSet = true;
332             }
333         }
334         return preUpdate7a;
335     }
336 
337    /**
338     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPostUpdate()
339     * @return boolean
340     */
341     protected abstract boolean handleIsPostUpdate();
342 
343     private boolean __postUpdate8a;
344     private boolean __postUpdate8aSet = false;
345 
346     /**
347      * Returns true if the associated operation has the <<PostUpdate>> stereotype.
348      * NOTE: The method signature must return void and have no args.
349      * @return (boolean)handleIsPostUpdate()
350      */
351     public final boolean isPostUpdate()
352     {
353         boolean postUpdate8a = this.__postUpdate8a;
354         if (!this.__postUpdate8aSet)
355         {
356             // postUpdate has no pre constraints
357             postUpdate8a = handleIsPostUpdate();
358             // postUpdate has no post constraints
359             this.__postUpdate8a = postUpdate8a;
360             if (isMetafacadePropertyCachingEnabled())
361             {
362                 this.__postUpdate8aSet = true;
363             }
364         }
365         return postUpdate8a;
366     }
367 
368    /**
369     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isPostLoad()
370     * @return boolean
371     */
372     protected abstract boolean handleIsPostLoad();
373 
374     private boolean __postLoad9a;
375     private boolean __postLoad9aSet = false;
376 
377     /**
378      * Returns true if the associated operation has the <<PostLoad>> stereotype.
379      * NOTE: The method signature must return void and have no args.
380      * @return (boolean)handleIsPostLoad()
381      */
382     public final boolean isPostLoad()
383     {
384         boolean postLoad9a = this.__postLoad9a;
385         if (!this.__postLoad9aSet)
386         {
387             // postLoad has no pre constraints
388             postLoad9a = handleIsPostLoad();
389             // postLoad has no post constraints
390             this.__postLoad9a = postLoad9a;
391             if (isMetafacadePropertyCachingEnabled())
392             {
393                 this.__postLoad9aSet = true;
394             }
395         }
396         return postLoad9a;
397     }
398 
399    /**
400     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isLifecycleCallback()
401     * @return boolean
402     */
403     protected abstract boolean handleIsLifecycleCallback();
404 
405     private boolean __lifecycleCallback10a;
406     private boolean __lifecycleCallback10aSet = false;
407 
408     /**
409      * Returns true if this operation is marked with any of the lifecycle callback stereotypes like
410      * PrePersist, PostPersist, PreRemove, PostRemove, PreUpdate, PostUpdate or PostLoad.
411      * @return (boolean)handleIsLifecycleCallback()
412      */
413     public final boolean isLifecycleCallback()
414     {
415         boolean lifecycleCallback10a = this.__lifecycleCallback10a;
416         if (!this.__lifecycleCallback10aSet)
417         {
418             // lifecycleCallback has no pre constraints
419             lifecycleCallback10a = handleIsLifecycleCallback();
420             // lifecycleCallback has no post constraints
421             this.__lifecycleCallback10a = lifecycleCallback10a;
422             if (isMetafacadePropertyCachingEnabled())
423             {
424                 this.__lifecycleCallback10aSet = true;
425             }
426         }
427         return lifecycleCallback10a;
428     }
429 
430    /**
431     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#getImplementationName()
432     * @return String
433     */
434     protected abstract String handleGetImplementationName();
435 
436     private String __implementationName11a;
437     private boolean __implementationName11aSet = false;
438 
439     /**
440      * The name of the operation used within the entity implementation.
441      * @return (String)handleGetImplementationName()
442      */
443     public final String getImplementationName()
444     {
445         String implementationName11a = this.__implementationName11a;
446         if (!this.__implementationName11aSet)
447         {
448             // implementationName has no pre constraints
449             implementationName11a = handleGetImplementationName();
450             // implementationName has no post constraints
451             this.__implementationName11a = implementationName11a;
452             if (isMetafacadePropertyCachingEnabled())
453             {
454                 this.__implementationName11aSet = true;
455             }
456         }
457         return implementationName11a;
458     }
459 
460    /**
461     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#getImplementationCall()
462     * @return String
463     */
464     protected abstract String handleGetImplementationCall();
465 
466     private String __implementationCall12a;
467     private boolean __implementationCall12aSet = false;
468 
469     /**
470      * The method call for the implementation operation.
471      * @return (String)handleGetImplementationCall()
472      */
473     public final String getImplementationCall()
474     {
475         String implementationCall12a = this.__implementationCall12a;
476         if (!this.__implementationCall12aSet)
477         {
478             // implementationCall has no pre constraints
479             implementationCall12a = handleGetImplementationCall();
480             // implementationCall has no post constraints
481             this.__implementationCall12a = implementationCall12a;
482             if (isMetafacadePropertyCachingEnabled())
483             {
484                 this.__implementationCall12aSet = true;
485             }
486         }
487         return implementationCall12a;
488     }
489 
490    /**
491     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#getImplementationSignature()
492     * @return String
493     */
494     protected abstract String handleGetImplementationSignature();
495 
496     private String __implementationSignature13a;
497     private boolean __implementationSignature13aSet = false;
498 
499     /**
500      * The signature for the implementation operation.
501      * @return (String)handleGetImplementationSignature()
502      */
503     public final String getImplementationSignature()
504     {
505         String implementationSignature13a = this.__implementationSignature13a;
506         if (!this.__implementationSignature13aSet)
507         {
508             // implementationSignature has no pre constraints
509             implementationSignature13a = handleGetImplementationSignature();
510             // implementationSignature has no post constraints
511             this.__implementationSignature13a = implementationSignature13a;
512             if (isMetafacadePropertyCachingEnabled())
513             {
514                 this.__implementationSignature13aSet = true;
515             }
516         }
517         return implementationSignature13a;
518     }
519 
520    /**
521     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isCreateMethod()
522     * @return boolean
523     */
524     protected abstract boolean handleIsCreateMethod();
525 
526     private boolean __createMethod14a;
527     private boolean __createMethod14aSet = false;
528 
529     /**
530      * Returns true if the operation has the <<CreateMethod>> stereotype.
531      * @return (boolean)handleIsCreateMethod()
532      */
533     public final boolean isCreateMethod()
534     {
535         boolean createMethod14a = this.__createMethod14a;
536         if (!this.__createMethod14aSet)
537         {
538             // createMethod has no pre constraints
539             createMethod14a = handleIsCreateMethod();
540             // createMethod has no post constraints
541             this.__createMethod14a = createMethod14a;
542             if (isMetafacadePropertyCachingEnabled())
543             {
544                 this.__createMethod14aSet = true;
545             }
546         }
547         return createMethod14a;
548     }
549 
550    /**
551     * @see org.andromda.cartridges.ejb3.metafacades.EJB3OperationFacade#isFinderMethod()
552     * @return boolean
553     */
554     protected abstract boolean handleIsFinderMethod();
555 
556     private boolean __finderMethod15a;
557     private boolean __finderMethod15aSet = false;
558 
559     /**
560      * Returns true if the operation is a finder or query operation.
561      * @return (boolean)handleIsFinderMethod()
562      */
563     public final boolean isFinderMethod()
564     {
565         boolean finderMethod15a = this.__finderMethod15a;
566         if (!this.__finderMethod15aSet)
567         {
568             // finderMethod has no pre constraints
569             finderMethod15a = handleIsFinderMethod();
570             // finderMethod has no post constraints
571             this.__finderMethod15a = finderMethod15a;
572             if (isMetafacadePropertyCachingEnabled())
573             {
574                 this.__finderMethod15aSet = true;
575             }
576         }
577         return finderMethod15a;
578     }
579 
580     // ------------- associations ------------------
581 
582     /**
583      * @return true
584      * @see OperationFacade
585      */
586     public boolean isOperationFacadeMetaType()
587     {
588         return true;
589     }
590 
591     /**
592      * @return true
593      * @see ModelElementFacade
594      */
595     public boolean isModelElementFacadeMetaType()
596     {
597         return true;
598     }
599 
600     // ----------- delegates to OperationFacade ------------
601     /**
602      * Copies all tagged values from the given ModelElementFacade to this model element facade.
603      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
604      */
605     public void copyTaggedValues(ModelElementFacade element)
606     {
607         this.getSuperOperationFacade().copyTaggedValues(element);
608     }
609 
610     /**
611      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
612      * one found will be returned.
613      * @see ModelElementFacade#findTaggedValue(String tagName)
614      */
615     public Object findTaggedValue(String tagName)
616     {
617         return this.getSuperOperationFacade().findTaggedValue(tagName);
618     }
619 
620     /**
621      * Returns all the values for the tagged value with the specified name. The returned collection
622      * will contains only String instances, or will be empty. Never null.
623      * @see ModelElementFacade#findTaggedValues(String tagName)
624      */
625     public Collection<Object> findTaggedValues(String tagName)
626     {
627         return this.getSuperOperationFacade().findTaggedValues(tagName);
628     }
629 
630     /**
631      * Returns the fully qualified name of the model element. The fully qualified name includes
632      * complete package qualified name of the underlying model element. The templates parameter will
633      * be replaced by the correct one given the binding relation of the parameter to this element.
634      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
635      */
636     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
637     {
638         return this.getSuperOperationFacade().getBindedFullyQualifiedName(bindedElement);
639     }
640 
641     /**
642      * Gets all constraints belonging to the model element.
643      * @see ModelElementFacade#getConstraints()
644      */
645     public Collection<ConstraintFacade> getConstraints()
646     {
647         return this.getSuperOperationFacade().getConstraints();
648     }
649 
650     /**
651      * Returns the constraints of the argument kind that have been placed onto this model. Typical
652      * kinds are "inv", "pre" and "post". Other kinds are possible.
653      * @see ModelElementFacade#getConstraints(String kind)
654      */
655     public Collection<ConstraintFacade> getConstraints(String kind)
656     {
657         return this.getSuperOperationFacade().getConstraints(kind);
658     }
659 
660     /**
661      * Gets the documentation for the model element, The indent argument is prefixed to each line.
662      * By default this method wraps lines after 64 characters.
663      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
664      * @see ModelElementFacade#getDocumentation(String indent)
665      */
666     public String getDocumentation(String indent)
667     {
668         return this.getSuperOperationFacade().getDocumentation(indent);
669     }
670 
671     /**
672      * This method returns the documentation for this model element, with the lines wrapped after
673      * the specified number of characters, values of less than 1 will indicate no line wrapping is
674      * required. By default paragraphs are returned as HTML.
675      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
676      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
677      */
678     public String getDocumentation(String indent, int lineLength)
679     {
680         return this.getSuperOperationFacade().getDocumentation(indent, lineLength);
681     }
682 
683     /**
684      * This method returns the documentation for this model element, with the lines wrapped after
685      * the specified number of characters, values of less than 1 will indicate no line wrapping is
686      * required. HTML style determines if HTML Escaping is applied.
687      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
688      */
689     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
690     {
691         return this.getSuperOperationFacade().getDocumentation(indent, lineLength, htmlStyle);
692     }
693 
694     /**
695      * The fully qualified name of this model element.
696      * @see ModelElementFacade#getFullyQualifiedName()
697      */
698     public String getFullyQualifiedName()
699     {
700         return this.getSuperOperationFacade().getFullyQualifiedName();
701     }
702 
703     /**
704      * Returns the fully qualified name of the model element. The fully qualified name includes
705      * complete package qualified name of the underlying model element.  If modelName is true, then
706      * the original name of the model element (the name contained within the model) will be the name
707      * returned, otherwise a name from a language mapping will be returned.
708      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
709      */
710     public String getFullyQualifiedName(boolean modelName)
711     {
712         return this.getSuperOperationFacade().getFullyQualifiedName(modelName);
713     }
714 
715     /**
716      * Returns the fully qualified name as a path, the returned value always starts with out a slash
717      * '/'.
718      * @see ModelElementFacade#getFullyQualifiedNamePath()
719      */
720     public String getFullyQualifiedNamePath()
721     {
722         return this.getSuperOperationFacade().getFullyQualifiedNamePath();
723     }
724 
725     /**
726      * Gets the unique identifier of the underlying model element.
727      * @see ModelElementFacade#getId()
728      */
729     public String getId()
730     {
731         return this.getSuperOperationFacade().getId();
732     }
733 
734     /**
735      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
736      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
737      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
738      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
739      * JDK5 compiler level.
740      * @see ModelElementFacade#getKeywords()
741      */
742     public Collection<String> getKeywords()
743     {
744         return this.getSuperOperationFacade().getKeywords();
745     }
746 
747     /**
748      * UML2: Retrieves a localized label for this named element.
749      * @see ModelElementFacade#getLabel()
750      */
751     public String getLabel()
752     {
753         return this.getSuperOperationFacade().getLabel();
754     }
755 
756     /**
757      * The language mappings that have been set for this model element.
758      * @see ModelElementFacade#getLanguageMappings()
759      */
760     public TypeMappings getLanguageMappings()
761     {
762         return this.getSuperOperationFacade().getLanguageMappings();
763     }
764 
765     /**
766      * Return the model containing this model element (multiple models may be loaded and processed
767      * at the same time).
768      * @see ModelElementFacade#getModel()
769      */
770     public ModelFacade getModel()
771     {
772         return this.getSuperOperationFacade().getModel();
773     }
774 
775     /**
776      * The name of the model element.
777      * @see ModelElementFacade#getName()
778      */
779     public String getName()
780     {
781         return this.getSuperOperationFacade().getName();
782     }
783 
784     /**
785      * Gets the package to which this model element belongs.
786      * @see ModelElementFacade#getPackage()
787      */
788     public ModelElementFacade getPackage()
789     {
790         return this.getSuperOperationFacade().getPackage();
791     }
792 
793     /**
794      * The name of this model element's package.
795      * @see ModelElementFacade#getPackageName()
796      */
797     public String getPackageName()
798     {
799         return this.getSuperOperationFacade().getPackageName();
800     }
801 
802     /**
803      * Gets the package name (optionally providing the ability to retrieve the model name and not
804      * the mapped name).
805      * @see ModelElementFacade#getPackageName(boolean modelName)
806      */
807     public String getPackageName(boolean modelName)
808     {
809         return this.getSuperOperationFacade().getPackageName(modelName);
810     }
811 
812     /**
813      * Returns the package as a path, the returned value always starts with out a slash '/'.
814      * @see ModelElementFacade#getPackagePath()
815      */
816     public String getPackagePath()
817     {
818         return this.getSuperOperationFacade().getPackagePath();
819     }
820 
821     /**
822      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
823      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
824      * the names of the containing namespaces starting at the root of the hierarchy and ending with
825      * the name of the NamedElement itself.
826      * @see ModelElementFacade#getQualifiedName()
827      */
828     public String getQualifiedName()
829     {
830         return this.getSuperOperationFacade().getQualifiedName();
831     }
832 
833     /**
834      * Gets the root package for the model element.
835      * @see ModelElementFacade#getRootPackage()
836      */
837     public PackageFacade getRootPackage()
838     {
839         return this.getSuperOperationFacade().getRootPackage();
840     }
841 
842     /**
843      * Gets the dependencies for which this model element is the source.
844      * @see ModelElementFacade#getSourceDependencies()
845      */
846     public Collection<DependencyFacade> getSourceDependencies()
847     {
848         return this.getSuperOperationFacade().getSourceDependencies();
849     }
850 
851     /**
852      * If this model element is the context of an activity graph, this represents that activity
853      * graph.
854      * @see ModelElementFacade#getStateMachineContext()
855      */
856     public StateMachineFacade getStateMachineContext()
857     {
858         return this.getSuperOperationFacade().getStateMachineContext();
859     }
860 
861     /**
862      * The collection of ALL stereotype names for this model element.
863      * @see ModelElementFacade#getStereotypeNames()
864      */
865     public Collection<String> getStereotypeNames()
866     {
867         return this.getSuperOperationFacade().getStereotypeNames();
868     }
869 
870     /**
871      * Gets all stereotypes for this model element.
872      * @see ModelElementFacade#getStereotypes()
873      */
874     public Collection<StereotypeFacade> getStereotypes()
875     {
876         return this.getSuperOperationFacade().getStereotypes();
877     }
878 
879     /**
880      * Return the TaggedValues associated with this model element, under all stereotypes.
881      * @see ModelElementFacade#getTaggedValues()
882      */
883     public Collection<TaggedValueFacade> getTaggedValues()
884     {
885         return this.getSuperOperationFacade().getTaggedValues();
886     }
887 
888     /**
889      * Gets the dependencies for which this model element is the target.
890      * @see ModelElementFacade#getTargetDependencies()
891      */
892     public Collection<DependencyFacade> getTargetDependencies()
893     {
894         return this.getSuperOperationFacade().getTargetDependencies();
895     }
896 
897     /**
898      * Get the template parameter for this model element having the parameterName
899      * @see ModelElementFacade#getTemplateParameter(String parameterName)
900      */
901     public Object getTemplateParameter(String parameterName)
902     {
903         return this.getSuperOperationFacade().getTemplateParameter(parameterName);
904     }
905 
906     /**
907      * Get the template parameters for this model element
908      * @see ModelElementFacade#getTemplateParameters()
909      */
910     public Collection<TemplateParameterFacade> getTemplateParameters()
911     {
912         return this.getSuperOperationFacade().getTemplateParameters();
913     }
914 
915     /**
916      * The visibility (i.e. public, private, protected or package) of the model element, will
917      * attempt a lookup for these values in the language mappings (if any).
918      * @see ModelElementFacade#getVisibility()
919      */
920     public String getVisibility()
921     {
922         return this.getSuperOperationFacade().getVisibility();
923     }
924 
925     /**
926      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
927      * is taken into account when searching for the stereotype), false otherwise.
928      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
929      */
930     public boolean hasExactStereotype(String stereotypeName)
931     {
932         return this.getSuperOperationFacade().hasExactStereotype(stereotypeName);
933     }
934 
935     /**
936      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
937      * pipe, semicolon, or << >>
938      * @see ModelElementFacade#hasKeyword(String keywordName)
939      */
940     public boolean hasKeyword(String keywordName)
941     {
942         return this.getSuperOperationFacade().hasKeyword(keywordName);
943     }
944 
945     /**
946      * Returns true if the model element has the specified stereotype.  If the stereotype itself
947      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
948      * one of the stereotype's ancestors has a matching name this method will return true, false
949      * otherwise.
950      * For example, if we have a certain stereotype called <<exception>> and a model element has a
951      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
952      * method with 'stereotypeName' defined as 'exception' the method would return true since
953      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
954      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
955      * @see ModelElementFacade#hasStereotype(String stereotypeName)
956      */
957     public boolean hasStereotype(String stereotypeName)
958     {
959         return this.getSuperOperationFacade().hasStereotype(stereotypeName);
960     }
961 
962     /**
963      * True if there are target dependencies from this element that are instances of BindingFacade.
964      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
965      * @see ModelElementFacade#isBindingDependenciesPresent()
966      */
967     public boolean isBindingDependenciesPresent()
968     {
969         return this.getSuperOperationFacade().isBindingDependenciesPresent();
970     }
971 
972     /**
973      * Indicates if any constraints are present on this model element.
974      * @see ModelElementFacade#isConstraintsPresent()
975      */
976     public boolean isConstraintsPresent()
977     {
978         return this.getSuperOperationFacade().isConstraintsPresent();
979     }
980 
981     /**
982      * Indicates if any documentation is present on this model element.
983      * @see ModelElementFacade#isDocumentationPresent()
984      */
985     public boolean isDocumentationPresent()
986     {
987         return this.getSuperOperationFacade().isDocumentationPresent();
988     }
989 
990     /**
991      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
992      * @see ModelElementFacade#isReservedWord()
993      */
994     public boolean isReservedWord()
995     {
996         return this.getSuperOperationFacade().isReservedWord();
997     }
998 
999     /**
1000      * True is there are template parameters on this model element. For UML2, applies to Class,
1001      * Operation, Property, and Parameter.
1002      * @see ModelElementFacade#isTemplateParametersPresent()
1003      */
1004     public boolean isTemplateParametersPresent()
1005     {
1006         return this.getSuperOperationFacade().isTemplateParametersPresent();
1007     }
1008 
1009     /**
1010      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1011      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1012      * Enumerations and Interfaces, optionally applies on other model elements.
1013      * @see ModelElementFacade#isValidIdentifierName()
1014      */
1015     public boolean isValidIdentifierName()
1016     {
1017         return this.getSuperOperationFacade().isValidIdentifierName();
1018     }
1019 
1020     /**
1021      * Searches for the constraint with the specified 'name' on this model element, and if found
1022      * translates it using the specified 'translation' from a translation library discovered by the
1023      * framework.
1024      * @see ModelElementFacade#translateConstraint(String name, String translation)
1025      */
1026     public String translateConstraint(String name, String translation)
1027     {
1028         return this.getSuperOperationFacade().translateConstraint(name, translation);
1029     }
1030 
1031     /**
1032      * Translates all constraints belonging to this model element with the given 'translation'.
1033      * @see ModelElementFacade#translateConstraints(String translation)
1034      */
1035     public String[] translateConstraints(String translation)
1036     {
1037         return this.getSuperOperationFacade().translateConstraints(translation);
1038     }
1039 
1040     /**
1041      * Translates the constraints of the specified 'kind' belonging to this model element.
1042      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1043      */
1044     public String[] translateConstraints(String kind, String translation)
1045     {
1046         return this.getSuperOperationFacade().translateConstraints(kind, translation);
1047     }
1048 
1049     /**
1050      * Finds the parameter on this operation having the given name, if no parameter is found, null
1051      * is returned instead.
1052      * @see OperationFacade#findParameter(String name)
1053      */
1054     public ParameterFacade findParameter(String name)
1055     {
1056         return this.getSuperOperationFacade().findParameter(name);
1057     }
1058 
1059     /**
1060      * Searches the given feature for the specified tag.
1061      * If the follow boolean is set to true then the search will continue from the class operation
1062      * to the class itself and then up the class hierarchy.
1063      * @see OperationFacade#findTaggedValue(String name, boolean follow)
1064      */
1065     public Object findTaggedValue(String name, boolean follow)
1066     {
1067         return this.getSuperOperationFacade().findTaggedValue(name, follow);
1068     }
1069 
1070     /**
1071      * A comma separated list of all argument names.
1072      * @see OperationFacade#getArgumentNames()
1073      */
1074     public String getArgumentNames()
1075     {
1076         return this.getSuperOperationFacade().getArgumentNames();
1077     }
1078 
1079     /**
1080      * A comma separated list of all types of each argument, in order.
1081      * @see OperationFacade#getArgumentTypeNames()
1082      */
1083     public String getArgumentTypeNames()
1084     {
1085         return this.getSuperOperationFacade().getArgumentTypeNames();
1086     }
1087 
1088     /**
1089      * Specification of an argument used to pass information into or out of an invocation of a
1090      * behavioral
1091      * feature. Parameters are allowed to be treated as connectable elements. Parameters have
1092      * support for
1093      * streaming, exceptions, and parameter sets.
1094      * @see OperationFacade#getArguments()
1095      */
1096     public Collection<ParameterFacade> getArguments()
1097     {
1098         return this.getSuperOperationFacade().getArguments();
1099     }
1100 
1101     /**
1102      * Constructs the operation call with the operation name
1103      * @see OperationFacade#getCall()
1104      */
1105     public String getCall()
1106     {
1107         return this.getSuperOperationFacade().getCall();
1108     }
1109 
1110     /**
1111      * Returns the concurrency modifier for this operation (i.e. concurrent, guarded or sequential)
1112      * of the model element, will attempt a lookup for these values in the language mappings (if
1113      * any).
1114      * @see OperationFacade#getConcurrency()
1115      */
1116     public String getConcurrency()
1117     {
1118         return this.getSuperOperationFacade().getConcurrency();
1119     }
1120 
1121     /**
1122      * A comma separated list containing all exceptions that this operation throws.  Exceptions are
1123      * determined through dependencies that have the target element stereotyped as <<Exception>>.
1124      * @see OperationFacade#getExceptionList()
1125      */
1126     public String getExceptionList()
1127     {
1128         return this.getSuperOperationFacade().getExceptionList();
1129     }
1130 
1131     /**
1132      * Returns a comma separated list of exceptions appended to the comma separated list of fully
1133      * qualified 'initialException' classes passed in to this method.
1134      * @see OperationFacade#getExceptionList(String initialExceptions)
1135      */
1136     public String getExceptionList(String initialExceptions)
1137     {
1138         return this.getSuperOperationFacade().getExceptionList(initialExceptions);
1139     }
1140 
1141     /**
1142      * A collection of all exceptions thrown by this operation.
1143      * @see OperationFacade#getExceptions()
1144      */
1145     public Collection<ModelElementFacade> getExceptions()
1146     {
1147         return this.getSuperOperationFacade().getExceptions();
1148     }
1149 
1150     /**
1151      * Return Type with multiplicity taken into account. UML14 does not allow multiplicity *.
1152      * @see OperationFacade#getGetterSetterReturnTypeName()
1153      */
1154     public String getGetterSetterReturnTypeName()
1155     {
1156         return this.getSuperOperationFacade().getGetterSetterReturnTypeName();
1157     }
1158 
1159     /**
1160      * the lower value for the multiplicity
1161      * -only applicable for UML2
1162      * @see OperationFacade#getLower()
1163      */
1164     public int getLower()
1165     {
1166         return this.getSuperOperationFacade().getLower();
1167     }
1168 
1169     /**
1170      * Returns the operation method body determined from UML sequence diagrams or other UML sources.
1171      * @see OperationFacade#getMethodBody()
1172      */
1173     public String getMethodBody()
1174     {
1175         return this.getSuperOperationFacade().getMethodBody();
1176     }
1177 
1178     /**
1179      * The operation this operation overrides, null if this operation is not overriding.
1180      * @see OperationFacade#getOverriddenOperation()
1181      */
1182     public OperationFacade getOverriddenOperation()
1183     {
1184         return this.getSuperOperationFacade().getOverriddenOperation();
1185     }
1186 
1187     /**
1188      * Gets the owner of this operation
1189      * @see OperationFacade#getOwner()
1190      */
1191     public ClassifierFacade getOwner()
1192     {
1193         return this.getSuperOperationFacade().getOwner();
1194     }
1195 
1196     /**
1197      * Return all parameters for the operation, including the return parameter.
1198      * @see OperationFacade#getParameters()
1199      */
1200     public Collection<ParameterFacade> getParameters()
1201     {
1202         return this.getSuperOperationFacade().getParameters();
1203     }
1204 
1205     /**
1206      * The name of the operation that handles postcondition constraints.
1207      * @see OperationFacade#getPostconditionName()
1208      */
1209     public String getPostconditionName()
1210     {
1211         return this.getSuperOperationFacade().getPostconditionName();
1212     }
1213 
1214     /**
1215      * The postcondition constraints belonging to this operation.
1216      * @see OperationFacade#getPostconditions()
1217      */
1218     public Collection<ConstraintFacade> getPostconditions()
1219     {
1220         return this.getSuperOperationFacade().getPostconditions();
1221     }
1222 
1223     /**
1224      * The call to the precondition operation.
1225      * @see OperationFacade#getPreconditionCall()
1226      */
1227     public String getPreconditionCall()
1228     {
1229         return this.getSuperOperationFacade().getPreconditionCall();
1230     }
1231 
1232     /**
1233      * The name of the operation that handles precondition constraints.
1234      * @see OperationFacade#getPreconditionName()
1235      */
1236     public String getPreconditionName()
1237     {
1238         return this.getSuperOperationFacade().getPreconditionName();
1239     }
1240 
1241     /**
1242      * The signature of the precondition operation.
1243      * @see OperationFacade#getPreconditionSignature()
1244      */
1245     public String getPreconditionSignature()
1246     {
1247         return this.getSuperOperationFacade().getPreconditionSignature();
1248     }
1249 
1250     /**
1251      * The precondition constraints belonging to this operation.
1252      * @see OperationFacade#getPreconditions()
1253      */
1254     public Collection<ConstraintFacade> getPreconditions()
1255     {
1256         return this.getSuperOperationFacade().getPreconditions();
1257     }
1258 
1259     /**
1260      * (UML2 Only). Get the actual return parameter (which may have stereotypes etc).
1261      * @see OperationFacade#getReturnParameter()
1262      */
1263     public ParameterFacade getReturnParameter()
1264     {
1265         return this.getSuperOperationFacade().getReturnParameter();
1266     }
1267 
1268     /**
1269      * The operation return type parameter.
1270      * @see OperationFacade#getReturnType()
1271      */
1272     public ClassifierFacade getReturnType()
1273     {
1274         return this.getSuperOperationFacade().getReturnType();
1275     }
1276 
1277     /**
1278      * Return the operation signature, including public/protested abstract returnType name plus
1279      * argument type and name
1280      * @see OperationFacade#getSignature()
1281      */
1282     public String getSignature()
1283     {
1284         return this.getSuperOperationFacade().getSignature();
1285     }
1286 
1287     /**
1288      * Returns the signature of the operation and optionally appends the argument names (if
1289      * withArgumentNames is true), otherwise returns the signature with just the types alone in the
1290      * signature.
1291      * @see OperationFacade#getSignature(boolean withArgumentNames)
1292      */
1293     public String getSignature(boolean withArgumentNames)
1294     {
1295         return this.getSuperOperationFacade().getSignature(withArgumentNames);
1296     }
1297 
1298     /**
1299      * Returns the signature of the operation and optionally appends the given 'argumentModifier' to
1300      * each argument.
1301      * @see OperationFacade#getSignature(String argumentModifier)
1302      */
1303     public String getSignature(String argumentModifier)
1304     {
1305         return this.getSuperOperationFacade().getSignature(argumentModifier);
1306     }
1307 
1308     /**
1309      * A comma-separated parameter list  (type and name of each parameter) of an operation.
1310      * @see OperationFacade#getTypedArgumentList()
1311      */
1312     public String getTypedArgumentList()
1313     {
1314         return this.getSuperOperationFacade().getTypedArgumentList();
1315     }
1316 
1317     /**
1318      * A comma-separated parameter list  (type and name of each parameter) of an operation with an
1319      * optional modifier (i.e final) before each parameter.
1320      * @see OperationFacade#getTypedArgumentList(String modifier)
1321      */
1322     public String getTypedArgumentList(String modifier)
1323     {
1324         return this.getSuperOperationFacade().getTypedArgumentList(modifier);
1325     }
1326 
1327     /**
1328      * the upper value for the multiplicity (will be -1 for *)
1329      * - only applicable for UML2
1330      * @see OperationFacade#getUpper()
1331      */
1332     public int getUpper()
1333     {
1334         return this.getSuperOperationFacade().getUpper();
1335     }
1336 
1337     /**
1338      * True is the operation is abstract.
1339      * @see OperationFacade#isAbstract()
1340      */
1341     public boolean isAbstract()
1342     {
1343         return this.getSuperOperationFacade().isAbstract();
1344     }
1345 
1346     /**
1347      * True if the operation has (i.e. throws any exceptions) false otherwise.
1348      * @see OperationFacade#isExceptionsPresent()
1349      */
1350     public boolean isExceptionsPresent()
1351     {
1352         return this.getSuperOperationFacade().isExceptionsPresent();
1353     }
1354 
1355     /**
1356      * IsLeaf property in the operation. If true, operation is final, cannot be extended or
1357      * implemented by a descendant. Default=false.
1358      * @see OperationFacade#isLeaf()
1359      */
1360     public boolean isLeaf()
1361     {
1362         return this.getSuperOperationFacade().isLeaf();
1363     }
1364 
1365     /**
1366      * UML2 only. If the return type parameter multiplicity>1 OR the operation multiplicity>1.
1367      * Default=false.
1368      * @see OperationFacade#isMany()
1369      */
1370     public boolean isMany()
1371     {
1372         return this.getSuperOperationFacade().isMany();
1373     }
1374 
1375     /**
1376      * UML2 only: If isMany (Collection type returned), is the type unique within the collection. 
1377      * Unique+Ordered determines CollectionType implementation of return result. Default=false.
1378      * @see OperationFacade#isOrdered()
1379      */
1380     public boolean isOrdered()
1381     {
1382         return this.getSuperOperationFacade().isOrdered();
1383     }
1384 
1385     /**
1386      * True if this operation overrides an operation defined in an ancestor class. An operation
1387      * overrides when the names of the operations as well as the types of the arguments are equal.
1388      * The return type may be different and is, as well as any exceptions, ignored.
1389      * @see OperationFacade#isOverriding()
1390      */
1391     public boolean isOverriding()
1392     {
1393         return this.getSuperOperationFacade().isOverriding();
1394     }
1395 
1396     /**
1397      * Whether any postcondition constraints are present on this operation.
1398      * @see OperationFacade#isPostconditionsPresent()
1399      */
1400     public boolean isPostconditionsPresent()
1401     {
1402         return this.getSuperOperationFacade().isPostconditionsPresent();
1403     }
1404 
1405     /**
1406      * Whether any precondition constraints are present on this operation.
1407      * @see OperationFacade#isPreconditionsPresent()
1408      */
1409     public boolean isPreconditionsPresent()
1410     {
1411         return this.getSuperOperationFacade().isPreconditionsPresent();
1412     }
1413 
1414     /**
1415      * Indicates whether or not this operation is a query operation.
1416      * @see OperationFacade#isQuery()
1417      */
1418     public boolean isQuery()
1419     {
1420         return this.getSuperOperationFacade().isQuery();
1421     }
1422 
1423     /**
1424      * True/false depending on whether or not the operation has a return type or not (i.e. a return
1425      * type of something other than void).
1426      * @see OperationFacade#isReturnTypePresent()
1427      */
1428     public boolean isReturnTypePresent()
1429     {
1430         return this.getSuperOperationFacade().isReturnTypePresent();
1431     }
1432 
1433     /**
1434      * True is the operation is static (only a single instance can be instantiated).
1435      * @see OperationFacade#isStatic()
1436      */
1437     public boolean isStatic()
1438     {
1439         return this.getSuperOperationFacade().isStatic();
1440     }
1441 
1442     /**
1443      * UML2 only: for Collection return type, is the type unique within the collection.
1444      * Unique+Ordered determines the returned CollectionType. Default=false.
1445      * @see OperationFacade#isUnique()
1446      */
1447     public boolean isUnique()
1448     {
1449         return this.getSuperOperationFacade().isUnique();
1450     }
1451 
1452     /**
1453      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1454      */
1455     @Override
1456     public void initialize()
1457     {
1458         this.getSuperOperationFacade().initialize();
1459     }
1460 
1461     /**
1462      * @return Object getSuperOperationFacade().getValidationOwner()
1463      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1464      */
1465     @Override
1466     public Object getValidationOwner()
1467     {
1468         Object owner = this.getSuperOperationFacade().getValidationOwner();
1469         return owner;
1470     }
1471 
1472     /**
1473      * @return String getSuperOperationFacade().getValidationName()
1474      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1475      */
1476     @Override
1477     public String getValidationName()
1478     {
1479         String name = this.getSuperOperationFacade().getValidationName();
1480         return name;
1481     }
1482 
1483     /**
1484      * @param validationMessages Collection<ModelValidationMessage>
1485      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1486      */
1487     @Override
1488     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1489     {
1490         this.getSuperOperationFacade().validateInvariants(validationMessages);
1491     }
1492 
1493     /**
1494      * The property that stores the name of the metafacade.
1495      */
1496     private static final String NAME_PROPERTY = "name";
1497     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1498 
1499     /**
1500      * @see Object#toString()
1501      */
1502     @Override
1503     public String toString()
1504     {
1505         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1506         toString.append("[");
1507         try
1508         {
1509             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1510         }
1511         catch (final Throwable tryAgain)
1512         {
1513             try
1514             {
1515                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1516             }
1517             catch (final Throwable ignore)
1518             {
1519                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1520             }
1521         }
1522         toString.append("]");
1523         return toString.toString();
1524     }
1525 }