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