View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.ejb3.metafacades;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import org.andromda.core.common.Introspector;
10  import org.andromda.core.metafacade.MetafacadeBase;
11  import org.andromda.core.metafacade.MetafacadeFactory;
12  import org.andromda.core.metafacade.ModelValidationMessage;
13  import org.andromda.metafacades.uml.AssociationEndFacade;
14  import org.andromda.metafacades.uml.AttributeFacade;
15  import org.andromda.metafacades.uml.ClassifierFacade;
16  import org.andromda.metafacades.uml.ConstraintFacade;
17  import org.andromda.metafacades.uml.DependencyFacade;
18  import org.andromda.metafacades.uml.Destination;
19  import org.andromda.metafacades.uml.GeneralizableElementFacade;
20  import org.andromda.metafacades.uml.GeneralizationFacade;
21  import org.andromda.metafacades.uml.ModelElementFacade;
22  import org.andromda.metafacades.uml.ModelFacade;
23  import org.andromda.metafacades.uml.OperationFacade;
24  import org.andromda.metafacades.uml.PackageFacade;
25  import org.andromda.metafacades.uml.Role;
26  import org.andromda.metafacades.uml.Service;
27  import org.andromda.metafacades.uml.StateMachineFacade;
28  import org.andromda.metafacades.uml.StereotypeFacade;
29  import org.andromda.metafacades.uml.TaggedValueFacade;
30  import org.andromda.metafacades.uml.TemplateParameterFacade;
31  import org.andromda.metafacades.uml.TypeMappings;
32  
33  /**
34   * Represents a message driven EJB.
35   * MetafacadeLogic for EJB3MessageDrivenFacade
36   *
37   * @see EJB3MessageDrivenFacade
38   */
39  public abstract class EJB3MessageDrivenFacadeLogic
40      extends MetafacadeBase
41      implements EJB3MessageDrivenFacade
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 EJB3MessageDrivenFacadeLogic(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 EJB3MessageDrivenFacade if null
68       * @return context String
69       */
70      private static String getContext(String context)
71      {
72          if (context == null)
73          {
74              context = "org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade";
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 EJB3MessageDrivenFacade
117      */
118     public boolean isEJB3MessageDrivenFacadeMetaType()
119     {
120         return true;
121     }
122 
123     // --------------- attributes ---------------------
124 
125    /**
126     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getAcknowledgeMode()
127     * @return String
128     */
129     protected abstract String handleGetAcknowledgeMode();
130 
131     private String __acknowledgeMode1a;
132     private boolean __acknowledgeMode1aSet = false;
133 
134     /**
135      * Returns the acknowledge mode for this JMS message driven bean.  This is automatically handled
136      * by the container.  EJB 3.0 spec states:
137      * For container managed transaction demarcation, message acknowledgment is automatically
138      * handled as part of transaction commit.  If bean-managed transaction demarcation is used, the
139      * message receipt cannot be part of the bean-managed transaction, therefore the receipt is
140      * acknowledged by the container.  If this property is not specified, AUTO_ACKNOWLEDGE semantics
141      * is assumed.
142      * Possible values are AUTO_ACKNOWLEDGE or DUPS_OK_ACKNOWLEDGE.
143      * @return (String)handleGetAcknowledgeMode()
144      */
145     public final String getAcknowledgeMode()
146     {
147         String acknowledgeMode1a = this.__acknowledgeMode1a;
148         if (!this.__acknowledgeMode1aSet)
149         {
150             // acknowledgeMode has no pre constraints
151             acknowledgeMode1a = handleGetAcknowledgeMode();
152             // acknowledgeMode has no post constraints
153             this.__acknowledgeMode1a = acknowledgeMode1a;
154             if (isMetafacadePropertyCachingEnabled())
155             {
156                 this.__acknowledgeMode1aSet = true;
157             }
158         }
159         return acknowledgeMode1a;
160     }
161 
162    /**
163     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getDestination()
164     * @return String
165     */
166     protected abstract String handleGetDestination();
167 
168     private String __destination2a;
169     private boolean __destination2aSet = false;
170 
171     /**
172      * Returns the destination queue or topic JNDI name this message driven bean is associated with.
173      * @return (String)handleGetDestination()
174      */
175     public final String getDestination()
176     {
177         String destination2a = this.__destination2a;
178         if (!this.__destination2aSet)
179         {
180             // destination has no pre constraints
181             destination2a = handleGetDestination();
182             // destination has no post constraints
183             this.__destination2a = destination2a;
184             if (isMetafacadePropertyCachingEnabled())
185             {
186                 this.__destination2aSet = true;
187             }
188         }
189         return destination2a;
190     }
191 
192    /**
193     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getDestinationType()
194     * @return String
195     */
196     protected abstract String handleGetDestinationType();
197 
198     private String __destinationType3a;
199     private boolean __destinationType3aSet = false;
200 
201     /**
202      * Returns the destination type of the message driven bean.  Possible values are javax.jms.Queue
203      * or javax.jms.Topic.
204      * Queues ensure that messages are not missed, even if the EJB server is not running.  Same
205      * applis to durable topic subscriptions.
206      * @return (String)handleGetDestinationType()
207      */
208     public final String getDestinationType()
209     {
210         String destinationType3a = this.__destinationType3a;
211         if (!this.__destinationType3aSet)
212         {
213             // destinationType has no pre constraints
214             destinationType3a = handleGetDestinationType();
215             // destinationType has no post constraints
216             this.__destinationType3a = destinationType3a;
217             if (isMetafacadePropertyCachingEnabled())
218             {
219                 this.__destinationType3aSet = true;
220             }
221         }
222         return destinationType3a;
223     }
224 
225    /**
226     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getFullyQualifiedMessageDrivenImplementationName()
227     * @return String
228     */
229     protected abstract String handleGetFullyQualifiedMessageDrivenImplementationName();
230 
231     private String __fullyQualifiedMessageDrivenImplementationName4a;
232     private boolean __fullyQualifiedMessageDrivenImplementationName4aSet = false;
233 
234     /**
235      * Returns the fully qualified message driven bean implementation name.
236      * @return (String)handleGetFullyQualifiedMessageDrivenImplementationName()
237      */
238     public final String getFullyQualifiedMessageDrivenImplementationName()
239     {
240         String fullyQualifiedMessageDrivenImplementationName4a = this.__fullyQualifiedMessageDrivenImplementationName4a;
241         if (!this.__fullyQualifiedMessageDrivenImplementationName4aSet)
242         {
243             // fullyQualifiedMessageDrivenImplementationName has no pre constraints
244             fullyQualifiedMessageDrivenImplementationName4a = handleGetFullyQualifiedMessageDrivenImplementationName();
245             // fullyQualifiedMessageDrivenImplementationName has no post constraints
246             this.__fullyQualifiedMessageDrivenImplementationName4a = fullyQualifiedMessageDrivenImplementationName4a;
247             if (isMetafacadePropertyCachingEnabled())
248             {
249                 this.__fullyQualifiedMessageDrivenImplementationName4aSet = true;
250             }
251         }
252         return fullyQualifiedMessageDrivenImplementationName4a;
253     }
254 
255    /**
256     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getFullyQualifiedMessageDrivenListenerName()
257     * @return String
258     */
259     protected abstract String handleGetFullyQualifiedMessageDrivenListenerName();
260 
261     private String __fullyQualifiedMessageDrivenListenerName5a;
262     private boolean __fullyQualifiedMessageDrivenListenerName5aSet = false;
263 
264     /**
265      * Returns the fully qualified message driven bean listener name.
266      * @return (String)handleGetFullyQualifiedMessageDrivenListenerName()
267      */
268     public final String getFullyQualifiedMessageDrivenListenerName()
269     {
270         String fullyQualifiedMessageDrivenListenerName5a = this.__fullyQualifiedMessageDrivenListenerName5a;
271         if (!this.__fullyQualifiedMessageDrivenListenerName5aSet)
272         {
273             // fullyQualifiedMessageDrivenListenerName has no pre constraints
274             fullyQualifiedMessageDrivenListenerName5a = handleGetFullyQualifiedMessageDrivenListenerName();
275             // fullyQualifiedMessageDrivenListenerName has no post constraints
276             this.__fullyQualifiedMessageDrivenListenerName5a = fullyQualifiedMessageDrivenListenerName5a;
277             if (isMetafacadePropertyCachingEnabled())
278             {
279                 this.__fullyQualifiedMessageDrivenListenerName5aSet = true;
280             }
281         }
282         return fullyQualifiedMessageDrivenListenerName5a;
283     }
284 
285    /**
286     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getFullyQualifiedMessageDrivenName()
287     * @return String
288     */
289     protected abstract String handleGetFullyQualifiedMessageDrivenName();
290 
291     private String __fullyQualifiedMessageDrivenName6a;
292     private boolean __fullyQualifiedMessageDrivenName6aSet = false;
293 
294     /**
295      * Returns the fully qualified message driven bean name.
296      * @return (String)handleGetFullyQualifiedMessageDrivenName()
297      */
298     public final String getFullyQualifiedMessageDrivenName()
299     {
300         String fullyQualifiedMessageDrivenName6a = this.__fullyQualifiedMessageDrivenName6a;
301         if (!this.__fullyQualifiedMessageDrivenName6aSet)
302         {
303             // fullyQualifiedMessageDrivenName has no pre constraints
304             fullyQualifiedMessageDrivenName6a = handleGetFullyQualifiedMessageDrivenName();
305             // fullyQualifiedMessageDrivenName has no post constraints
306             this.__fullyQualifiedMessageDrivenName6a = fullyQualifiedMessageDrivenName6a;
307             if (isMetafacadePropertyCachingEnabled())
308             {
309                 this.__fullyQualifiedMessageDrivenName6aSet = true;
310             }
311         }
312         return fullyQualifiedMessageDrivenName6a;
313     }
314 
315    /**
316     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMessageDrivenImplementationName()
317     * @return String
318     */
319     protected abstract String handleGetMessageDrivenImplementationName();
320 
321     private String __messageDrivenImplementationName7a;
322     private boolean __messageDrivenImplementationName7aSet = false;
323 
324     /**
325      * Returns the message driven bean implementation name.
326      * @return (String)handleGetMessageDrivenImplementationName()
327      */
328     public final String getMessageDrivenImplementationName()
329     {
330         String messageDrivenImplementationName7a = this.__messageDrivenImplementationName7a;
331         if (!this.__messageDrivenImplementationName7aSet)
332         {
333             // messageDrivenImplementationName has no pre constraints
334             messageDrivenImplementationName7a = handleGetMessageDrivenImplementationName();
335             // messageDrivenImplementationName has no post constraints
336             this.__messageDrivenImplementationName7a = messageDrivenImplementationName7a;
337             if (isMetafacadePropertyCachingEnabled())
338             {
339                 this.__messageDrivenImplementationName7aSet = true;
340             }
341         }
342         return messageDrivenImplementationName7a;
343     }
344 
345    /**
346     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMessageDrivenListenerName()
347     * @return String
348     */
349     protected abstract String handleGetMessageDrivenListenerName();
350 
351     private String __messageDrivenListenerName8a;
352     private boolean __messageDrivenListenerName8aSet = false;
353 
354     /**
355      * Returns the message driven bean callback listener name.
356      * @return (String)handleGetMessageDrivenListenerName()
357      */
358     public final String getMessageDrivenListenerName()
359     {
360         String messageDrivenListenerName8a = this.__messageDrivenListenerName8a;
361         if (!this.__messageDrivenListenerName8aSet)
362         {
363             // messageDrivenListenerName has no pre constraints
364             messageDrivenListenerName8a = handleGetMessageDrivenListenerName();
365             // messageDrivenListenerName has no post constraints
366             this.__messageDrivenListenerName8a = messageDrivenListenerName8a;
367             if (isMetafacadePropertyCachingEnabled())
368             {
369                 this.__messageDrivenListenerName8aSet = true;
370             }
371         }
372         return messageDrivenListenerName8a;
373     }
374 
375    /**
376     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMessageDrivenName()
377     * @return String
378     */
379     protected abstract String handleGetMessageDrivenName();
380 
381     private String __messageDrivenName9a;
382     private boolean __messageDrivenName9aSet = false;
383 
384     /**
385      * Returns message driven bean name.
386      * @return (String)handleGetMessageDrivenName()
387      */
388     public final String getMessageDrivenName()
389     {
390         String messageDrivenName9a = this.__messageDrivenName9a;
391         if (!this.__messageDrivenName9aSet)
392         {
393             // messageDrivenName has no pre constraints
394             messageDrivenName9a = handleGetMessageDrivenName();
395             // messageDrivenName has no post constraints
396             this.__messageDrivenName9a = messageDrivenName9a;
397             if (isMetafacadePropertyCachingEnabled())
398             {
399                 this.__messageDrivenName9aSet = true;
400             }
401         }
402         return messageDrivenName9a;
403     }
404 
405    /**
406     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMessageSelector()
407     * @return String
408     */
409     protected abstract String handleGetMessageSelector();
410 
411     private String __messageSelector10a;
412     private boolean __messageSelector10aSet = false;
413 
414     /**
415      * Returns the JMS message selector used when determining the messages a message driven bean is
416      * to receive.
417      * @return (String)handleGetMessageSelector()
418      */
419     public final String getMessageSelector()
420     {
421         String messageSelector10a = this.__messageSelector10a;
422         if (!this.__messageSelector10aSet)
423         {
424             // messageSelector has no pre constraints
425             messageSelector10a = handleGetMessageSelector();
426             // messageSelector has no post constraints
427             this.__messageSelector10a = messageSelector10a;
428             if (isMetafacadePropertyCachingEnabled())
429             {
430                 this.__messageSelector10aSet = true;
431             }
432         }
433         return messageSelector10a;
434     }
435 
436    /**
437     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getRunAs()
438     * @return String
439     */
440     protected abstract String handleGetRunAs();
441 
442     private String __runAs11a;
443     private boolean __runAs11aSet = false;
444 
445     /**
446      * Returns the run-as identity for the message driven bean which is used to establish the
447      * identity the bean will use when making calls.  It does not affect the identity of the
448      * callers.
449      * @return (String)handleGetRunAs()
450      */
451     public final String getRunAs()
452     {
453         String runAs11a = this.__runAs11a;
454         if (!this.__runAs11aSet)
455         {
456             // runAs has no pre constraints
457             runAs11a = handleGetRunAs();
458             // runAs has no post constraints
459             this.__runAs11a = runAs11a;
460             if (isMetafacadePropertyCachingEnabled())
461             {
462                 this.__runAs11aSet = true;
463             }
464         }
465         return runAs11a;
466     }
467 
468    /**
469     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getSubscriptionDurability()
470     * @return String
471     */
472     protected abstract String handleGetSubscriptionDurability();
473 
474     private String __subscriptionDurability12a;
475     private boolean __subscriptionDurability12aSet = false;
476 
477     /**
478      * If the message driven bean is associated with a topic, then this will return the subscription
479      * durability.  Possible values are Durable or NonDurable.  By default, if a topic subscription
480      * is not specified, the non-durable subscription is assumed.
481      * Durable topic subscriptions ensure that messages are not missed, even if the EJB server is
482      * not running.
483      * @return (String)handleGetSubscriptionDurability()
484      */
485     public final String getSubscriptionDurability()
486     {
487         String subscriptionDurability12a = this.__subscriptionDurability12a;
488         if (!this.__subscriptionDurability12aSet)
489         {
490             // subscriptionDurability has no pre constraints
491             subscriptionDurability12a = handleGetSubscriptionDurability();
492             // subscriptionDurability has no post constraints
493             this.__subscriptionDurability12a = subscriptionDurability12a;
494             if (isMetafacadePropertyCachingEnabled())
495             {
496                 this.__subscriptionDurability12aSet = true;
497             }
498         }
499         return subscriptionDurability12a;
500     }
501 
502    /**
503     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getTransactionManagement()
504     * @return String
505     */
506     protected abstract String handleGetTransactionManagement();
507 
508     private String __transactionManagement13a;
509     private boolean __transactionManagement13aSet = false;
510 
511     /**
512      * Returns the transaction demarcation strategy for this bean.  Typically, this will return BEAN
513      * for non default CONTAINER managed beans.  Unless specified, this will return null indicating
514      * CONTAINER transaction demarcation.
515      * @return (String)handleGetTransactionManagement()
516      */
517     public final String getTransactionManagement()
518     {
519         String transactionManagement13a = this.__transactionManagement13a;
520         if (!this.__transactionManagement13aSet)
521         {
522             // transactionManagement has no pre constraints
523             transactionManagement13a = handleGetTransactionManagement();
524             // transactionManagement has no post constraints
525             this.__transactionManagement13a = transactionManagement13a;
526             if (isMetafacadePropertyCachingEnabled())
527             {
528                 this.__transactionManagement13aSet = true;
529             }
530         }
531         return transactionManagement13a;
532     }
533 
534    /**
535     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isTransactionManagementBean()
536     * @return boolean
537     */
538     protected abstract boolean handleIsTransactionManagementBean();
539 
540     private boolean __transactionManagementBean14a;
541     private boolean __transactionManagementBean14aSet = false;
542 
543     /**
544      * Returns true if the transaction demarcation strategy is bean managedfor this bean.
545      * @return (boolean)handleIsTransactionManagementBean()
546      */
547     public final boolean isTransactionManagementBean()
548     {
549         boolean transactionManagementBean14a = this.__transactionManagementBean14a;
550         if (!this.__transactionManagementBean14aSet)
551         {
552             // transactionManagementBean has no pre constraints
553             transactionManagementBean14a = handleIsTransactionManagementBean();
554             // transactionManagementBean has no post constraints
555             this.__transactionManagementBean14a = transactionManagementBean14a;
556             if (isMetafacadePropertyCachingEnabled())
557             {
558                 this.__transactionManagementBean14aSet = true;
559             }
560         }
561         return transactionManagementBean14a;
562     }
563 
564    /**
565     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getTransactionType()
566     * @return String
567     */
568     protected abstract String handleGetTransactionType();
569 
570     private String __transactionType15a;
571     private boolean __transactionType15aSet = false;
572 
573     /**
574      * Gets the transaction type for this message driven bean.  For container managed demarcation,
575      * either the REQUIRED or NOT_SUPPORTED transaction attributes must be used on a message driven
576      * bean.
577      * @return (String)handleGetTransactionType()
578      */
579     public final String getTransactionType()
580     {
581         String transactionType15a = this.__transactionType15a;
582         if (!this.__transactionType15aSet)
583         {
584             // transactionType has no pre constraints
585             transactionType15a = handleGetTransactionType();
586             // transactionType has no post constraints
587             this.__transactionType15a = transactionType15a;
588             if (isMetafacadePropertyCachingEnabled())
589             {
590                 this.__transactionType15aSet = true;
591             }
592         }
593         return transactionType15a;
594     }
595 
596    /**
597     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isDestinationTypeQueue()
598     * @return boolean
599     */
600     protected abstract boolean handleIsDestinationTypeQueue();
601 
602     private boolean __destinationTypeQueue16a;
603     private boolean __destinationTypeQueue16aSet = false;
604 
605     /**
606      * Returns true if the destination type if a javax.jms.Queue.
607      * @return (boolean)handleIsDestinationTypeQueue()
608      */
609     public final boolean isDestinationTypeQueue()
610     {
611         boolean destinationTypeQueue16a = this.__destinationTypeQueue16a;
612         if (!this.__destinationTypeQueue16aSet)
613         {
614             // destinationTypeQueue has no pre constraints
615             destinationTypeQueue16a = handleIsDestinationTypeQueue();
616             // destinationTypeQueue has no post constraints
617             this.__destinationTypeQueue16a = destinationTypeQueue16a;
618             if (isMetafacadePropertyCachingEnabled())
619             {
620                 this.__destinationTypeQueue16aSet = true;
621             }
622         }
623         return destinationTypeQueue16a;
624     }
625 
626    /**
627     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isDestinationTypeTopic()
628     * @return boolean
629     */
630     protected abstract boolean handleIsDestinationTypeTopic();
631 
632     private boolean __destinationTypeTopic17a;
633     private boolean __destinationTypeTopic17aSet = false;
634 
635     /**
636      * Returns true if the destination type is a javax.jms.Topic.
637      * @return (boolean)handleIsDestinationTypeTopic()
638      */
639     public final boolean isDestinationTypeTopic()
640     {
641         boolean destinationTypeTopic17a = this.__destinationTypeTopic17a;
642         if (!this.__destinationTypeTopic17aSet)
643         {
644             // destinationTypeTopic has no pre constraints
645             destinationTypeTopic17a = handleIsDestinationTypeTopic();
646             // destinationTypeTopic has no post constraints
647             this.__destinationTypeTopic17a = destinationTypeTopic17a;
648             if (isMetafacadePropertyCachingEnabled())
649             {
650                 this.__destinationTypeTopic17aSet = true;
651             }
652         }
653         return destinationTypeTopic17a;
654     }
655 
656    /**
657     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMinimumPoolSize()
658     * @return int
659     */
660     protected abstract int handleGetMinimumPoolSize();
661 
662     private int __minimumPoolSize18a;
663     private boolean __minimumPoolSize18aSet = false;
664 
665     /**
666      * Returns the MDB minimum pool size.
667      * @return (int)handleGetMinimumPoolSize()
668      */
669     public final int getMinimumPoolSize()
670     {
671         int minimumPoolSize18a = this.__minimumPoolSize18a;
672         if (!this.__minimumPoolSize18aSet)
673         {
674             // minimumPoolSize has no pre constraints
675             minimumPoolSize18a = handleGetMinimumPoolSize();
676             // minimumPoolSize has no post constraints
677             this.__minimumPoolSize18a = minimumPoolSize18a;
678             if (isMetafacadePropertyCachingEnabled())
679             {
680                 this.__minimumPoolSize18aSet = true;
681             }
682         }
683         return minimumPoolSize18a;
684     }
685 
686    /**
687     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isListenerEnabled()
688     * @return boolean
689     */
690     protected abstract boolean handleIsListenerEnabled();
691 
692     private boolean __listenerEnabled19a;
693     private boolean __listenerEnabled19aSet = false;
694 
695     /**
696      * Returns true if this message driven bean has the stereotype Listener.  False otherwise.
697      * @return (boolean)handleIsListenerEnabled()
698      */
699     public final boolean isListenerEnabled()
700     {
701         boolean listenerEnabled19a = this.__listenerEnabled19a;
702         if (!this.__listenerEnabled19aSet)
703         {
704             // listenerEnabled has no pre constraints
705             listenerEnabled19a = handleIsListenerEnabled();
706             // listenerEnabled has no post constraints
707             this.__listenerEnabled19a = listenerEnabled19a;
708             if (isMetafacadePropertyCachingEnabled())
709             {
710                 this.__listenerEnabled19aSet = true;
711             }
712         }
713         return listenerEnabled19a;
714     }
715 
716    /**
717     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getInterceptorReferences()
718     * @return Collection
719     */
720     protected abstract Collection handleGetInterceptorReferences();
721 
722     private Collection __interceptorReferences20a;
723     private boolean __interceptorReferences20aSet = false;
724 
725     /**
726      * Returns the Collection of target elements from the message-driven bean class where  the
727      * target class has a stereotype of Interceptor.
728      * @return (Collection)handleGetInterceptorReferences()
729      */
730     public final Collection getInterceptorReferences()
731     {
732         Collection interceptorReferences20a = this.__interceptorReferences20a;
733         if (!this.__interceptorReferences20aSet)
734         {
735             // interceptorReferences has no pre constraints
736             interceptorReferences20a = handleGetInterceptorReferences();
737             // interceptorReferences has no post constraints
738             this.__interceptorReferences20a = interceptorReferences20a;
739             if (isMetafacadePropertyCachingEnabled())
740             {
741                 this.__interceptorReferences20aSet = true;
742             }
743         }
744         return interceptorReferences20a;
745     }
746 
747    /**
748     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isExcludeDefaultInterceptors()
749     * @return boolean
750     */
751     protected abstract boolean handleIsExcludeDefaultInterceptors();
752 
753     private boolean __excludeDefaultInterceptors21a;
754     private boolean __excludeDefaultInterceptors21aSet = false;
755 
756     /**
757      * Determines whether to exclude the invocation of the default interceptors for all business
758      * method in the bean.
759      * @return (boolean)handleIsExcludeDefaultInterceptors()
760      */
761     public final boolean isExcludeDefaultInterceptors()
762     {
763         boolean excludeDefaultInterceptors21a = this.__excludeDefaultInterceptors21a;
764         if (!this.__excludeDefaultInterceptors21aSet)
765         {
766             // excludeDefaultInterceptors has no pre constraints
767             excludeDefaultInterceptors21a = handleIsExcludeDefaultInterceptors();
768             // excludeDefaultInterceptors has no post constraints
769             this.__excludeDefaultInterceptors21a = excludeDefaultInterceptors21a;
770             if (isMetafacadePropertyCachingEnabled())
771             {
772                 this.__excludeDefaultInterceptors21aSet = true;
773             }
774         }
775         return excludeDefaultInterceptors21a;
776     }
777 
778    /**
779     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMaximumPoolSize()
780     * @return int
781     */
782     protected abstract int handleGetMaximumPoolSize();
783 
784     private int __maximumPoolSize22a;
785     private boolean __maximumPoolSize22aSet = false;
786 
787     /**
788      * Returns the MDB maximum pool size.
789      * @return (int)handleGetMaximumPoolSize()
790      */
791     public final int getMaximumPoolSize()
792     {
793         int maximumPoolSize22a = this.__maximumPoolSize22a;
794         if (!this.__maximumPoolSize22aSet)
795         {
796             // maximumPoolSize has no pre constraints
797             maximumPoolSize22a = handleGetMaximumPoolSize();
798             // maximumPoolSize has no post constraints
799             this.__maximumPoolSize22a = maximumPoolSize22a;
800             if (isMetafacadePropertyCachingEnabled())
801             {
802                 this.__maximumPoolSize22aSet = true;
803             }
804         }
805         return maximumPoolSize22a;
806     }
807 
808    /**
809     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getTestPackageName()
810     * @return String
811     */
812     protected abstract String handleGetTestPackageName();
813 
814     private String __testPackageName23a;
815     private boolean __testPackageName23aSet = false;
816 
817     /**
818      * Returns the message driven test package name. This simply appends .test to the existing class
819      * package.
820      * @return (String)handleGetTestPackageName()
821      */
822     public final String getTestPackageName()
823     {
824         String testPackageName23a = this.__testPackageName23a;
825         if (!this.__testPackageName23aSet)
826         {
827             // testPackageName has no pre constraints
828             testPackageName23a = handleGetTestPackageName();
829             // testPackageName has no post constraints
830             this.__testPackageName23a = testPackageName23a;
831             if (isMetafacadePropertyCachingEnabled())
832             {
833                 this.__testPackageName23aSet = true;
834             }
835         }
836         return testPackageName23a;
837     }
838 
839    /**
840     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getMessageDrivenTestName()
841     * @return String
842     */
843     protected abstract String handleGetMessageDrivenTestName();
844 
845     private String __messageDrivenTestName24a;
846     private boolean __messageDrivenTestName24aSet = false;
847 
848     /**
849      * Returns the message driven bean test class name
850      * @return (String)handleGetMessageDrivenTestName()
851      */
852     public final String getMessageDrivenTestName()
853     {
854         String messageDrivenTestName24a = this.__messageDrivenTestName24a;
855         if (!this.__messageDrivenTestName24aSet)
856         {
857             // messageDrivenTestName has no pre constraints
858             messageDrivenTestName24a = handleGetMessageDrivenTestName();
859             // messageDrivenTestName has no post constraints
860             this.__messageDrivenTestName24a = messageDrivenTestName24a;
861             if (isMetafacadePropertyCachingEnabled())
862             {
863                 this.__messageDrivenTestName24aSet = true;
864             }
865         }
866         return messageDrivenTestName24a;
867     }
868 
869    /**
870     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getFullyQualifiedMessageDrivenTestName()
871     * @return String
872     */
873     protected abstract String handleGetFullyQualifiedMessageDrivenTestName();
874 
875     private String __fullyQualifiedMessageDrivenTestName25a;
876     private boolean __fullyQualifiedMessageDrivenTestName25aSet = false;
877 
878     /**
879      * Returns the fully qualified message driven test class name
880      * @return (String)handleGetFullyQualifiedMessageDrivenTestName()
881      */
882     public final String getFullyQualifiedMessageDrivenTestName()
883     {
884         String fullyQualifiedMessageDrivenTestName25a = this.__fullyQualifiedMessageDrivenTestName25a;
885         if (!this.__fullyQualifiedMessageDrivenTestName25aSet)
886         {
887             // fullyQualifiedMessageDrivenTestName has no pre constraints
888             fullyQualifiedMessageDrivenTestName25a = handleGetFullyQualifiedMessageDrivenTestName();
889             // fullyQualifiedMessageDrivenTestName has no post constraints
890             this.__fullyQualifiedMessageDrivenTestName25a = fullyQualifiedMessageDrivenTestName25a;
891             if (isMetafacadePropertyCachingEnabled())
892             {
893                 this.__fullyQualifiedMessageDrivenTestName25aSet = true;
894             }
895         }
896         return fullyQualifiedMessageDrivenTestName25a;
897     }
898 
899    /**
900     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isSubscriptionDurable()
901     * @return boolean
902     */
903     protected abstract boolean handleIsSubscriptionDurable();
904 
905     private boolean __subscriptionDurable26a;
906     private boolean __subscriptionDurable26aSet = false;
907 
908     /**
909      * Returns true if the topic subscription durability setting is Durable.
910      * @return (boolean)handleIsSubscriptionDurable()
911      */
912     public final boolean isSubscriptionDurable()
913     {
914         boolean subscriptionDurable26a = this.__subscriptionDurable26a;
915         if (!this.__subscriptionDurable26aSet)
916         {
917             // subscriptionDurable has no pre constraints
918             subscriptionDurable26a = handleIsSubscriptionDurable();
919             // subscriptionDurable has no post constraints
920             this.__subscriptionDurable26a = subscriptionDurable26a;
921             if (isMetafacadePropertyCachingEnabled())
922             {
923                 this.__subscriptionDurable26aSet = true;
924             }
925         }
926         return subscriptionDurable26a;
927     }
928 
929    /**
930     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#isSubscriptionNonDurable()
931     * @return boolean
932     */
933     protected abstract boolean handleIsSubscriptionNonDurable();
934 
935     private boolean __subscriptionNonDurable27a;
936     private boolean __subscriptionNonDurable27aSet = false;
937 
938     /**
939      * Returns true if the subscription durability setting is NonDurable.
940      * @return (boolean)handleIsSubscriptionNonDurable()
941      */
942     public final boolean isSubscriptionNonDurable()
943     {
944         boolean subscriptionNonDurable27a = this.__subscriptionNonDurable27a;
945         if (!this.__subscriptionNonDurable27aSet)
946         {
947             // subscriptionNonDurable has no pre constraints
948             subscriptionNonDurable27a = handleIsSubscriptionNonDurable();
949             // subscriptionNonDurable has no post constraints
950             this.__subscriptionNonDurable27a = subscriptionNonDurable27a;
951             if (isMetafacadePropertyCachingEnabled())
952             {
953                 this.__subscriptionNonDurable27aSet = true;
954             }
955         }
956         return subscriptionNonDurable27a;
957     }
958 
959    /**
960     * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenFacade#getDurableSubscriptionId()
961     * @return String
962     */
963     protected abstract String handleGetDurableSubscriptionId();
964 
965     private String __durableSubscriptionId28a;
966     private boolean __durableSubscriptionId28aSet = false;
967 
968     /**
969      * This returns a subscription name which is only required for durable subscriptions.
970      * @return (String)handleGetDurableSubscriptionId()
971      */
972     public final String getDurableSubscriptionId()
973     {
974         String durableSubscriptionId28a = this.__durableSubscriptionId28a;
975         if (!this.__durableSubscriptionId28aSet)
976         {
977             // durableSubscriptionId has no pre constraints
978             durableSubscriptionId28a = handleGetDurableSubscriptionId();
979             // durableSubscriptionId has no post constraints
980             this.__durableSubscriptionId28a = durableSubscriptionId28a;
981             if (isMetafacadePropertyCachingEnabled())
982             {
983                 this.__durableSubscriptionId28aSet = true;
984             }
985         }
986         return durableSubscriptionId28a;
987     }
988 
989     // ---------------- business methods ----------------------
990 
991     /**
992      * Method to be implemented in descendants
993      * Returns the comma separated list of attributes.<p/>This method can be used to generate
994      * argument lists for constructors and method calls.
995      * @param attributes
996      * @param includeTypes
997      * @param includeNames
998      * @return String
999      */
1000     protected abstract String handleGetAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames);
1001 
1002     /**
1003      * Returns the comma separated list of attributes.<p/>This method can be used to generate
1004      * argument lists for constructors and method calls.
1005      * @param attributes Collection
1006      * a collection of {@link Attribute} objects
1007      * @param includeTypes boolean
1008      * if <code>true</code>, the type names of the attributes are included.
1009      * @param includeNames boolean
1010      * if <code>true</code>, the names of the attributes are included
1011      * @return handleGetAttributesAsList(attributes, includeTypes, includeNames)
1012      */
1013     public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames)
1014     {
1015         // getAttributesAsList has no pre constraints
1016         String returnValue = handleGetAttributesAsList(attributes, includeTypes, includeNames);
1017         // getAttributesAsList has no post constraints
1018         return returnValue;
1019     }
1020 
1021     /**
1022      * Method to be implemented in descendants
1023      * Gets all constants for this message driven EJB. Constants are defined as static read-only
1024      * attributes which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the
1025      * inheritance hierarchy will be followed and we'll retrieve all constants from any super types
1026      * as well.
1027      * @param follow
1028      * @return Collection
1029      */
1030     protected abstract Collection handleGetConstants(boolean follow);
1031 
1032     /**
1033      * Gets all constants for this message driven EJB. Constants are defined as static read-only
1034      * attributes which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the
1035      * inheritance hierarchy will be followed and we'll retrieve all constants from any super types
1036      * as well.
1037      * @param follow boolean
1038      * If true, then the inheritance hierarchy will be followed and we'll retrieve all constants
1039      * from any super types as well.
1040      * @return handleGetConstants(follow)
1041      */
1042     public Collection getConstants(boolean follow)
1043     {
1044         // getConstants has no pre constraints
1045         Collection returnValue = handleGetConstants(follow);
1046         // getConstants has no post constraints
1047         return returnValue;
1048     }
1049 
1050     /**
1051      * Method to be implemented in descendants
1052      * Gets all env-entries for the specified session EJB. Env-entries are stored as static
1053      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
1054      * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
1055      * types as well.
1056      * @param follow
1057      * @return Collection
1058      */
1059     protected abstract Collection handleGetEnvironmentEntries(boolean follow);
1060 
1061     /**
1062      * Gets all env-entries for the specified session EJB. Env-entries are stored as static
1063      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
1064      * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
1065      * types as well.
1066      * @param follow boolean
1067      * If true, then the inheritance hierarchy will be followed and we'll retrieve all env-entries
1068      * from any super types as well.
1069      * @return handleGetEnvironmentEntries(follow)
1070      */
1071     public Collection getEnvironmentEntries(boolean follow)
1072     {
1073         // getEnvironmentEntries has no pre constraints
1074         Collection returnValue = handleGetEnvironmentEntries(follow);
1075         // getEnvironmentEntries has no post constraints
1076         return returnValue;
1077     }
1078 
1079     /**
1080      * @return true
1081      * @see Service
1082      */
1083     public boolean isServiceMetaType()
1084     {
1085         return true;
1086     }
1087 
1088     /**
1089      * @return true
1090      * @see ClassifierFacade
1091      */
1092     public boolean isClassifierFacadeMetaType()
1093     {
1094         return true;
1095     }
1096 
1097     /**
1098      * @return true
1099      * @see GeneralizableElementFacade
1100      */
1101     public boolean isGeneralizableElementFacadeMetaType()
1102     {
1103         return true;
1104     }
1105 
1106     /**
1107      * @return true
1108      * @see ModelElementFacade
1109      */
1110     public boolean isModelElementFacadeMetaType()
1111     {
1112         return true;
1113     }
1114 
1115     // ----------- delegates to Service ------------
1116     /**
1117      * Return the attribute which name matches the parameter
1118      * @see ClassifierFacade#findAttribute(String name)
1119      */
1120     public AttributeFacade findAttribute(String name)
1121     {
1122         return this.getSuperService().findAttribute(name);
1123     }
1124 
1125     /**
1126      * Those abstraction dependencies for which this classifier is the client.
1127      * @see ClassifierFacade#getAbstractions()
1128      */
1129     public Collection<ClassifierFacade> getAbstractions()
1130     {
1131         return this.getSuperService().getAbstractions();
1132     }
1133 
1134     /**
1135      * Lists all classes associated to this one and any ancestor classes (through generalization).
1136      * There will be no duplicates. The order of the elements is predictable.
1137      * @see ClassifierFacade#getAllAssociatedClasses()
1138      */
1139     public Collection<ClassifierFacade> getAllAssociatedClasses()
1140     {
1141         return this.getSuperService().getAllAssociatedClasses();
1142     }
1143 
1144     /**
1145      * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
1146      * any attributes and navigable connecting association ends.
1147      * @see ClassifierFacade#getAllProperties()
1148      */
1149     public Collection<ModelElementFacade> getAllProperties()
1150     {
1151         return this.getSuperService().getAllProperties();
1152     }
1153 
1154     /**
1155      * A collection containing all required and/or read-only 'properties' of the classifier and its
1156      * ancestors. Properties are any attributes and navigable connecting association ends.
1157      * @see ClassifierFacade#getAllRequiredConstructorParameters()
1158      */
1159     public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
1160     {
1161         return this.getSuperService().getAllRequiredConstructorParameters();
1162     }
1163 
1164     /**
1165      * Gets the array type for this classifier.  If this classifier already represents an array, it
1166      * just returns itself.
1167      * @see ClassifierFacade#getArray()
1168      */
1169     public ClassifierFacade getArray()
1170     {
1171         return this.getSuperService().getArray();
1172     }
1173 
1174     /**
1175      * The name of the classifier as an array.
1176      * @see ClassifierFacade#getArrayName()
1177      */
1178     public String getArrayName()
1179     {
1180         return this.getSuperService().getArrayName();
1181     }
1182 
1183     /**
1184      * Lists the classes associated to this one, there is no repitition of classes. The order of the
1185      * elements is predictable.
1186      * @see ClassifierFacade#getAssociatedClasses()
1187      */
1188     public Collection<ClassifierFacade> getAssociatedClasses()
1189     {
1190         return this.getSuperService().getAssociatedClasses();
1191     }
1192 
1193     /**
1194      * Gets the association ends belonging to a classifier.
1195      * @see ClassifierFacade#getAssociationEnds()
1196      */
1197     public List<AssociationEndFacade> getAssociationEnds()
1198     {
1199         return this.getSuperService().getAssociationEnds();
1200     }
1201 
1202     /**
1203      * Gets the attributes that belong to the classifier.
1204      * @see ClassifierFacade#getAttributes()
1205      */
1206     public List<AttributeFacade> getAttributes()
1207     {
1208         return this.getSuperService().getAttributes();
1209     }
1210 
1211     /**
1212      * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
1213      * hierarchy and gets the attributes from the super classes as well.
1214      * @see ClassifierFacade#getAttributes(boolean follow)
1215      */
1216     public List<AttributeFacade> getAttributes(boolean follow)
1217     {
1218         return this.getSuperService().getAttributes(follow);
1219     }
1220 
1221     /**
1222      * The fully qualified name of the classifier as an array.
1223      * @see ClassifierFacade#getFullyQualifiedArrayName()
1224      */
1225     public String getFullyQualifiedArrayName()
1226     {
1227         return this.getSuperService().getFullyQualifiedArrayName();
1228     }
1229 
1230     /**
1231      * Returns all those operations that could be implemented at this classifier's level. This means
1232      * the operations owned by this classifier as well as any realized interface's operations
1233      * (recursively) in case this classifier itself is not already an interface, or generalized when
1234      * this classifier is an interface.
1235      * @see ClassifierFacade#getImplementationOperations()
1236      */
1237     public Collection<OperationFacade> getImplementationOperations()
1238     {
1239         return this.getSuperService().getImplementationOperations();
1240     }
1241 
1242     /**
1243      * A comma separated list of the fully qualified names of all implemented interfaces.
1244      * @see ClassifierFacade#getImplementedInterfaceList()
1245      */
1246     public String getImplementedInterfaceList()
1247     {
1248         return this.getSuperService().getImplementedInterfaceList();
1249     }
1250 
1251     /**
1252      * Those attributes that are scoped to an instance of this class.
1253      * @see ClassifierFacade#getInstanceAttributes()
1254      */
1255     public Collection<AttributeFacade> getInstanceAttributes()
1256     {
1257         return this.getSuperService().getInstanceAttributes();
1258     }
1259 
1260     /**
1261      * Those operations that are scoped to an instance of this class.
1262      * @see ClassifierFacade#getInstanceOperations()
1263      */
1264     public List<OperationFacade> getInstanceOperations()
1265     {
1266         return this.getSuperService().getInstanceOperations();
1267     }
1268 
1269     /**
1270      * Those interfaces that are abstractions of this classifier, this basically means this
1271      * classifier realizes them.
1272      * @see ClassifierFacade#getInterfaceAbstractions()
1273      */
1274     public Collection<ClassifierFacade> getInterfaceAbstractions()
1275     {
1276         return this.getSuperService().getInterfaceAbstractions();
1277     }
1278 
1279     /**
1280      * A String representing a new Constructor declaration for this classifier type to be used in a
1281      * Java environment.
1282      * @see ClassifierFacade#getJavaNewString()
1283      */
1284     public String getJavaNewString()
1285     {
1286         return this.getSuperService().getJavaNewString();
1287     }
1288 
1289     /**
1290      * A String representing the null-value for this classifier type to be used in a Java
1291      * environment.
1292      * @see ClassifierFacade#getJavaNullString()
1293      */
1294     public String getJavaNullString()
1295     {
1296         return this.getSuperService().getJavaNullString();
1297     }
1298 
1299     /**
1300      * The other ends of this classifier's association ends which are navigable.
1301      * @see ClassifierFacade#getNavigableConnectingEnds()
1302      */
1303     public Collection<AssociationEndFacade> getNavigableConnectingEnds()
1304     {
1305         return this.getSuperService().getNavigableConnectingEnds();
1306     }
1307 
1308     /**
1309      * Get the other ends of this classifier's association ends which are navigable and if 'follow'
1310      * is true goes up the inheritance hierarchy and gets the super association ends as well.
1311      * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
1312      */
1313     public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
1314     {
1315         return this.getSuperService().getNavigableConnectingEnds(follow);
1316     }
1317 
1318     /**
1319      * Assuming that the classifier is an array, this will return the non array type of the
1320      * classifier from
1321      * the model.  If the classifier is NOT an array, it will just return itself.
1322      * @see ClassifierFacade#getNonArray()
1323      */
1324     public ClassifierFacade getNonArray()
1325     {
1326         return this.getSuperService().getNonArray();
1327     }
1328 
1329     /**
1330      * The attributes from this classifier in the form of an operation call (this example would be
1331      * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
1332      * classifier, the result would be an empty '()'.
1333      * @see ClassifierFacade#getOperationCallFromAttributes()
1334      */
1335     public String getOperationCallFromAttributes()
1336     {
1337         return this.getSuperService().getOperationCallFromAttributes();
1338     }
1339 
1340     /**
1341      * The operations owned by this classifier.
1342      * @see ClassifierFacade#getOperations()
1343      */
1344     public List<OperationFacade> getOperations()
1345     {
1346         return this.getSuperService().getOperations();
1347     }
1348 
1349     /**
1350      * A collection containing all 'properties' of the classifier.  Properties are any attributes
1351      * and navigable connecting association ends.
1352      * @see ClassifierFacade#getProperties()
1353      */
1354     public List<ModelElementFacade> getProperties()
1355     {
1356         return this.getSuperService().getProperties();
1357     }
1358 
1359     /**
1360      * Gets all properties (attributes and navigable association ends) for the classifier and if
1361      * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
1362      * classes as well.
1363      * @see ClassifierFacade#getProperties(boolean follow)
1364      */
1365     public List getProperties(boolean follow)
1366     {
1367         return this.getSuperService().getProperties(follow);
1368     }
1369 
1370     /**
1371      * A collection containing all required and/or read-only 'properties' of the classifier. 
1372      * Properties are any attributes and navigable connecting association ends.
1373      * @see ClassifierFacade#getRequiredConstructorParameters()
1374      */
1375     public Collection<ModelElementFacade> getRequiredConstructorParameters()
1376     {
1377         return this.getSuperService().getRequiredConstructorParameters();
1378     }
1379 
1380     /**
1381      * Returns the serial version UID of the underlying model element.
1382      * @see ClassifierFacade#getSerialVersionUID()
1383      */
1384     public long getSerialVersionUID()
1385     {
1386         return this.getSuperService().getSerialVersionUID();
1387     }
1388 
1389     /**
1390      * Those attributes that are scoped to the definition of this class.
1391      * @see ClassifierFacade#getStaticAttributes()
1392      */
1393     public Collection<AttributeFacade> getStaticAttributes()
1394     {
1395         return this.getSuperService().getStaticAttributes();
1396     }
1397 
1398     /**
1399      * Those operations that are scoped to the definition of this class.
1400      * @see ClassifierFacade#getStaticOperations()
1401      */
1402     public List<OperationFacade> getStaticOperations()
1403     {
1404         return this.getSuperService().getStaticOperations();
1405     }
1406 
1407     /**
1408      * This class' superclass, returns the generalization if it is a ClassifierFacade, null
1409      * otherwise.
1410      * @see ClassifierFacade#getSuperClass()
1411      */
1412     public ClassifierFacade getSuperClass()
1413     {
1414         return this.getSuperService().getSuperClass();
1415     }
1416 
1417     /**
1418      * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
1419      * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
1420      * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
1421      * 'wrapperMappingsUri', this property must point to the location of the mappings file which
1422      * maps the primitives to wrapper types.
1423      * @see ClassifierFacade#getWrapperName()
1424      */
1425     public String getWrapperName()
1426     {
1427         return this.getSuperService().getWrapperName();
1428     }
1429 
1430     /**
1431      * Indicates if this classifier is 'abstract'.
1432      * @see ClassifierFacade#isAbstract()
1433      */
1434     public boolean isAbstract()
1435     {
1436         return this.getSuperService().isAbstract();
1437     }
1438 
1439     /**
1440      * True if this classifier represents an array type. False otherwise.
1441      * @see ClassifierFacade#isArrayType()
1442      */
1443     public boolean isArrayType()
1444     {
1445         return this.getSuperService().isArrayType();
1446     }
1447 
1448     /**
1449      * True if the ClassifierFacade is an AssociationClass.
1450      * @see ClassifierFacade#isAssociationClass()
1451      */
1452     public boolean isAssociationClass()
1453     {
1454         return this.getSuperService().isAssociationClass();
1455     }
1456 
1457     /**
1458      * Returns true if this type represents a Blob type.
1459      * @see ClassifierFacade#isBlobType()
1460      */
1461     public boolean isBlobType()
1462     {
1463         return this.getSuperService().isBlobType();
1464     }
1465 
1466     /**
1467      * Indicates if this type represents a boolean type or not.
1468      * @see ClassifierFacade#isBooleanType()
1469      */
1470     public boolean isBooleanType()
1471     {
1472         return this.getSuperService().isBooleanType();
1473     }
1474 
1475     /**
1476      * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1477      * @see ClassifierFacade#isCharacterType()
1478      */
1479     public boolean isCharacterType()
1480     {
1481         return this.getSuperService().isCharacterType();
1482     }
1483 
1484     /**
1485      * Returns true if this type represents a Clob type.
1486      * @see ClassifierFacade#isClobType()
1487      */
1488     public boolean isClobType()
1489     {
1490         return this.getSuperService().isClobType();
1491     }
1492 
1493     /**
1494      * True if this classifier represents a collection type. False otherwise.
1495      * @see ClassifierFacade#isCollectionType()
1496      */
1497     public boolean isCollectionType()
1498     {
1499         return this.getSuperService().isCollectionType();
1500     }
1501 
1502     /**
1503      * True/false depending on whether or not this classifier represents a datatype. A data type is
1504      * a type whose instances are identified only by their value. A data type may contain attributes
1505      * to support the modeling of structured data types.
1506      * @see ClassifierFacade#isDataType()
1507      */
1508     public boolean isDataType()
1509     {
1510         return this.getSuperService().isDataType();
1511     }
1512 
1513     /**
1514      * True when this classifier is a date type.
1515      * @see ClassifierFacade#isDateType()
1516      */
1517     public boolean isDateType()
1518     {
1519         return this.getSuperService().isDateType();
1520     }
1521 
1522     /**
1523      * Indicates if this type represents a Double type or not.
1524      * @see ClassifierFacade#isDoubleType()
1525      */
1526     public boolean isDoubleType()
1527     {
1528         return this.getSuperService().isDoubleType();
1529     }
1530 
1531     /**
1532      * Indicates whether or not this classifier represents an "EmbeddedValue'.
1533      * @see ClassifierFacade#isEmbeddedValue()
1534      */
1535     public boolean isEmbeddedValue()
1536     {
1537         return this.getSuperService().isEmbeddedValue();
1538     }
1539 
1540     /**
1541      * True if this classifier is in fact marked as an enumeration.
1542      * @see ClassifierFacade#isEnumeration()
1543      */
1544     public boolean isEnumeration()
1545     {
1546         return this.getSuperService().isEnumeration();
1547     }
1548 
1549     /**
1550      * Returns true if this type represents a 'file' type.
1551      * @see ClassifierFacade#isFileType()
1552      */
1553     public boolean isFileType()
1554     {
1555         return this.getSuperService().isFileType();
1556     }
1557 
1558     /**
1559      * Indicates if this type represents a Float type or not.
1560      * @see ClassifierFacade#isFloatType()
1561      */
1562     public boolean isFloatType()
1563     {
1564         return this.getSuperService().isFloatType();
1565     }
1566 
1567     /**
1568      * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1569      * @see ClassifierFacade#isIntegerType()
1570      */
1571     public boolean isIntegerType()
1572     {
1573         return this.getSuperService().isIntegerType();
1574     }
1575 
1576     /**
1577      * True/false depending on whether or not this Classifier represents an interface.
1578      * @see ClassifierFacade#isInterface()
1579      */
1580     public boolean isInterface()
1581     {
1582         return this.getSuperService().isInterface();
1583     }
1584 
1585     /**
1586      * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1587      * @see ClassifierFacade#isLeaf()
1588      */
1589     public boolean isLeaf()
1590     {
1591         return this.getSuperService().isLeaf();
1592     }
1593 
1594     /**
1595      * True if this classifier represents a list type. False otherwise.
1596      * @see ClassifierFacade#isListType()
1597      */
1598     public boolean isListType()
1599     {
1600         return this.getSuperService().isListType();
1601     }
1602 
1603     /**
1604      * Indicates if this type represents a Long type or not.
1605      * @see ClassifierFacade#isLongType()
1606      */
1607     public boolean isLongType()
1608     {
1609         return this.getSuperService().isLongType();
1610     }
1611 
1612     /**
1613      * Indicates whether or not this classifier represents a Map type.
1614      * @see ClassifierFacade#isMapType()
1615      */
1616     public boolean isMapType()
1617     {
1618         return this.getSuperService().isMapType();
1619     }
1620 
1621     /**
1622      * Indicates whether or not this classifier represents a primitive type.
1623      * @see ClassifierFacade#isPrimitive()
1624      */
1625     public boolean isPrimitive()
1626     {
1627         return this.getSuperService().isPrimitive();
1628     }
1629 
1630     /**
1631      * True if this classifier represents a set type. False otherwise.
1632      * @see ClassifierFacade#isSetType()
1633      */
1634     public boolean isSetType()
1635     {
1636         return this.getSuperService().isSetType();
1637     }
1638 
1639     /**
1640      * Indicates whether or not this classifier represents a string type.
1641      * @see ClassifierFacade#isStringType()
1642      */
1643     public boolean isStringType()
1644     {
1645         return this.getSuperService().isStringType();
1646     }
1647 
1648     /**
1649      * Indicates whether or not this classifier represents a time type.
1650      * @see ClassifierFacade#isTimeType()
1651      */
1652     public boolean isTimeType()
1653     {
1654         return this.getSuperService().isTimeType();
1655     }
1656 
1657     /**
1658      * Returns true if this type is a wrapped primitive type.
1659      * @see ClassifierFacade#isWrappedPrimitive()
1660      */
1661     public boolean isWrappedPrimitive()
1662     {
1663         return this.getSuperService().isWrappedPrimitive();
1664     }
1665 
1666     /**
1667      * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
1668      * to true.
1669      * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
1670      */
1671     public Object findTaggedValue(String tagName, boolean follow)
1672     {
1673         return this.getSuperService().findTaggedValue(tagName, follow);
1674     }
1675 
1676     /**
1677      * All generalizations for this generalizable element, goes up the inheritance tree.
1678      * @see GeneralizableElementFacade#getAllGeneralizations()
1679      */
1680     public Collection<GeneralizableElementFacade> getAllGeneralizations()
1681     {
1682         return this.getSuperService().getAllGeneralizations();
1683     }
1684 
1685     /**
1686      * All specializations (travels down the inheritance hierarchy).
1687      * @see GeneralizableElementFacade#getAllSpecializations()
1688      */
1689     public Collection<GeneralizableElementFacade> getAllSpecializations()
1690     {
1691         return this.getSuperService().getAllSpecializations();
1692     }
1693 
1694     /**
1695      * Gets the direct generalization for this generalizable element.
1696      * @see GeneralizableElementFacade#getGeneralization()
1697      */
1698     public GeneralizableElementFacade getGeneralization()
1699     {
1700         return this.getSuperService().getGeneralization();
1701     }
1702 
1703     /**
1704      * Gets the actual links that this generalization element is part of (it plays either the
1705      * specialization or generalization).
1706      * @see GeneralizableElementFacade#getGeneralizationLinks()
1707      */
1708     public Collection<GeneralizationFacade> getGeneralizationLinks()
1709     {
1710         return this.getSuperService().getGeneralizationLinks();
1711     }
1712 
1713     /**
1714      * A comma separated list of the fully qualified names of all generalizations.
1715      * @see GeneralizableElementFacade#getGeneralizationList()
1716      */
1717     public String getGeneralizationList()
1718     {
1719         return this.getSuperService().getGeneralizationList();
1720     }
1721 
1722     /**
1723      * The element found when you recursively follow the generalization path up to the root. If an
1724      * element has no generalization itself will be considered the root.
1725      * @see GeneralizableElementFacade#getGeneralizationRoot()
1726      */
1727     public GeneralizableElementFacade getGeneralizationRoot()
1728     {
1729         return this.getSuperService().getGeneralizationRoot();
1730     }
1731 
1732     /**
1733      * Return all generalizations (ancestors) from this generalizable element.
1734      * @see GeneralizableElementFacade#getGeneralizations()
1735      */
1736     public Collection<GeneralizableElementFacade> getGeneralizations()
1737     {
1738         return this.getSuperService().getGeneralizations();
1739     }
1740 
1741     /**
1742      * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
1743      * @see GeneralizableElementFacade#getSpecializations()
1744      */
1745     public Collection<GeneralizableElementFacade> getSpecializations()
1746     {
1747         return this.getSuperService().getSpecializations();
1748     }
1749 
1750     /**
1751      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1752      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1753      */
1754     public void copyTaggedValues(ModelElementFacade element)
1755     {
1756         this.getSuperService().copyTaggedValues(element);
1757     }
1758 
1759     /**
1760      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1761      * one found will be returned.
1762      * @see ModelElementFacade#findTaggedValue(String tagName)
1763      */
1764     public Object findTaggedValue(String tagName)
1765     {
1766         return this.getSuperService().findTaggedValue(tagName);
1767     }
1768 
1769     /**
1770      * Returns all the values for the tagged value with the specified name. The returned collection
1771      * will contains only String instances, or will be empty. Never null.
1772      * @see ModelElementFacade#findTaggedValues(String tagName)
1773      */
1774     public Collection<Object> findTaggedValues(String tagName)
1775     {
1776         return this.getSuperService().findTaggedValues(tagName);
1777     }
1778 
1779     /**
1780      * Returns the fully qualified name of the model element. The fully qualified name includes
1781      * complete package qualified name of the underlying model element. The templates parameter will
1782      * be replaced by the correct one given the binding relation of the parameter to this element.
1783      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1784      */
1785     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1786     {
1787         return this.getSuperService().getBindedFullyQualifiedName(bindedElement);
1788     }
1789 
1790     /**
1791      * Gets all constraints belonging to the model element.
1792      * @see ModelElementFacade#getConstraints()
1793      */
1794     public Collection<ConstraintFacade> getConstraints()
1795     {
1796         return this.getSuperService().getConstraints();
1797     }
1798 
1799     /**
1800      * Returns the constraints of the argument kind that have been placed onto this model. Typical
1801      * kinds are "inv", "pre" and "post". Other kinds are possible.
1802      * @see ModelElementFacade#getConstraints(String kind)
1803      */
1804     public Collection<ConstraintFacade> getConstraints(String kind)
1805     {
1806         return this.getSuperService().getConstraints(kind);
1807     }
1808 
1809     /**
1810      * Gets the documentation for the model element, The indent argument is prefixed to each line.
1811      * By default this method wraps lines after 64 characters.
1812      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1813      * @see ModelElementFacade#getDocumentation(String indent)
1814      */
1815     public String getDocumentation(String indent)
1816     {
1817         return this.getSuperService().getDocumentation(indent);
1818     }
1819 
1820     /**
1821      * This method returns the documentation for this model element, with the lines wrapped after
1822      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1823      * required. By default paragraphs are returned as HTML.
1824      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1825      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1826      */
1827     public String getDocumentation(String indent, int lineLength)
1828     {
1829         return this.getSuperService().getDocumentation(indent, lineLength);
1830     }
1831 
1832     /**
1833      * This method returns the documentation for this model element, with the lines wrapped after
1834      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1835      * required. HTML style determines if HTML Escaping is applied.
1836      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1837      */
1838     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1839     {
1840         return this.getSuperService().getDocumentation(indent, lineLength, htmlStyle);
1841     }
1842 
1843     /**
1844      * The fully qualified name of this model element.
1845      * @see ModelElementFacade#getFullyQualifiedName()
1846      */
1847     public String getFullyQualifiedName()
1848     {
1849         return this.getSuperService().getFullyQualifiedName();
1850     }
1851 
1852     /**
1853      * Returns the fully qualified name of the model element. The fully qualified name includes
1854      * complete package qualified name of the underlying model element.  If modelName is true, then
1855      * the original name of the model element (the name contained within the model) will be the name
1856      * returned, otherwise a name from a language mapping will be returned.
1857      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1858      */
1859     public String getFullyQualifiedName(boolean modelName)
1860     {
1861         return this.getSuperService().getFullyQualifiedName(modelName);
1862     }
1863 
1864     /**
1865      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1866      * '/'.
1867      * @see ModelElementFacade#getFullyQualifiedNamePath()
1868      */
1869     public String getFullyQualifiedNamePath()
1870     {
1871         return this.getSuperService().getFullyQualifiedNamePath();
1872     }
1873 
1874     /**
1875      * Gets the unique identifier of the underlying model element.
1876      * @see ModelElementFacade#getId()
1877      */
1878     public String getId()
1879     {
1880         return this.getSuperService().getId();
1881     }
1882 
1883     /**
1884      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1885      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1886      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1887      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1888      * JDK5 compiler level.
1889      * @see ModelElementFacade#getKeywords()
1890      */
1891     public Collection<String> getKeywords()
1892     {
1893         return this.getSuperService().getKeywords();
1894     }
1895 
1896     /**
1897      * UML2: Retrieves a localized label for this named element.
1898      * @see ModelElementFacade#getLabel()
1899      */
1900     public String getLabel()
1901     {
1902         return this.getSuperService().getLabel();
1903     }
1904 
1905     /**
1906      * The language mappings that have been set for this model element.
1907      * @see ModelElementFacade#getLanguageMappings()
1908      */
1909     public TypeMappings getLanguageMappings()
1910     {
1911         return this.getSuperService().getLanguageMappings();
1912     }
1913 
1914     /**
1915      * Return the model containing this model element (multiple models may be loaded and processed
1916      * at the same time).
1917      * @see ModelElementFacade#getModel()
1918      */
1919     public ModelFacade getModel()
1920     {
1921         return this.getSuperService().getModel();
1922     }
1923 
1924     /**
1925      * The name of the model element.
1926      * @see ModelElementFacade#getName()
1927      */
1928     public String getName()
1929     {
1930         return this.getSuperService().getName();
1931     }
1932 
1933     /**
1934      * Gets the package to which this model element belongs.
1935      * @see ModelElementFacade#getPackage()
1936      */
1937     public ModelElementFacade getPackage()
1938     {
1939         return this.getSuperService().getPackage();
1940     }
1941 
1942     /**
1943      * The name of this model element's package.
1944      * @see ModelElementFacade#getPackageName()
1945      */
1946     public String getPackageName()
1947     {
1948         return this.getSuperService().getPackageName();
1949     }
1950 
1951     /**
1952      * Gets the package name (optionally providing the ability to retrieve the model name and not
1953      * the mapped name).
1954      * @see ModelElementFacade#getPackageName(boolean modelName)
1955      */
1956     public String getPackageName(boolean modelName)
1957     {
1958         return this.getSuperService().getPackageName(modelName);
1959     }
1960 
1961     /**
1962      * Returns the package as a path, the returned value always starts with out a slash '/'.
1963      * @see ModelElementFacade#getPackagePath()
1964      */
1965     public String getPackagePath()
1966     {
1967         return this.getSuperService().getPackagePath();
1968     }
1969 
1970     /**
1971      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1972      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1973      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1974      * the name of the NamedElement itself.
1975      * @see ModelElementFacade#getQualifiedName()
1976      */
1977     public String getQualifiedName()
1978     {
1979         return this.getSuperService().getQualifiedName();
1980     }
1981 
1982     /**
1983      * Gets the root package for the model element.
1984      * @see ModelElementFacade#getRootPackage()
1985      */
1986     public PackageFacade getRootPackage()
1987     {
1988         return this.getSuperService().getRootPackage();
1989     }
1990 
1991     /**
1992      * Gets the dependencies for which this model element is the source.
1993      * @see ModelElementFacade#getSourceDependencies()
1994      */
1995     public Collection<DependencyFacade> getSourceDependencies()
1996     {
1997         return this.getSuperService().getSourceDependencies();
1998     }
1999 
2000     /**
2001      * If this model element is the context of an activity graph, this represents that activity
2002      * graph.
2003      * @see ModelElementFacade#getStateMachineContext()
2004      */
2005     public StateMachineFacade getStateMachineContext()
2006     {
2007         return this.getSuperService().getStateMachineContext();
2008     }
2009 
2010     /**
2011      * The collection of ALL stereotype names for this model element.
2012      * @see ModelElementFacade#getStereotypeNames()
2013      */
2014     public Collection<String> getStereotypeNames()
2015     {
2016         return this.getSuperService().getStereotypeNames();
2017     }
2018 
2019     /**
2020      * Gets all stereotypes for this model element.
2021      * @see ModelElementFacade#getStereotypes()
2022      */
2023     public Collection<StereotypeFacade> getStereotypes()
2024     {
2025         return this.getSuperService().getStereotypes();
2026     }
2027 
2028     /**
2029      * Return the TaggedValues associated with this model element, under all stereotypes.
2030      * @see ModelElementFacade#getTaggedValues()
2031      */
2032     public Collection<TaggedValueFacade> getTaggedValues()
2033     {
2034         return this.getSuperService().getTaggedValues();
2035     }
2036 
2037     /**
2038      * Gets the dependencies for which this model element is the target.
2039      * @see ModelElementFacade#getTargetDependencies()
2040      */
2041     public Collection<DependencyFacade> getTargetDependencies()
2042     {
2043         return this.getSuperService().getTargetDependencies();
2044     }
2045 
2046     /**
2047      * Get the template parameter for this model element having the parameterName
2048      * @see ModelElementFacade#getTemplateParameter(String parameterName)
2049      */
2050     public Object getTemplateParameter(String parameterName)
2051     {
2052         return this.getSuperService().getTemplateParameter(parameterName);
2053     }
2054 
2055     /**
2056      * Get the template parameters for this model element
2057      * @see ModelElementFacade#getTemplateParameters()
2058      */
2059     public Collection<TemplateParameterFacade> getTemplateParameters()
2060     {
2061         return this.getSuperService().getTemplateParameters();
2062     }
2063 
2064     /**
2065      * The visibility (i.e. public, private, protected or package) of the model element, will
2066      * attempt a lookup for these values in the language mappings (if any).
2067      * @see ModelElementFacade#getVisibility()
2068      */
2069     public String getVisibility()
2070     {
2071         return this.getSuperService().getVisibility();
2072     }
2073 
2074     /**
2075      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2076      * is taken into account when searching for the stereotype), false otherwise.
2077      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2078      */
2079     public boolean hasExactStereotype(String stereotypeName)
2080     {
2081         return this.getSuperService().hasExactStereotype(stereotypeName);
2082     }
2083 
2084     /**
2085      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2086      * pipe, semicolon, or << >>
2087      * @see ModelElementFacade#hasKeyword(String keywordName)
2088      */
2089     public boolean hasKeyword(String keywordName)
2090     {
2091         return this.getSuperService().hasKeyword(keywordName);
2092     }
2093 
2094     /**
2095      * Returns true if the model element has the specified stereotype.  If the stereotype itself
2096      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2097      * one of the stereotype's ancestors has a matching name this method will return true, false
2098      * otherwise.
2099      * For example, if we have a certain stereotype called <<exception>> and a model element has a
2100      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2101      * method with 'stereotypeName' defined as 'exception' the method would return true since
2102      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2103      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2104      * @see ModelElementFacade#hasStereotype(String stereotypeName)
2105      */
2106     public boolean hasStereotype(String stereotypeName)
2107     {
2108         return this.getSuperService().hasStereotype(stereotypeName);
2109     }
2110 
2111     /**
2112      * True if there are target dependencies from this element that are instances of BindingFacade.
2113      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2114      * @see ModelElementFacade#isBindingDependenciesPresent()
2115      */
2116     public boolean isBindingDependenciesPresent()
2117     {
2118         return this.getSuperService().isBindingDependenciesPresent();
2119     }
2120 
2121     /**
2122      * Indicates if any constraints are present on this model element.
2123      * @see ModelElementFacade#isConstraintsPresent()
2124      */
2125     public boolean isConstraintsPresent()
2126     {
2127         return this.getSuperService().isConstraintsPresent();
2128     }
2129 
2130     /**
2131      * Indicates if any documentation is present on this model element.
2132      * @see ModelElementFacade#isDocumentationPresent()
2133      */
2134     public boolean isDocumentationPresent()
2135     {
2136         return this.getSuperService().isDocumentationPresent();
2137     }
2138 
2139     /**
2140      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2141      * @see ModelElementFacade#isReservedWord()
2142      */
2143     public boolean isReservedWord()
2144     {
2145         return this.getSuperService().isReservedWord();
2146     }
2147 
2148     /**
2149      * True is there are template parameters on this model element. For UML2, applies to Class,
2150      * Operation, Property, and Parameter.
2151      * @see ModelElementFacade#isTemplateParametersPresent()
2152      */
2153     public boolean isTemplateParametersPresent()
2154     {
2155         return this.getSuperService().isTemplateParametersPresent();
2156     }
2157 
2158     /**
2159      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2160      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2161      * Enumerations and Interfaces, optionally applies on other model elements.
2162      * @see ModelElementFacade#isValidIdentifierName()
2163      */
2164     public boolean isValidIdentifierName()
2165     {
2166         return this.getSuperService().isValidIdentifierName();
2167     }
2168 
2169     /**
2170      * Searches for the constraint with the specified 'name' on this model element, and if found
2171      * translates it using the specified 'translation' from a translation library discovered by the
2172      * framework.
2173      * @see ModelElementFacade#translateConstraint(String name, String translation)
2174      */
2175     public String translateConstraint(String name, String translation)
2176     {
2177         return this.getSuperService().translateConstraint(name, translation);
2178     }
2179 
2180     /**
2181      * Translates all constraints belonging to this model element with the given 'translation'.
2182      * @see ModelElementFacade#translateConstraints(String translation)
2183      */
2184     public String[] translateConstraints(String translation)
2185     {
2186         return this.getSuperService().translateConstraints(translation);
2187     }
2188 
2189     /**
2190      * Translates the constraints of the specified 'kind' belonging to this model element.
2191      * @see ModelElementFacade#translateConstraints(String kind, String translation)
2192      */
2193     public String[] translateConstraints(String kind, String translation)
2194     {
2195         return this.getSuperService().translateConstraints(kind, translation);
2196     }
2197 
2198     /**
2199      * Returns a collection of all entities this service and its ancestors have a relation to.
2200      * @see Service#getAllEntityReferences()
2201      */
2202     public Collection<DependencyFacade> getAllEntityReferences()
2203     {
2204         return this.getSuperService().getAllEntityReferences();
2205     }
2206 
2207     /**
2208      * All messaging destinations that belong to this service and all decendent services.
2209      * @see Service#getAllMessagingDestinations()
2210      */
2211     public Collection<Destination> getAllMessagingDestinations()
2212     {
2213         return this.getSuperService().getAllMessagingDestinations();
2214     }
2215 
2216     /**
2217      * All roles associated with the service, this includes both roles that have access to the
2218      * entire service, and any roles that have access to a single operation.
2219      * @see Service#getAllRoles()
2220      */
2221     public Collection<Role> getAllRoles()
2222     {
2223         return this.getSuperService().getAllRoles();
2224     }
2225 
2226     /**
2227      * Returns a collection of all services this service and its ancestors have a relation to.
2228      * @see Service#getAllServiceReferences()
2229      */
2230     public Collection<DependencyFacade> getAllServiceReferences()
2231     {
2232         return this.getSuperService().getAllServiceReferences();
2233     }
2234 
2235     /**
2236      * References to all entities to which this service has a dependency.
2237      * @see Service#getEntityReferences()
2238      */
2239     public Collection<DependencyFacade> getEntityReferences()
2240     {
2241         return this.getSuperService().getEntityReferences();
2242     }
2243 
2244     /**
2245      * All messaging destinations available to this service.
2246      * @see Service#getMessagingDestinations()
2247      */
2248     public Collection<Destination> getMessagingDestinations()
2249     {
2250         return this.getSuperService().getMessagingDestinations();
2251     }
2252 
2253     /**
2254      * The roles of the service, these are the actor's that can access this service.
2255      * @see Service#getRoles()
2256      */
2257     public Collection<Role> getRoles()
2258     {
2259         return this.getSuperService().getRoles();
2260     }
2261 
2262     /**
2263      * References to all services to which this service has a dependency.
2264      * @see Service#getServiceReferences()
2265      */
2266     public Collection<DependencyFacade> getServiceReferences()
2267     {
2268         return this.getSuperService().getServiceReferences();
2269     }
2270 
2271     /**
2272      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
2273      */
2274     @Override
2275     public void initialize()
2276     {
2277         this.getSuperService().initialize();
2278     }
2279 
2280     /**
2281      * @return Object getSuperService().getValidationOwner()
2282      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
2283      */
2284     @Override
2285     public Object getValidationOwner()
2286     {
2287         Object owner = this.getSuperService().getValidationOwner();
2288         return owner;
2289     }
2290 
2291     /**
2292      * @return String getSuperService().getValidationName()
2293      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
2294      */
2295     @Override
2296     public String getValidationName()
2297     {
2298         String name = this.getSuperService().getValidationName();
2299         return name;
2300     }
2301 
2302     /**
2303      * @param validationMessages Collection<ModelValidationMessage>
2304      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
2305      */
2306     @Override
2307     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2308     {
2309         this.getSuperService().validateInvariants(validationMessages);
2310     }
2311 
2312     /**
2313      * The property that stores the name of the metafacade.
2314      */
2315     private static final String NAME_PROPERTY = "name";
2316     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
2317 
2318     /**
2319      * @see Object#toString()
2320      */
2321     @Override
2322     public String toString()
2323     {
2324         final StringBuilder toString = new StringBuilder(this.getClass().getName());
2325         toString.append("[");
2326         try
2327         {
2328             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
2329         }
2330         catch (final Throwable tryAgain)
2331         {
2332             try
2333             {
2334                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
2335             }
2336             catch (final Throwable ignore)
2337             {
2338                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
2339             }
2340         }
2341         toString.append("]");
2342         return toString.toString();
2343     }
2344 }