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