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