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