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.ejb.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   * Represents a Session EJB.
35   * MetafacadeLogic for EJBSessionFacade
36   *
37   * @see EJBSessionFacade
38   */
39  public abstract class EJBSessionFacadeLogic
40      extends MetafacadeBase
41      implements EJBSessionFacade
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 EJBSessionFacadeLogic(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 EJBSessionFacade 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.ejb.metafacades.EJBSessionFacade";
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 EJBSessionFacade
117      */
118     public boolean isEJBSessionFacadeMetaType()
119     {
120         return true;
121     }
122 
123     // --------------- attributes ---------------------
124 
125    /**
126     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#isSyntheticCreateMethodAllowed()
127     * @return boolean
128     */
129     protected abstract boolean handleIsSyntheticCreateMethodAllowed();
130 
131     private boolean __syntheticCreateMethodAllowed1a;
132     private boolean __syntheticCreateMethodAllowed1aSet = false;
133 
134     /**
135      * Whether or not to allow a synthetic (auto generated) create method.
136      * @return (boolean)handleIsSyntheticCreateMethodAllowed()
137      */
138     public final boolean isSyntheticCreateMethodAllowed()
139     {
140         boolean syntheticCreateMethodAllowed1a = this.__syntheticCreateMethodAllowed1a;
141         if (!this.__syntheticCreateMethodAllowed1aSet)
142         {
143             // syntheticCreateMethodAllowed has no pre constraints
144             syntheticCreateMethodAllowed1a = handleIsSyntheticCreateMethodAllowed();
145             // syntheticCreateMethodAllowed has no post constraints
146             this.__syntheticCreateMethodAllowed1a = syntheticCreateMethodAllowed1a;
147             if (isMetafacadePropertyCachingEnabled())
148             {
149                 this.__syntheticCreateMethodAllowed1aSet = true;
150             }
151         }
152         return syntheticCreateMethodAllowed1a;
153     }
154 
155    /**
156     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getBusinessOperations()
157     * @return Collection
158     */
159     protected abstract Collection handleGetBusinessOperations();
160 
161     private Collection __businessOperations2a;
162     private boolean __businessOperations2aSet = false;
163 
164     /**
165      * All "business" operations for this Session EJB.  These are any operations that are NOT
166      * identified as create methods.
167      * @return (Collection)handleGetBusinessOperations()
168      */
169     public final Collection getBusinessOperations()
170     {
171         Collection businessOperations2a = this.__businessOperations2a;
172         if (!this.__businessOperations2aSet)
173         {
174             // businessOperations has no pre constraints
175             businessOperations2a = handleGetBusinessOperations();
176             // businessOperations has no post constraints
177             this.__businessOperations2a = businessOperations2a;
178             if (isMetafacadePropertyCachingEnabled())
179             {
180                 this.__businessOperations2aSet = true;
181             }
182         }
183         return businessOperations2a;
184     }
185 
186    /**
187     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getAllInstanceAttributes()
188     * @return List
189     */
190     protected abstract List handleGetAllInstanceAttributes();
191 
192     private List __allInstanceAttributes3a;
193     private boolean __allInstanceAttributes3aSet = false;
194 
195     /**
196      * All instanceAttributes for this session EJB. The list includes the instanceAttributes that
197      * are inherited from super classes. The list contains the inherited instanceAttributes first,
198      * followed by the instanceAttributes defined in this class.
199      * @return (List)handleGetAllInstanceAttributes()
200      */
201     public final List getAllInstanceAttributes()
202     {
203         List allInstanceAttributes3a = this.__allInstanceAttributes3a;
204         if (!this.__allInstanceAttributes3aSet)
205         {
206             // allInstanceAttributes has no pre constraints
207             allInstanceAttributes3a = handleGetAllInstanceAttributes();
208             // allInstanceAttributes has no post constraints
209             this.__allInstanceAttributes3a = allInstanceAttributes3a;
210             if (isMetafacadePropertyCachingEnabled())
211             {
212                 this.__allInstanceAttributes3aSet = true;
213             }
214         }
215         return allInstanceAttributes3a;
216     }
217 
218    /**
219     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getInheritedInstanceAttributes()
220     * @return List
221     */
222     protected abstract List handleGetInheritedInstanceAttributes();
223 
224     private List __inheritedInstanceAttributes4a;
225     private boolean __inheritedInstanceAttributes4aSet = false;
226 
227     /**
228      * Alll inherited instanceAttributes this session EJB.  The instanceAttributes are grouped by
229      * the class that defines the instanceAttributes, with instanceAttributes from the most removed
230      * super class first.
231      * @return (List)handleGetInheritedInstanceAttributes()
232      */
233     public final List getInheritedInstanceAttributes()
234     {
235         List inheritedInstanceAttributes4a = this.__inheritedInstanceAttributes4a;
236         if (!this.__inheritedInstanceAttributes4aSet)
237         {
238             // inheritedInstanceAttributes has no pre constraints
239             inheritedInstanceAttributes4a = handleGetInheritedInstanceAttributes();
240             // inheritedInstanceAttributes has no post constraints
241             this.__inheritedInstanceAttributes4a = inheritedInstanceAttributes4a;
242             if (isMetafacadePropertyCachingEnabled())
243             {
244                 this.__inheritedInstanceAttributes4aSet = true;
245             }
246         }
247         return inheritedInstanceAttributes4a;
248     }
249 
250    /**
251     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getJndiName()
252     * @return String
253     */
254     protected abstract String handleGetJndiName();
255 
256     private String __jndiName5a;
257     private boolean __jndiName5aSet = false;
258 
259     /**
260      * The JNDI name to which this session EJB is bound.
261      * @return (String)handleGetJndiName()
262      */
263     public final String getJndiName()
264     {
265         String jndiName5a = this.__jndiName5a;
266         if (!this.__jndiName5aSet)
267         {
268             // jndiName has no pre constraints
269             jndiName5a = handleGetJndiName();
270             // jndiName has no post constraints
271             this.__jndiName5a = jndiName5a;
272             if (isMetafacadePropertyCachingEnabled())
273             {
274                 this.__jndiName5aSet = true;
275             }
276         }
277         return jndiName5a;
278     }
279 
280    /**
281     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#isStateful()
282     * @return boolean
283     */
284     protected abstract boolean handleIsStateful();
285 
286     private boolean __stateful6a;
287     private boolean __stateful6aSet = false;
288 
289     /**
290      * True/false depending on whether or not this Session EJB is stateful or not.
291      * @return (boolean)handleIsStateful()
292      */
293     public final boolean isStateful()
294     {
295         boolean stateful6a = this.__stateful6a;
296         if (!this.__stateful6aSet)
297         {
298             // stateful has no pre constraints
299             stateful6a = handleIsStateful();
300             // stateful has no post constraints
301             this.__stateful6a = stateful6a;
302             if (isMetafacadePropertyCachingEnabled())
303             {
304                 this.__stateful6aSet = true;
305             }
306         }
307         return stateful6a;
308     }
309 
310    /**
311     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#isStateless()
312     * @return boolean
313     */
314     protected abstract boolean handleIsStateless();
315 
316     private boolean __stateless7a;
317     private boolean __stateless7aSet = false;
318 
319     /**
320      * True/false depending on whether or not this Session EJB is stateless or not.
321      * @return (boolean)handleIsStateless()
322      */
323     public final boolean isStateless()
324     {
325         boolean stateless7a = this.__stateless7a;
326         if (!this.__stateless7aSet)
327         {
328             // stateless has no pre constraints
329             stateless7a = handleIsStateless();
330             // stateless has no post constraints
331             this.__stateless7a = stateless7a;
332             if (isMetafacadePropertyCachingEnabled())
333             {
334                 this.__stateless7aSet = true;
335             }
336         }
337         return stateless7a;
338     }
339 
340    /**
341     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getType()
342     * @return String
343     */
344     protected abstract String handleGetType();
345 
346     private String __type8a;
347     private boolean __type8aSet = false;
348 
349     /**
350      * The name of the type of this Session EJB.
351      * @return (String)handleGetType()
352      */
353     public final String getType()
354     {
355         String type8a = this.__type8a;
356         if (!this.__type8aSet)
357         {
358             // type has no pre constraints
359             type8a = handleGetType();
360             // type has no post constraints
361             this.__type8a = type8a;
362             if (isMetafacadePropertyCachingEnabled())
363             {
364                 this.__type8aSet = true;
365             }
366         }
367         return type8a;
368     }
369 
370    /**
371     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getViewType()
372     * @return String
373     */
374     protected abstract String handleGetViewType();
375 
376     private String __viewType9a;
377     private boolean __viewType9aSet = false;
378 
379     /**
380      * A string indicating whether the Bean is a local or remotely accessable bean.
381      * @return (String)handleGetViewType()
382      */
383     public final String getViewType()
384     {
385         String viewType9a = this.__viewType9a;
386         if (!this.__viewType9aSet)
387         {
388             // viewType has no pre constraints
389             viewType9a = handleGetViewType();
390             // viewType has no post constraints
391             this.__viewType9a = viewType9a;
392             if (isMetafacadePropertyCachingEnabled())
393             {
394                 this.__viewType9aSet = true;
395             }
396         }
397         return viewType9a;
398     }
399 
400    /**
401     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getHomeInterfaceName()
402     * @return String
403     */
404     protected abstract String handleGetHomeInterfaceName();
405 
406     private String __homeInterfaceName10a;
407     private boolean __homeInterfaceName10aSet = false;
408 
409     /**
410      * A String representing the name of a home interface for this entity EJB.
411      * @return (String)handleGetHomeInterfaceName()
412      */
413     public final String getHomeInterfaceName()
414     {
415         String homeInterfaceName10a = this.__homeInterfaceName10a;
416         if (!this.__homeInterfaceName10aSet)
417         {
418             // homeInterfaceName has no pre constraints
419             homeInterfaceName10a = handleGetHomeInterfaceName();
420             // homeInterfaceName has no post constraints
421             this.__homeInterfaceName10a = homeInterfaceName10a;
422             if (isMetafacadePropertyCachingEnabled())
423             {
424                 this.__homeInterfaceName10aSet = true;
425             }
426         }
427         return homeInterfaceName10a;
428     }
429 
430    /**
431     * @see org.andromda.cartridges.ejb.metafacades.EJBSessionFacade#getTransactionType()
432     * @return String
433     */
434     protected abstract String handleGetTransactionType();
435 
436     private String __transactionType11a;
437     private boolean __transactionType11aSet = false;
438 
439     /**
440      * Gets the transaction type for this service (i.e. REQUIRED, etc)
441      * @return (String)handleGetTransactionType()
442      */
443     public final String getTransactionType()
444     {
445         String transactionType11a = this.__transactionType11a;
446         if (!this.__transactionType11aSet)
447         {
448             // transactionType has no pre constraints
449             transactionType11a = handleGetTransactionType();
450             // transactionType has no post constraints
451             this.__transactionType11a = transactionType11a;
452             if (isMetafacadePropertyCachingEnabled())
453             {
454                 this.__transactionType11aSet = true;
455             }
456         }
457         return transactionType11a;
458     }
459 
460     // ---------------- business methods ----------------------
461 
462     /**
463      * Method to be implemented in descendants
464      * Gets create methods for this session EJB.  If 'follow' is set to true, it will follow the
465      * inheritance hierarchy and retrieve those defined on any super types.
466      * @param follow
467      * @return Collection
468      */
469     protected abstract Collection handleGetCreateMethods(boolean follow);
470 
471     /**
472      * Gets create methods for this session EJB.  If 'follow' is set to true, it will follow the
473      * inheritance hierarchy and retrieve those defined on any super types.
474      * @param follow boolean
475      * If set to true, then all create methods from the super type will also be included.
476      * @return handleGetCreateMethods(follow)
477      */
478     public Collection getCreateMethods(boolean follow)
479     {
480         // getCreateMethods has no pre constraints
481         Collection returnValue = handleGetCreateMethods(follow);
482         // getCreateMethods has no post constraints
483         return returnValue;
484     }
485 
486     /**
487      * Method to be implemented in descendants
488      * Gets all env-entries for the specified session EJB. Env-entries are stored as static
489      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
490      * inheritance hierachy will be followed and we'll retrieve all env-entries from any super types
491      * as well.
492      * @param follow
493      * @return Collection
494      */
495     protected abstract Collection handleGetEnvironmentEntries(boolean follow);
496 
497     /**
498      * Gets all env-entries for the specified session EJB. Env-entries are stored as static
499      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
500      * inheritance hierachy will be followed and we'll retrieve all env-entries from any super types
501      * as well.
502      * @param follow boolean
503      * If true, then the inheritance hierachy will be followed and we'll retrieve all env-entries
504      * from any super types as well.
505      * @return handleGetEnvironmentEntries(follow)
506      */
507     public Collection getEnvironmentEntries(boolean follow)
508     {
509         // getEnvironmentEntries has no pre constraints
510         Collection returnValue = handleGetEnvironmentEntries(follow);
511         // getEnvironmentEntries has no post constraints
512         return returnValue;
513     }
514 
515     /**
516      * Method to be implemented in descendants
517      * Gets all constants for this session EJB. Constants are defined as static read-only attributes
518      * which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the inheritance
519      * hierachy will be followed and we'll retrieve all constants from any super types as well.
520      * @param follow
521      * @return Collection
522      */
523     protected abstract Collection handleGetConstants(boolean follow);
524 
525     /**
526      * Gets all constants for this session EJB. Constants are defined as static read-only attributes
527      * which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the inheritance
528      * hierachy will be followed and we'll retrieve all constants from any super types as well.
529      * @param follow boolean
530      * If true, then the inheritance hierachy will be followed and we'll retrieve all constants from
531      * any super types as well.
532      * @return handleGetConstants(follow)
533      */
534     public Collection getConstants(boolean follow)
535     {
536         // getConstants has no pre constraints
537         Collection returnValue = handleGetConstants(follow);
538         // getConstants has no post constraints
539         return returnValue;
540     }
541 
542     /**
543      * @return true
544      * @see Service
545      */
546     public boolean isServiceMetaType()
547     {
548         return true;
549     }
550 
551     /**
552      * @return true
553      * @see ClassifierFacade
554      */
555     public boolean isClassifierFacadeMetaType()
556     {
557         return true;
558     }
559 
560     /**
561      * @return true
562      * @see GeneralizableElementFacade
563      */
564     public boolean isGeneralizableElementFacadeMetaType()
565     {
566         return true;
567     }
568 
569     /**
570      * @return true
571      * @see ModelElementFacade
572      */
573     public boolean isModelElementFacadeMetaType()
574     {
575         return true;
576     }
577 
578     // ----------- delegates to Service ------------
579     /**
580      * Return the attribute which name matches the parameter
581      * @see ClassifierFacade#findAttribute(String name)
582      */
583     public AttributeFacade findAttribute(String name)
584     {
585         return this.getSuperService().findAttribute(name);
586     }
587 
588     /**
589      * Those abstraction dependencies for which this classifier is the client.
590      * @see ClassifierFacade#getAbstractions()
591      */
592     public Collection<ClassifierFacade> getAbstractions()
593     {
594         return this.getSuperService().getAbstractions();
595     }
596 
597     /**
598      * Lists all classes associated to this one and any ancestor classes (through generalization).
599      * There will be no duplicates. The order of the elements is predictable.
600      * @see ClassifierFacade#getAllAssociatedClasses()
601      */
602     public Collection<ClassifierFacade> getAllAssociatedClasses()
603     {
604         return this.getSuperService().getAllAssociatedClasses();
605     }
606 
607     /**
608      * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
609      * any attributes and navigable connecting association ends.
610      * @see ClassifierFacade#getAllProperties()
611      */
612     public Collection<ModelElementFacade> getAllProperties()
613     {
614         return this.getSuperService().getAllProperties();
615     }
616 
617     /**
618      * A collection containing all required and/or read-only 'properties' of the classifier and its
619      * ancestors. Properties are any attributes and navigable connecting association ends.
620      * @see ClassifierFacade#getAllRequiredConstructorParameters()
621      */
622     public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
623     {
624         return this.getSuperService().getAllRequiredConstructorParameters();
625     }
626 
627     /**
628      * Gets the array type for this classifier.  If this classifier already represents an array, it
629      * just returns itself.
630      * @see ClassifierFacade#getArray()
631      */
632     public ClassifierFacade getArray()
633     {
634         return this.getSuperService().getArray();
635     }
636 
637     /**
638      * The name of the classifier as an array.
639      * @see ClassifierFacade#getArrayName()
640      */
641     public String getArrayName()
642     {
643         return this.getSuperService().getArrayName();
644     }
645 
646     /**
647      * Lists the classes associated to this one, there is no repitition of classes. The order of the
648      * elements is predictable.
649      * @see ClassifierFacade#getAssociatedClasses()
650      */
651     public Collection<ClassifierFacade> getAssociatedClasses()
652     {
653         return this.getSuperService().getAssociatedClasses();
654     }
655 
656     /**
657      * Gets the association ends belonging to a classifier.
658      * @see ClassifierFacade#getAssociationEnds()
659      */
660     public List<AssociationEndFacade> getAssociationEnds()
661     {
662         return this.getSuperService().getAssociationEnds();
663     }
664 
665     /**
666      * Gets the attributes that belong to the classifier.
667      * @see ClassifierFacade#getAttributes()
668      */
669     public List<AttributeFacade> getAttributes()
670     {
671         return this.getSuperService().getAttributes();
672     }
673 
674     /**
675      * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
676      * hierarchy and gets the attributes from the super classes as well.
677      * @see ClassifierFacade#getAttributes(boolean follow)
678      */
679     public List<AttributeFacade> getAttributes(boolean follow)
680     {
681         return this.getSuperService().getAttributes(follow);
682     }
683 
684     /**
685      * The fully qualified name of the classifier as an array.
686      * @see ClassifierFacade#getFullyQualifiedArrayName()
687      */
688     public String getFullyQualifiedArrayName()
689     {
690         return this.getSuperService().getFullyQualifiedArrayName();
691     }
692 
693     /**
694      * Returns all those operations that could be implemented at this classifier's level. This means
695      * the operations owned by this classifier as well as any realized interface's operations
696      * (recursively) in case this classifier itself is not already an interface, or generalized when
697      * this classifier is an interface.
698      * @see ClassifierFacade#getImplementationOperations()
699      */
700     public Collection<OperationFacade> getImplementationOperations()
701     {
702         return this.getSuperService().getImplementationOperations();
703     }
704 
705     /**
706      * A comma separated list of the fully qualified names of all implemented interfaces.
707      * @see ClassifierFacade#getImplementedInterfaceList()
708      */
709     public String getImplementedInterfaceList()
710     {
711         return this.getSuperService().getImplementedInterfaceList();
712     }
713 
714     /**
715      * Those attributes that are scoped to an instance of this class.
716      * @see ClassifierFacade#getInstanceAttributes()
717      */
718     public Collection<AttributeFacade> getInstanceAttributes()
719     {
720         return this.getSuperService().getInstanceAttributes();
721     }
722 
723     /**
724      * Those operations that are scoped to an instance of this class.
725      * @see ClassifierFacade#getInstanceOperations()
726      */
727     public List<OperationFacade> getInstanceOperations()
728     {
729         return this.getSuperService().getInstanceOperations();
730     }
731 
732     /**
733      * Those interfaces that are abstractions of this classifier, this basically means this
734      * classifier realizes them.
735      * @see ClassifierFacade#getInterfaceAbstractions()
736      */
737     public Collection<ClassifierFacade> getInterfaceAbstractions()
738     {
739         return this.getSuperService().getInterfaceAbstractions();
740     }
741 
742     /**
743      * A String representing a new Constructor declaration for this classifier type to be used in a
744      * Java environment.
745      * @see ClassifierFacade#getJavaNewString()
746      */
747     public String getJavaNewString()
748     {
749         return this.getSuperService().getJavaNewString();
750     }
751 
752     /**
753      * A String representing the null-value for this classifier type to be used in a Java
754      * environment.
755      * @see ClassifierFacade#getJavaNullString()
756      */
757     public String getJavaNullString()
758     {
759         return this.getSuperService().getJavaNullString();
760     }
761 
762     /**
763      * The other ends of this classifier's association ends which are navigable.
764      * @see ClassifierFacade#getNavigableConnectingEnds()
765      */
766     public Collection<AssociationEndFacade> getNavigableConnectingEnds()
767     {
768         return this.getSuperService().getNavigableConnectingEnds();
769     }
770 
771     /**
772      * Get the other ends of this classifier's association ends which are navigable and if 'follow'
773      * is true goes up the inheritance hierarchy and gets the super association ends as well.
774      * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
775      */
776     public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
777     {
778         return this.getSuperService().getNavigableConnectingEnds(follow);
779     }
780 
781     /**
782      * Assuming that the classifier is an array, this will return the non array type of the
783      * classifier from
784      * the model.  If the classifier is NOT an array, it will just return itself.
785      * @see ClassifierFacade#getNonArray()
786      */
787     public ClassifierFacade getNonArray()
788     {
789         return this.getSuperService().getNonArray();
790     }
791 
792     /**
793      * The attributes from this classifier in the form of an operation call (this example would be
794      * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
795      * classifier, the result would be an empty '()'.
796      * @see ClassifierFacade#getOperationCallFromAttributes()
797      */
798     public String getOperationCallFromAttributes()
799     {
800         return this.getSuperService().getOperationCallFromAttributes();
801     }
802 
803     /**
804      * The operations owned by this classifier.
805      * @see ClassifierFacade#getOperations()
806      */
807     public List<OperationFacade> getOperations()
808     {
809         return this.getSuperService().getOperations();
810     }
811 
812     /**
813      * A collection containing all 'properties' of the classifier.  Properties are any attributes
814      * and navigable connecting association ends.
815      * @see ClassifierFacade#getProperties()
816      */
817     public List<ModelElementFacade> getProperties()
818     {
819         return this.getSuperService().getProperties();
820     }
821 
822     /**
823      * Gets all properties (attributes and navigable association ends) for the classifier and if
824      * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
825      * classes as well.
826      * @see ClassifierFacade#getProperties(boolean follow)
827      */
828     public List getProperties(boolean follow)
829     {
830         return this.getSuperService().getProperties(follow);
831     }
832 
833     /**
834      * A collection containing all required and/or read-only 'properties' of the classifier. 
835      * Properties are any attributes and navigable connecting association ends.
836      * @see ClassifierFacade#getRequiredConstructorParameters()
837      */
838     public Collection<ModelElementFacade> getRequiredConstructorParameters()
839     {
840         return this.getSuperService().getRequiredConstructorParameters();
841     }
842 
843     /**
844      * Returns the serial version UID of the underlying model element.
845      * @see ClassifierFacade#getSerialVersionUID()
846      */
847     public long getSerialVersionUID()
848     {
849         return this.getSuperService().getSerialVersionUID();
850     }
851 
852     /**
853      * Those attributes that are scoped to the definition of this class.
854      * @see ClassifierFacade#getStaticAttributes()
855      */
856     public Collection<AttributeFacade> getStaticAttributes()
857     {
858         return this.getSuperService().getStaticAttributes();
859     }
860 
861     /**
862      * Those operations that are scoped to the definition of this class.
863      * @see ClassifierFacade#getStaticOperations()
864      */
865     public List<OperationFacade> getStaticOperations()
866     {
867         return this.getSuperService().getStaticOperations();
868     }
869 
870     /**
871      * This class' superclass, returns the generalization if it is a ClassifierFacade, null
872      * otherwise.
873      * @see ClassifierFacade#getSuperClass()
874      */
875     public ClassifierFacade getSuperClass()
876     {
877         return this.getSuperService().getSuperClass();
878     }
879 
880     /**
881      * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
882      * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
883      * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
884      * 'wrapperMappingsUri', this property must point to the location of the mappings file which
885      * maps the primitives to wrapper types.
886      * @see ClassifierFacade#getWrapperName()
887      */
888     public String getWrapperName()
889     {
890         return this.getSuperService().getWrapperName();
891     }
892 
893     /**
894      * Indicates if this classifier is 'abstract'.
895      * @see ClassifierFacade#isAbstract()
896      */
897     public boolean isAbstract()
898     {
899         return this.getSuperService().isAbstract();
900     }
901 
902     /**
903      * True if this classifier represents an array type. False otherwise.
904      * @see ClassifierFacade#isArrayType()
905      */
906     public boolean isArrayType()
907     {
908         return this.getSuperService().isArrayType();
909     }
910 
911     /**
912      * True if the ClassifierFacade is an AssociationClass.
913      * @see ClassifierFacade#isAssociationClass()
914      */
915     public boolean isAssociationClass()
916     {
917         return this.getSuperService().isAssociationClass();
918     }
919 
920     /**
921      * Returns true if this type represents a Blob type.
922      * @see ClassifierFacade#isBlobType()
923      */
924     public boolean isBlobType()
925     {
926         return this.getSuperService().isBlobType();
927     }
928 
929     /**
930      * Indicates if this type represents a boolean type or not.
931      * @see ClassifierFacade#isBooleanType()
932      */
933     public boolean isBooleanType()
934     {
935         return this.getSuperService().isBooleanType();
936     }
937 
938     /**
939      * Indicates if this type represents a char, Character, or java.lang.Character type or not.
940      * @see ClassifierFacade#isCharacterType()
941      */
942     public boolean isCharacterType()
943     {
944         return this.getSuperService().isCharacterType();
945     }
946 
947     /**
948      * Returns true if this type represents a Clob type.
949      * @see ClassifierFacade#isClobType()
950      */
951     public boolean isClobType()
952     {
953         return this.getSuperService().isClobType();
954     }
955 
956     /**
957      * True if this classifier represents a collection type. False otherwise.
958      * @see ClassifierFacade#isCollectionType()
959      */
960     public boolean isCollectionType()
961     {
962         return this.getSuperService().isCollectionType();
963     }
964 
965     /**
966      * True/false depending on whether or not this classifier represents a datatype. A data type is
967      * a type whose instances are identified only by their value. A data type may contain attributes
968      * to support the modeling of structured data types.
969      * @see ClassifierFacade#isDataType()
970      */
971     public boolean isDataType()
972     {
973         return this.getSuperService().isDataType();
974     }
975 
976     /**
977      * True when this classifier is a date type.
978      * @see ClassifierFacade#isDateType()
979      */
980     public boolean isDateType()
981     {
982         return this.getSuperService().isDateType();
983     }
984 
985     /**
986      * Indicates if this type represents a Double type or not.
987      * @see ClassifierFacade#isDoubleType()
988      */
989     public boolean isDoubleType()
990     {
991         return this.getSuperService().isDoubleType();
992     }
993 
994     /**
995      * Indicates whether or not this classifier represents an "EmbeddedValue'.
996      * @see ClassifierFacade#isEmbeddedValue()
997      */
998     public boolean isEmbeddedValue()
999     {
1000         return this.getSuperService().isEmbeddedValue();
1001     }
1002 
1003     /**
1004      * True if this classifier is in fact marked as an enumeration.
1005      * @see ClassifierFacade#isEnumeration()
1006      */
1007     public boolean isEnumeration()
1008     {
1009         return this.getSuperService().isEnumeration();
1010     }
1011 
1012     /**
1013      * Returns true if this type represents a 'file' type.
1014      * @see ClassifierFacade#isFileType()
1015      */
1016     public boolean isFileType()
1017     {
1018         return this.getSuperService().isFileType();
1019     }
1020 
1021     /**
1022      * Indicates if this type represents a Float type or not.
1023      * @see ClassifierFacade#isFloatType()
1024      */
1025     public boolean isFloatType()
1026     {
1027         return this.getSuperService().isFloatType();
1028     }
1029 
1030     /**
1031      * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1032      * @see ClassifierFacade#isIntegerType()
1033      */
1034     public boolean isIntegerType()
1035     {
1036         return this.getSuperService().isIntegerType();
1037     }
1038 
1039     /**
1040      * True/false depending on whether or not this Classifier represents an interface.
1041      * @see ClassifierFacade#isInterface()
1042      */
1043     public boolean isInterface()
1044     {
1045         return this.getSuperService().isInterface();
1046     }
1047 
1048     /**
1049      * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1050      * @see ClassifierFacade#isLeaf()
1051      */
1052     public boolean isLeaf()
1053     {
1054         return this.getSuperService().isLeaf();
1055     }
1056 
1057     /**
1058      * True if this classifier represents a list type. False otherwise.
1059      * @see ClassifierFacade#isListType()
1060      */
1061     public boolean isListType()
1062     {
1063         return this.getSuperService().isListType();
1064     }
1065 
1066     /**
1067      * Indicates if this type represents a Long type or not.
1068      * @see ClassifierFacade#isLongType()
1069      */
1070     public boolean isLongType()
1071     {
1072         return this.getSuperService().isLongType();
1073     }
1074 
1075     /**
1076      * Indicates whether or not this classifier represents a Map type.
1077      * @see ClassifierFacade#isMapType()
1078      */
1079     public boolean isMapType()
1080     {
1081         return this.getSuperService().isMapType();
1082     }
1083 
1084     /**
1085      * Indicates whether or not this classifier represents a primitive type.
1086      * @see ClassifierFacade#isPrimitive()
1087      */
1088     public boolean isPrimitive()
1089     {
1090         return this.getSuperService().isPrimitive();
1091     }
1092 
1093     /**
1094      * True if this classifier represents a set type. False otherwise.
1095      * @see ClassifierFacade#isSetType()
1096      */
1097     public boolean isSetType()
1098     {
1099         return this.getSuperService().isSetType();
1100     }
1101 
1102     /**
1103      * Indicates whether or not this classifier represents a string type.
1104      * @see ClassifierFacade#isStringType()
1105      */
1106     public boolean isStringType()
1107     {
1108         return this.getSuperService().isStringType();
1109     }
1110 
1111     /**
1112      * Indicates whether or not this classifier represents a time type.
1113      * @see ClassifierFacade#isTimeType()
1114      */
1115     public boolean isTimeType()
1116     {
1117         return this.getSuperService().isTimeType();
1118     }
1119 
1120     /**
1121      * Returns true if this type is a wrapped primitive type.
1122      * @see ClassifierFacade#isWrappedPrimitive()
1123      */
1124     public boolean isWrappedPrimitive()
1125     {
1126         return this.getSuperService().isWrappedPrimitive();
1127     }
1128 
1129     /**
1130      * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
1131      * to true.
1132      * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
1133      */
1134     public Object findTaggedValue(String tagName, boolean follow)
1135     {
1136         return this.getSuperService().findTaggedValue(tagName, follow);
1137     }
1138 
1139     /**
1140      * All generalizations for this generalizable element, goes up the inheritance tree.
1141      * @see GeneralizableElementFacade#getAllGeneralizations()
1142      */
1143     public Collection<GeneralizableElementFacade> getAllGeneralizations()
1144     {
1145         return this.getSuperService().getAllGeneralizations();
1146     }
1147 
1148     /**
1149      * All specializations (travels down the inheritance hierarchy).
1150      * @see GeneralizableElementFacade#getAllSpecializations()
1151      */
1152     public Collection<GeneralizableElementFacade> getAllSpecializations()
1153     {
1154         return this.getSuperService().getAllSpecializations();
1155     }
1156 
1157     /**
1158      * Gets the direct generalization for this generalizable element.
1159      * @see GeneralizableElementFacade#getGeneralization()
1160      */
1161     public GeneralizableElementFacade getGeneralization()
1162     {
1163         return this.getSuperService().getGeneralization();
1164     }
1165 
1166     /**
1167      * Gets the actual links that this generalization element is part of (it plays either the
1168      * specialization or generalization).
1169      * @see GeneralizableElementFacade#getGeneralizationLinks()
1170      */
1171     public Collection<GeneralizationFacade> getGeneralizationLinks()
1172     {
1173         return this.getSuperService().getGeneralizationLinks();
1174     }
1175 
1176     /**
1177      * A comma separated list of the fully qualified names of all generalizations.
1178      * @see GeneralizableElementFacade#getGeneralizationList()
1179      */
1180     public String getGeneralizationList()
1181     {
1182         return this.getSuperService().getGeneralizationList();
1183     }
1184 
1185     /**
1186      * The element found when you recursively follow the generalization path up to the root. If an
1187      * element has no generalization itself will be considered the root.
1188      * @see GeneralizableElementFacade#getGeneralizationRoot()
1189      */
1190     public GeneralizableElementFacade getGeneralizationRoot()
1191     {
1192         return this.getSuperService().getGeneralizationRoot();
1193     }
1194 
1195     /**
1196      * Return all generalizations (ancestors) from this generalizable element.
1197      * @see GeneralizableElementFacade#getGeneralizations()
1198      */
1199     public Collection<GeneralizableElementFacade> getGeneralizations()
1200     {
1201         return this.getSuperService().getGeneralizations();
1202     }
1203 
1204     /**
1205      * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
1206      * @see GeneralizableElementFacade#getSpecializations()
1207      */
1208     public Collection<GeneralizableElementFacade> getSpecializations()
1209     {
1210         return this.getSuperService().getSpecializations();
1211     }
1212 
1213     /**
1214      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1215      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1216      */
1217     public void copyTaggedValues(ModelElementFacade element)
1218     {
1219         this.getSuperService().copyTaggedValues(element);
1220     }
1221 
1222     /**
1223      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1224      * one found will be returned.
1225      * @see ModelElementFacade#findTaggedValue(String tagName)
1226      */
1227     public Object findTaggedValue(String tagName)
1228     {
1229         return this.getSuperService().findTaggedValue(tagName);
1230     }
1231 
1232     /**
1233      * Returns all the values for the tagged value with the specified name. The returned collection
1234      * will contains only String instances, or will be empty. Never null.
1235      * @see ModelElementFacade#findTaggedValues(String tagName)
1236      */
1237     public Collection<Object> findTaggedValues(String tagName)
1238     {
1239         return this.getSuperService().findTaggedValues(tagName);
1240     }
1241 
1242     /**
1243      * Returns the fully qualified name of the model element. The fully qualified name includes
1244      * complete package qualified name of the underlying model element. The templates parameter will
1245      * be replaced by the correct one given the binding relation of the parameter to this element.
1246      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1247      */
1248     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1249     {
1250         return this.getSuperService().getBindedFullyQualifiedName(bindedElement);
1251     }
1252 
1253     /**
1254      * Gets all constraints belonging to the model element.
1255      * @see ModelElementFacade#getConstraints()
1256      */
1257     public Collection<ConstraintFacade> getConstraints()
1258     {
1259         return this.getSuperService().getConstraints();
1260     }
1261 
1262     /**
1263      * Returns the constraints of the argument kind that have been placed onto this model. Typical
1264      * kinds are "inv", "pre" and "post". Other kinds are possible.
1265      * @see ModelElementFacade#getConstraints(String kind)
1266      */
1267     public Collection<ConstraintFacade> getConstraints(String kind)
1268     {
1269         return this.getSuperService().getConstraints(kind);
1270     }
1271 
1272     /**
1273      * Gets the documentation for the model element, The indent argument is prefixed to each line.
1274      * By default this method wraps lines after 64 characters.
1275      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1276      * @see ModelElementFacade#getDocumentation(String indent)
1277      */
1278     public String getDocumentation(String indent)
1279     {
1280         return this.getSuperService().getDocumentation(indent);
1281     }
1282 
1283     /**
1284      * This method returns the documentation for this model element, with the lines wrapped after
1285      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1286      * required. By default paragraphs are returned as HTML.
1287      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1288      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1289      */
1290     public String getDocumentation(String indent, int lineLength)
1291     {
1292         return this.getSuperService().getDocumentation(indent, lineLength);
1293     }
1294 
1295     /**
1296      * This method returns the documentation for this model element, with the lines wrapped after
1297      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1298      * required. HTML style determines if HTML Escaping is applied.
1299      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1300      */
1301     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1302     {
1303         return this.getSuperService().getDocumentation(indent, lineLength, htmlStyle);
1304     }
1305 
1306     /**
1307      * The fully qualified name of this model element.
1308      * @see ModelElementFacade#getFullyQualifiedName()
1309      */
1310     public String getFullyQualifiedName()
1311     {
1312         return this.getSuperService().getFullyQualifiedName();
1313     }
1314 
1315     /**
1316      * Returns the fully qualified name of the model element. The fully qualified name includes
1317      * complete package qualified name of the underlying model element.  If modelName is true, then
1318      * the original name of the model element (the name contained within the model) will be the name
1319      * returned, otherwise a name from a language mapping will be returned.
1320      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1321      */
1322     public String getFullyQualifiedName(boolean modelName)
1323     {
1324         return this.getSuperService().getFullyQualifiedName(modelName);
1325     }
1326 
1327     /**
1328      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1329      * '/'.
1330      * @see ModelElementFacade#getFullyQualifiedNamePath()
1331      */
1332     public String getFullyQualifiedNamePath()
1333     {
1334         return this.getSuperService().getFullyQualifiedNamePath();
1335     }
1336 
1337     /**
1338      * Gets the unique identifier of the underlying model element.
1339      * @see ModelElementFacade#getId()
1340      */
1341     public String getId()
1342     {
1343         return this.getSuperService().getId();
1344     }
1345 
1346     /**
1347      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1348      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1349      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1350      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1351      * JDK5 compiler level.
1352      * @see ModelElementFacade#getKeywords()
1353      */
1354     public Collection<String> getKeywords()
1355     {
1356         return this.getSuperService().getKeywords();
1357     }
1358 
1359     /**
1360      * UML2: Retrieves a localized label for this named element.
1361      * @see ModelElementFacade#getLabel()
1362      */
1363     public String getLabel()
1364     {
1365         return this.getSuperService().getLabel();
1366     }
1367 
1368     /**
1369      * The language mappings that have been set for this model element.
1370      * @see ModelElementFacade#getLanguageMappings()
1371      */
1372     public TypeMappings getLanguageMappings()
1373     {
1374         return this.getSuperService().getLanguageMappings();
1375     }
1376 
1377     /**
1378      * Return the model containing this model element (multiple models may be loaded and processed
1379      * at the same time).
1380      * @see ModelElementFacade#getModel()
1381      */
1382     public ModelFacade getModel()
1383     {
1384         return this.getSuperService().getModel();
1385     }
1386 
1387     /**
1388      * The name of the model element.
1389      * @see ModelElementFacade#getName()
1390      */
1391     public String getName()
1392     {
1393         return this.getSuperService().getName();
1394     }
1395 
1396     /**
1397      * Gets the package to which this model element belongs.
1398      * @see ModelElementFacade#getPackage()
1399      */
1400     public ModelElementFacade getPackage()
1401     {
1402         return this.getSuperService().getPackage();
1403     }
1404 
1405     /**
1406      * The name of this model element's package.
1407      * @see ModelElementFacade#getPackageName()
1408      */
1409     public String getPackageName()
1410     {
1411         return this.getSuperService().getPackageName();
1412     }
1413 
1414     /**
1415      * Gets the package name (optionally providing the ability to retrieve the model name and not
1416      * the mapped name).
1417      * @see ModelElementFacade#getPackageName(boolean modelName)
1418      */
1419     public String getPackageName(boolean modelName)
1420     {
1421         return this.getSuperService().getPackageName(modelName);
1422     }
1423 
1424     /**
1425      * Returns the package as a path, the returned value always starts with out a slash '/'.
1426      * @see ModelElementFacade#getPackagePath()
1427      */
1428     public String getPackagePath()
1429     {
1430         return this.getSuperService().getPackagePath();
1431     }
1432 
1433     /**
1434      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1435      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1436      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1437      * the name of the NamedElement itself.
1438      * @see ModelElementFacade#getQualifiedName()
1439      */
1440     public String getQualifiedName()
1441     {
1442         return this.getSuperService().getQualifiedName();
1443     }
1444 
1445     /**
1446      * Gets the root package for the model element.
1447      * @see ModelElementFacade#getRootPackage()
1448      */
1449     public PackageFacade getRootPackage()
1450     {
1451         return this.getSuperService().getRootPackage();
1452     }
1453 
1454     /**
1455      * Gets the dependencies for which this model element is the source.
1456      * @see ModelElementFacade#getSourceDependencies()
1457      */
1458     public Collection<DependencyFacade> getSourceDependencies()
1459     {
1460         return this.getSuperService().getSourceDependencies();
1461     }
1462 
1463     /**
1464      * If this model element is the context of an activity graph, this represents that activity
1465      * graph.
1466      * @see ModelElementFacade#getStateMachineContext()
1467      */
1468     public StateMachineFacade getStateMachineContext()
1469     {
1470         return this.getSuperService().getStateMachineContext();
1471     }
1472 
1473     /**
1474      * The collection of ALL stereotype names for this model element.
1475      * @see ModelElementFacade#getStereotypeNames()
1476      */
1477     public Collection<String> getStereotypeNames()
1478     {
1479         return this.getSuperService().getStereotypeNames();
1480     }
1481 
1482     /**
1483      * Gets all stereotypes for this model element.
1484      * @see ModelElementFacade#getStereotypes()
1485      */
1486     public Collection<StereotypeFacade> getStereotypes()
1487     {
1488         return this.getSuperService().getStereotypes();
1489     }
1490 
1491     /**
1492      * Return the TaggedValues associated with this model element, under all stereotypes.
1493      * @see ModelElementFacade#getTaggedValues()
1494      */
1495     public Collection<TaggedValueFacade> getTaggedValues()
1496     {
1497         return this.getSuperService().getTaggedValues();
1498     }
1499 
1500     /**
1501      * Gets the dependencies for which this model element is the target.
1502      * @see ModelElementFacade#getTargetDependencies()
1503      */
1504     public Collection<DependencyFacade> getTargetDependencies()
1505     {
1506         return this.getSuperService().getTargetDependencies();
1507     }
1508 
1509     /**
1510      * Get the template parameter for this model element having the parameterName
1511      * @see ModelElementFacade#getTemplateParameter(String parameterName)
1512      */
1513     public Object getTemplateParameter(String parameterName)
1514     {
1515         return this.getSuperService().getTemplateParameter(parameterName);
1516     }
1517 
1518     /**
1519      * Get the template parameters for this model element
1520      * @see ModelElementFacade#getTemplateParameters()
1521      */
1522     public Collection<TemplateParameterFacade> getTemplateParameters()
1523     {
1524         return this.getSuperService().getTemplateParameters();
1525     }
1526 
1527     /**
1528      * The visibility (i.e. public, private, protected or package) of the model element, will
1529      * attempt a lookup for these values in the language mappings (if any).
1530      * @see ModelElementFacade#getVisibility()
1531      */
1532     public String getVisibility()
1533     {
1534         return this.getSuperService().getVisibility();
1535     }
1536 
1537     /**
1538      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1539      * is taken into account when searching for the stereotype), false otherwise.
1540      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1541      */
1542     public boolean hasExactStereotype(String stereotypeName)
1543     {
1544         return this.getSuperService().hasExactStereotype(stereotypeName);
1545     }
1546 
1547     /**
1548      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1549      * pipe, semicolon, or << >>
1550      * @see ModelElementFacade#hasKeyword(String keywordName)
1551      */
1552     public boolean hasKeyword(String keywordName)
1553     {
1554         return this.getSuperService().hasKeyword(keywordName);
1555     }
1556 
1557     /**
1558      * Returns true if the model element has the specified stereotype.  If the stereotype itself
1559      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1560      * one of the stereotype's ancestors has a matching name this method will return true, false
1561      * otherwise.
1562      * For example, if we have a certain stereotype called <<exception>> and a model element has a
1563      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1564      * method with 'stereotypeName' defined as 'exception' the method would return true since
1565      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1566      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1567      * @see ModelElementFacade#hasStereotype(String stereotypeName)
1568      */
1569     public boolean hasStereotype(String stereotypeName)
1570     {
1571         return this.getSuperService().hasStereotype(stereotypeName);
1572     }
1573 
1574     /**
1575      * True if there are target dependencies from this element that are instances of BindingFacade.
1576      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1577      * @see ModelElementFacade#isBindingDependenciesPresent()
1578      */
1579     public boolean isBindingDependenciesPresent()
1580     {
1581         return this.getSuperService().isBindingDependenciesPresent();
1582     }
1583 
1584     /**
1585      * Indicates if any constraints are present on this model element.
1586      * @see ModelElementFacade#isConstraintsPresent()
1587      */
1588     public boolean isConstraintsPresent()
1589     {
1590         return this.getSuperService().isConstraintsPresent();
1591     }
1592 
1593     /**
1594      * Indicates if any documentation is present on this model element.
1595      * @see ModelElementFacade#isDocumentationPresent()
1596      */
1597     public boolean isDocumentationPresent()
1598     {
1599         return this.getSuperService().isDocumentationPresent();
1600     }
1601 
1602     /**
1603      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1604      * @see ModelElementFacade#isReservedWord()
1605      */
1606     public boolean isReservedWord()
1607     {
1608         return this.getSuperService().isReservedWord();
1609     }
1610 
1611     /**
1612      * True is there are template parameters on this model element. For UML2, applies to Class,
1613      * Operation, Property, and Parameter.
1614      * @see ModelElementFacade#isTemplateParametersPresent()
1615      */
1616     public boolean isTemplateParametersPresent()
1617     {
1618         return this.getSuperService().isTemplateParametersPresent();
1619     }
1620 
1621     /**
1622      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1623      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1624      * Enumerations and Interfaces, optionally applies on other model elements.
1625      * @see ModelElementFacade#isValidIdentifierName()
1626      */
1627     public boolean isValidIdentifierName()
1628     {
1629         return this.getSuperService().isValidIdentifierName();
1630     }
1631 
1632     /**
1633      * Searches for the constraint with the specified 'name' on this model element, and if found
1634      * translates it using the specified 'translation' from a translation library discovered by the
1635      * framework.
1636      * @see ModelElementFacade#translateConstraint(String name, String translation)
1637      */
1638     public String translateConstraint(String name, String translation)
1639     {
1640         return this.getSuperService().translateConstraint(name, translation);
1641     }
1642 
1643     /**
1644      * Translates all constraints belonging to this model element with the given 'translation'.
1645      * @see ModelElementFacade#translateConstraints(String translation)
1646      */
1647     public String[] translateConstraints(String translation)
1648     {
1649         return this.getSuperService().translateConstraints(translation);
1650     }
1651 
1652     /**
1653      * Translates the constraints of the specified 'kind' belonging to this model element.
1654      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1655      */
1656     public String[] translateConstraints(String kind, String translation)
1657     {
1658         return this.getSuperService().translateConstraints(kind, translation);
1659     }
1660 
1661     /**
1662      * Returns a collection of all entities this service and its ancestors have a relation to.
1663      * @see Service#getAllEntityReferences()
1664      */
1665     public Collection<DependencyFacade> getAllEntityReferences()
1666     {
1667         return this.getSuperService().getAllEntityReferences();
1668     }
1669 
1670     /**
1671      * All messaging destinations that belong to this service and all decendent services.
1672      * @see Service#getAllMessagingDestinations()
1673      */
1674     public Collection<Destination> getAllMessagingDestinations()
1675     {
1676         return this.getSuperService().getAllMessagingDestinations();
1677     }
1678 
1679     /**
1680      * All roles associated with the service, this includes both roles that have access to the
1681      * entire service, and any roles that have access to a single operation.
1682      * @see Service#getAllRoles()
1683      */
1684     public Collection<Role> getAllRoles()
1685     {
1686         return this.getSuperService().getAllRoles();
1687     }
1688 
1689     /**
1690      * Returns a collection of all services this service and its ancestors have a relation to.
1691      * @see Service#getAllServiceReferences()
1692      */
1693     public Collection<DependencyFacade> getAllServiceReferences()
1694     {
1695         return this.getSuperService().getAllServiceReferences();
1696     }
1697 
1698     /**
1699      * References to all entities to which this service has a dependency.
1700      * @see Service#getEntityReferences()
1701      */
1702     public Collection<DependencyFacade> getEntityReferences()
1703     {
1704         return this.getSuperService().getEntityReferences();
1705     }
1706 
1707     /**
1708      * All messaging destinations available to this service.
1709      * @see Service#getMessagingDestinations()
1710      */
1711     public Collection<Destination> getMessagingDestinations()
1712     {
1713         return this.getSuperService().getMessagingDestinations();
1714     }
1715 
1716     /**
1717      * The roles of the service, these are the actor's that can access this service.
1718      * @see Service#getRoles()
1719      */
1720     public Collection<Role> getRoles()
1721     {
1722         return this.getSuperService().getRoles();
1723     }
1724 
1725     /**
1726      * References to all services to which this service has a dependency.
1727      * @see Service#getServiceReferences()
1728      */
1729     public Collection<DependencyFacade> getServiceReferences()
1730     {
1731         return this.getSuperService().getServiceReferences();
1732     }
1733 
1734     /**
1735      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1736      */
1737     @Override
1738     public void initialize()
1739     {
1740         this.getSuperService().initialize();
1741     }
1742 
1743     /**
1744      * @return Object getSuperService().getValidationOwner()
1745      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1746      */
1747     @Override
1748     public Object getValidationOwner()
1749     {
1750         Object owner = this.getSuperService().getValidationOwner();
1751         return owner;
1752     }
1753 
1754     /**
1755      * @return String getSuperService().getValidationName()
1756      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1757      */
1758     @Override
1759     public String getValidationName()
1760     {
1761         String name = this.getSuperService().getValidationName();
1762         return name;
1763     }
1764 
1765     /**
1766      * @param validationMessages Collection<ModelValidationMessage>
1767      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1768      */
1769     @Override
1770     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1771     {
1772         this.getSuperService().validateInvariants(validationMessages);
1773     }
1774 
1775     /**
1776      * The property that stores the name of the metafacade.
1777      */
1778     private static final String NAME_PROPERTY = "name";
1779     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1780 
1781     /**
1782      * @see Object#toString()
1783      */
1784     @Override
1785     public String toString()
1786     {
1787         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1788         toString.append("[");
1789         try
1790         {
1791             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1792         }
1793         catch (final Throwable tryAgain)
1794         {
1795             try
1796             {
1797                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1798             }
1799             catch (final Throwable ignore)
1800             {
1801                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1802             }
1803         }
1804         toString.append("]");
1805         return toString.toString();
1806     }
1807 }