001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.ejb.metafacades;
006
007import java.util.Collection;
008import java.util.List;
009import org.andromda.core.common.Introspector;
010import org.andromda.core.metafacade.MetafacadeBase;
011import org.andromda.core.metafacade.MetafacadeFactory;
012import org.andromda.core.metafacade.ModelValidationMessage;
013import org.andromda.metafacades.uml.AssociationEndFacade;
014import org.andromda.metafacades.uml.AttributeFacade;
015import org.andromda.metafacades.uml.ClassifierFacade;
016import org.andromda.metafacades.uml.ConstraintFacade;
017import org.andromda.metafacades.uml.DependencyFacade;
018import org.andromda.metafacades.uml.Destination;
019import org.andromda.metafacades.uml.GeneralizableElementFacade;
020import org.andromda.metafacades.uml.GeneralizationFacade;
021import org.andromda.metafacades.uml.ModelElementFacade;
022import org.andromda.metafacades.uml.ModelFacade;
023import org.andromda.metafacades.uml.OperationFacade;
024import org.andromda.metafacades.uml.PackageFacade;
025import org.andromda.metafacades.uml.Role;
026import org.andromda.metafacades.uml.Service;
027import org.andromda.metafacades.uml.StateMachineFacade;
028import org.andromda.metafacades.uml.StereotypeFacade;
029import org.andromda.metafacades.uml.TaggedValueFacade;
030import org.andromda.metafacades.uml.TemplateParameterFacade;
031import org.andromda.metafacades.uml.TypeMappings;
032
033/**
034 * Represents a Session EJB.
035 * MetafacadeLogic for EJBSessionFacade
036 *
037 * @see EJBSessionFacade
038 */
039public abstract class EJBSessionFacadeLogic
040    extends MetafacadeBase
041    implements EJBSessionFacade
042{
043    /**
044     * The underlying UML object
045     * @see Object
046     */
047    protected Object metaObject;
048
049    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
050     * @param metaObjectIn
051     * @param context
052     */
053    protected EJBSessionFacadeLogic(Object metaObjectIn, String context)
054    {
055        super(metaObjectIn, getContext(context));
056        this.superService =
057           (Service)
058            MetafacadeFactory.getInstance().createFacadeImpl(
059                    "org.andromda.metafacades.uml.Service",
060                    metaObjectIn,
061                    getContext(context));
062        this.metaObject = metaObjectIn;
063    }
064
065    /**
066     * Gets the context for this metafacade logic instance.
067     * @param context String. Set to EJBSessionFacade if null
068     * @return context String
069     */
070    private static String getContext(String context)
071    {
072        if (context == null)
073        {
074            context = "org.andromda.cartridges.ejb.metafacades.EJBSessionFacade";
075        }
076        return context;
077    }
078
079    private Service superService;
080    private boolean superServiceInitialized = false;
081
082    /**
083     * Gets the Service parent instance.
084     * @return this.superService Service
085     */
086    private Service getSuperService()
087    {
088        if (!this.superServiceInitialized)
089        {
090            ((MetafacadeBase)this.superService).setMetafacadeContext(this.getMetafacadeContext());
091            this.superServiceInitialized = true;
092        }
093        return this.superService;
094    }
095
096    /** Reset context only for non-root metafacades
097     * @param context
098     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
099     */
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}