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;
032import org.apache.log4j.Logger;
033
034/**
035 * Represents a Session EJB.
036 * MetafacadeLogic for EJB3SessionFacade
037 *
038 * @see EJB3SessionFacade
039 */
040public abstract class EJB3SessionFacadeLogic
041    extends MetafacadeBase
042    implements EJB3SessionFacade
043{
044    /**
045     * The underlying UML object
046     * @see Object
047     */
048    protected Object metaObject;
049
050    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
051     * @param metaObjectIn
052     * @param context
053     */
054    protected EJB3SessionFacadeLogic(Object metaObjectIn, String context)
055    {
056        super(metaObjectIn, getContext(context));
057        this.superService =
058           (Service)
059            MetafacadeFactory.getInstance().createFacadeImpl(
060                    "org.andromda.metafacades.uml.Service",
061                    metaObjectIn,
062                    getContext(context));
063        this.metaObject = metaObjectIn;
064    }
065
066    /**
067     * The logger instance.
068     */
069    private static final Logger logger = Logger.getLogger(EJB3SessionFacadeLogic.class);
070
071    /**
072     * Gets the context for this metafacade logic instance.
073     * @param context String. Set to EJB3SessionFacade if null
074     * @return context String
075     */
076    private static String getContext(String context)
077    {
078        if (context == null)
079        {
080            context = "org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade";
081        }
082        return context;
083    }
084
085    private Service superService;
086    private boolean superServiceInitialized = false;
087
088    /**
089     * Gets the Service parent instance.
090     * @return this.superService Service
091     */
092    private Service getSuperService()
093    {
094        if (!this.superServiceInitialized)
095        {
096            ((MetafacadeBase)this.superService).setMetafacadeContext(this.getMetafacadeContext());
097            this.superServiceInitialized = true;
098        }
099        return this.superService;
100    }
101
102    /** Reset context only for non-root metafacades
103     * @param context
104     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
105     */
106    @Override
107    public void resetMetafacadeContext(String context)
108    {
109        if (!this.contextRoot) // reset context only for non-root metafacades
110        {
111            context = getContext(context);  // to have same value as in original constructor call
112            setMetafacadeContext (context);
113            if (this.superServiceInitialized)
114            {
115                ((MetafacadeBase)this.superService).resetMetafacadeContext(context);
116            }
117        }
118    }
119
120    /**
121     * @return boolean true always
122     * @see EJB3SessionFacade
123     */
124    public boolean isEJB3SessionFacadeMetaType()
125    {
126        return true;
127    }
128
129    // --------------- attributes ---------------------
130
131   /**
132    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSyntheticCreateMethodAllowed()
133    * @return boolean
134    */
135    protected abstract boolean handleIsSyntheticCreateMethodAllowed();
136
137    private boolean __syntheticCreateMethodAllowed1a;
138    private boolean __syntheticCreateMethodAllowed1aSet = false;
139
140    /**
141     * Whether or not to allow a synthetic (auto generated) create method.
142     * @return (boolean)handleIsSyntheticCreateMethodAllowed()
143     */
144    public final boolean isSyntheticCreateMethodAllowed()
145    {
146        boolean syntheticCreateMethodAllowed1a = this.__syntheticCreateMethodAllowed1a;
147        if (!this.__syntheticCreateMethodAllowed1aSet)
148        {
149            // syntheticCreateMethodAllowed has no pre constraints
150            syntheticCreateMethodAllowed1a = handleIsSyntheticCreateMethodAllowed();
151            // syntheticCreateMethodAllowed has no post constraints
152            this.__syntheticCreateMethodAllowed1a = syntheticCreateMethodAllowed1a;
153            if (isMetafacadePropertyCachingEnabled())
154            {
155                this.__syntheticCreateMethodAllowed1aSet = true;
156            }
157        }
158        return syntheticCreateMethodAllowed1a;
159    }
160
161   /**
162    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getBusinessOperations()
163    * @return Collection
164    */
165    protected abstract Collection handleGetBusinessOperations();
166
167    private Collection __businessOperations2a;
168    private boolean __businessOperations2aSet = false;
169
170    /**
171     * All "business" operations for this Session EJB.  These are any operations that are NOT
172     * identified as create methods.
173     * @return (Collection)handleGetBusinessOperations()
174     */
175    public final Collection getBusinessOperations()
176    {
177        Collection businessOperations2a = this.__businessOperations2a;
178        if (!this.__businessOperations2aSet)
179        {
180            // businessOperations has no pre constraints
181            businessOperations2a = handleGetBusinessOperations();
182            // businessOperations has no post constraints
183            this.__businessOperations2a = businessOperations2a;
184            if (isMetafacadePropertyCachingEnabled())
185            {
186                this.__businessOperations2aSet = true;
187            }
188        }
189        return businessOperations2a;
190    }
191
192   /**
193    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getAllInstanceAttributes()
194    * @return List
195    */
196    protected abstract List handleGetAllInstanceAttributes();
197
198    private List __allInstanceAttributes3a;
199    private boolean __allInstanceAttributes3aSet = false;
200
201    /**
202     * All instanceAttributes for this session EJB. The list includes the instanceAttributes that
203     * are inherited from super classes. The list contains the inherited instanceAttributes first,
204     * followed by the instanceAttributes defined in this class.
205     * @return (List)handleGetAllInstanceAttributes()
206     */
207    public final List getAllInstanceAttributes()
208    {
209        List allInstanceAttributes3a = this.__allInstanceAttributes3a;
210        if (!this.__allInstanceAttributes3aSet)
211        {
212            // allInstanceAttributes has no pre constraints
213            allInstanceAttributes3a = handleGetAllInstanceAttributes();
214            // allInstanceAttributes has no post constraints
215            this.__allInstanceAttributes3a = allInstanceAttributes3a;
216            if (isMetafacadePropertyCachingEnabled())
217            {
218                this.__allInstanceAttributes3aSet = true;
219            }
220        }
221        return allInstanceAttributes3a;
222    }
223
224   /**
225    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getInheritedInstanceAttributes()
226    * @return List
227    */
228    protected abstract List handleGetInheritedInstanceAttributes();
229
230    private List __inheritedInstanceAttributes4a;
231    private boolean __inheritedInstanceAttributes4aSet = false;
232
233    /**
234     * Alll inherited instanceAttributes this session EJB.  The instanceAttributes are grouped by
235     * the class that defines the instanceAttributes, with instanceAttributes from the most removed
236     * super class first.
237     * @return (List)handleGetInheritedInstanceAttributes()
238     */
239    public final List getInheritedInstanceAttributes()
240    {
241        List inheritedInstanceAttributes4a = this.__inheritedInstanceAttributes4a;
242        if (!this.__inheritedInstanceAttributes4aSet)
243        {
244            // inheritedInstanceAttributes has no pre constraints
245            inheritedInstanceAttributes4a = handleGetInheritedInstanceAttributes();
246            // inheritedInstanceAttributes has no post constraints
247            this.__inheritedInstanceAttributes4a = inheritedInstanceAttributes4a;
248            if (isMetafacadePropertyCachingEnabled())
249            {
250                this.__inheritedInstanceAttributes4aSet = true;
251            }
252        }
253        return inheritedInstanceAttributes4a;
254    }
255
256   /**
257    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getJndiNameRemote()
258    * @return String
259    */
260    protected abstract String handleGetJndiNameRemote();
261
262    private String __jndiNameRemote5a;
263    private boolean __jndiNameRemote5aSet = false;
264
265    /**
266     * The JNDI name to which this session EJB remote interface is bound.
267     * @return (String)handleGetJndiNameRemote()
268     */
269    public final String getJndiNameRemote()
270    {
271        String jndiNameRemote5a = this.__jndiNameRemote5a;
272        if (!this.__jndiNameRemote5aSet)
273        {
274            // jndiNameRemote has no pre constraints
275            jndiNameRemote5a = handleGetJndiNameRemote();
276            // jndiNameRemote has no post constraints
277            this.__jndiNameRemote5a = jndiNameRemote5a;
278            if (isMetafacadePropertyCachingEnabled())
279            {
280                this.__jndiNameRemote5aSet = true;
281            }
282        }
283        return jndiNameRemote5a;
284    }
285
286   /**
287    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isStateful()
288    * @return boolean
289    */
290    protected abstract boolean handleIsStateful();
291
292    private boolean __stateful6a;
293    private boolean __stateful6aSet = false;
294
295    /**
296     * True/false depending on whether or not this Session EJB is stateful or not.
297     * @return (boolean)handleIsStateful()
298     */
299    public final boolean isStateful()
300    {
301        boolean stateful6a = this.__stateful6a;
302        if (!this.__stateful6aSet)
303        {
304            // stateful has no pre constraints
305            stateful6a = handleIsStateful();
306            // stateful has no post constraints
307            this.__stateful6a = stateful6a;
308            if (isMetafacadePropertyCachingEnabled())
309            {
310                this.__stateful6aSet = true;
311            }
312        }
313        return stateful6a;
314    }
315
316   /**
317    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isStateless()
318    * @return boolean
319    */
320    protected abstract boolean handleIsStateless();
321
322    private boolean __stateless7a;
323    private boolean __stateless7aSet = false;
324
325    /**
326     * True/false depending on whether or not this Session EJB is stateless or not.
327     * @return (boolean)handleIsStateless()
328     */
329    public final boolean isStateless()
330    {
331        boolean stateless7a = this.__stateless7a;
332        if (!this.__stateless7aSet)
333        {
334            // stateless has no pre constraints
335            stateless7a = handleIsStateless();
336            // stateless has no post constraints
337            this.__stateless7a = stateless7a;
338            if (isMetafacadePropertyCachingEnabled())
339            {
340                this.__stateless7aSet = true;
341            }
342        }
343        return stateless7a;
344    }
345
346   /**
347    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getType()
348    * @return String
349    */
350    protected abstract String handleGetType();
351
352    private String __type8a;
353    private boolean __type8aSet = false;
354
355    /**
356     * Returns the name of the type of this Session EJB, either Stateless or Stateful.
357     * @return (String)handleGetType()
358     */
359    public final String getType()
360    {
361        String type8a = this.__type8a;
362        if (!this.__type8aSet)
363        {
364            // type has no pre constraints
365            type8a = handleGetType();
366            // type has no post constraints
367            this.__type8a = type8a;
368            if (isMetafacadePropertyCachingEnabled())
369            {
370                this.__type8aSet = true;
371            }
372        }
373        return type8a;
374    }
375
376   /**
377    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getViewType()
378    * @return String
379    */
380    protected abstract String handleGetViewType();
381
382    private String __viewType9a;
383    private boolean __viewType9aSet = false;
384
385    /**
386     * A string indicating whether the Bean is a local or remotely accessable bean.
387     * @return (String)handleGetViewType()
388     */
389    public final String getViewType()
390    {
391        String viewType9a = this.__viewType9a;
392        if (!this.__viewType9aSet)
393        {
394            // viewType has no pre constraints
395            viewType9a = handleGetViewType();
396            // viewType has no post constraints
397            this.__viewType9a = viewType9a;
398            if (isMetafacadePropertyCachingEnabled())
399            {
400                this.__viewType9aSet = true;
401            }
402        }
403        return viewType9a;
404    }
405
406   /**
407    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getHomeInterfaceName()
408    * @return String
409    */
410    protected abstract String handleGetHomeInterfaceName();
411
412    private String __homeInterfaceName10a;
413    private boolean __homeInterfaceName10aSet = false;
414
415    /**
416     * A String representing the name of a home interface for this entity EJB.
417     * @return (String)handleGetHomeInterfaceName()
418     */
419    public final String getHomeInterfaceName()
420    {
421        String homeInterfaceName10a = this.__homeInterfaceName10a;
422        if (!this.__homeInterfaceName10aSet)
423        {
424            // homeInterfaceName has no pre constraints
425            homeInterfaceName10a = handleGetHomeInterfaceName();
426            // homeInterfaceName has no post constraints
427            this.__homeInterfaceName10a = homeInterfaceName10a;
428            if (isMetafacadePropertyCachingEnabled())
429            {
430                this.__homeInterfaceName10aSet = true;
431            }
432        }
433        return homeInterfaceName10a;
434    }
435
436   /**
437    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getTransactionType()
438    * @return String
439    */
440    protected abstract String handleGetTransactionType();
441
442    private String __transactionType11a;
443    private boolean __transactionType11aSet = false;
444
445    /**
446     * Gets the transaction type for this service (i.e. REQUIRED, etc)
447     * @return (String)handleGetTransactionType()
448     */
449    public final String getTransactionType()
450    {
451        String transactionType11a = this.__transactionType11a;
452        if (!this.__transactionType11aSet)
453        {
454            // transactionType has no pre constraints
455            transactionType11a = handleGetTransactionType();
456            // transactionType has no post constraints
457            this.__transactionType11a = transactionType11a;
458            if (isMetafacadePropertyCachingEnabled())
459            {
460                this.__transactionType11aSet = true;
461            }
462        }
463        return transactionType11a;
464    }
465
466   /**
467    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceName()
468    * @return String
469    */
470    protected abstract String handleGetServiceName();
471
472    private String __serviceName12a;
473    private boolean __serviceName12aSet = false;
474
475    /**
476     * Returns service bean name.
477     * @return (String)handleGetServiceName()
478     */
479    public final String getServiceName()
480    {
481        String serviceName12a = this.__serviceName12a;
482        if (!this.__serviceName12aSet)
483        {
484            // serviceName has no pre constraints
485            serviceName12a = handleGetServiceName();
486            // serviceName has no post constraints
487            this.__serviceName12a = serviceName12a;
488            if (isMetafacadePropertyCachingEnabled())
489            {
490                this.__serviceName12aSet = true;
491            }
492        }
493        return serviceName12a;
494    }
495
496   /**
497    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceLocalInterfaceName()
498    * @return String
499    */
500    protected abstract String handleGetServiceLocalInterfaceName();
501
502    private String __serviceLocalInterfaceName13a;
503    private boolean __serviceLocalInterfaceName13aSet = false;
504
505    /**
506     * Returns the service bean local interface name.
507     * @return (String)handleGetServiceLocalInterfaceName()
508     */
509    public final String getServiceLocalInterfaceName()
510    {
511        String serviceLocalInterfaceName13a = this.__serviceLocalInterfaceName13a;
512        if (!this.__serviceLocalInterfaceName13aSet)
513        {
514            // serviceLocalInterfaceName has no pre constraints
515            serviceLocalInterfaceName13a = handleGetServiceLocalInterfaceName();
516            // serviceLocalInterfaceName has no post constraints
517            this.__serviceLocalInterfaceName13a = serviceLocalInterfaceName13a;
518            if (isMetafacadePropertyCachingEnabled())
519            {
520                this.__serviceLocalInterfaceName13aSet = true;
521            }
522        }
523        return serviceLocalInterfaceName13a;
524    }
525
526   /**
527    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceRemoteInterfaceName()
528    * @return String
529    */
530    protected abstract String handleGetServiceRemoteInterfaceName();
531
532    private String __serviceRemoteInterfaceName14a;
533    private boolean __serviceRemoteInterfaceName14aSet = false;
534
535    /**
536     * Returns the service bean remote interface name.
537     * @return (String)handleGetServiceRemoteInterfaceName()
538     */
539    public final String getServiceRemoteInterfaceName()
540    {
541        String serviceRemoteInterfaceName14a = this.__serviceRemoteInterfaceName14a;
542        if (!this.__serviceRemoteInterfaceName14aSet)
543        {
544            // serviceRemoteInterfaceName has no pre constraints
545            serviceRemoteInterfaceName14a = handleGetServiceRemoteInterfaceName();
546            // serviceRemoteInterfaceName has no post constraints
547            this.__serviceRemoteInterfaceName14a = serviceRemoteInterfaceName14a;
548            if (isMetafacadePropertyCachingEnabled())
549            {
550                this.__serviceRemoteInterfaceName14aSet = true;
551            }
552        }
553        return serviceRemoteInterfaceName14a;
554    }
555
556   /**
557    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceImplementationName()
558    * @return String
559    */
560    protected abstract String handleGetServiceImplementationName();
561
562    private String __serviceImplementationName15a;
563    private boolean __serviceImplementationName15aSet = false;
564
565    /**
566     * Returns the service bean implementation name.
567     * @return (String)handleGetServiceImplementationName()
568     */
569    public final String getServiceImplementationName()
570    {
571        String serviceImplementationName15a = this.__serviceImplementationName15a;
572        if (!this.__serviceImplementationName15aSet)
573        {
574            // serviceImplementationName has no pre constraints
575            serviceImplementationName15a = handleGetServiceImplementationName();
576            // serviceImplementationName has no post constraints
577            this.__serviceImplementationName15a = serviceImplementationName15a;
578            if (isMetafacadePropertyCachingEnabled())
579            {
580                this.__serviceImplementationName15aSet = true;
581            }
582        }
583        return serviceImplementationName15a;
584    }
585
586   /**
587    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceListenerName()
588    * @return String
589    */
590    protected abstract String handleGetServiceListenerName();
591
592    private String __serviceListenerName16a;
593    private boolean __serviceListenerName16aSet = false;
594
595    /**
596     * Returns the service bean callback listener name.
597     * @return (String)handleGetServiceListenerName()
598     */
599    public final String getServiceListenerName()
600    {
601        String serviceListenerName16a = this.__serviceListenerName16a;
602        if (!this.__serviceListenerName16aSet)
603        {
604            // serviceListenerName has no pre constraints
605            serviceListenerName16a = handleGetServiceListenerName();
606            // serviceListenerName has no post constraints
607            this.__serviceListenerName16a = serviceListenerName16a;
608            if (isMetafacadePropertyCachingEnabled())
609            {
610                this.__serviceListenerName16aSet = true;
611            }
612        }
613        return serviceListenerName16a;
614    }
615
616   /**
617    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceImplementationName()
618    * @return String
619    */
620    protected abstract String handleGetFullyQualifiedServiceImplementationName();
621
622    private String __fullyQualifiedServiceImplementationName17a;
623    private boolean __fullyQualifiedServiceImplementationName17aSet = false;
624
625    /**
626     * Returns the fully qualified service bean implementation name.
627     * @return (String)handleGetFullyQualifiedServiceImplementationName()
628     */
629    public final String getFullyQualifiedServiceImplementationName()
630    {
631        String fullyQualifiedServiceImplementationName17a = this.__fullyQualifiedServiceImplementationName17a;
632        if (!this.__fullyQualifiedServiceImplementationName17aSet)
633        {
634            // fullyQualifiedServiceImplementationName has no pre constraints
635            fullyQualifiedServiceImplementationName17a = handleGetFullyQualifiedServiceImplementationName();
636            // fullyQualifiedServiceImplementationName has no post constraints
637            this.__fullyQualifiedServiceImplementationName17a = fullyQualifiedServiceImplementationName17a;
638            if (isMetafacadePropertyCachingEnabled())
639            {
640                this.__fullyQualifiedServiceImplementationName17aSet = true;
641            }
642        }
643        return fullyQualifiedServiceImplementationName17a;
644    }
645
646   /**
647    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceListenerName()
648    * @return String
649    */
650    protected abstract String handleGetFullyQualifiedServiceListenerName();
651
652    private String __fullyQualifiedServiceListenerName18a;
653    private boolean __fullyQualifiedServiceListenerName18aSet = false;
654
655    /**
656     * Returns the fully qualified service bean listener name.
657     * @return (String)handleGetFullyQualifiedServiceListenerName()
658     */
659    public final String getFullyQualifiedServiceListenerName()
660    {
661        String fullyQualifiedServiceListenerName18a = this.__fullyQualifiedServiceListenerName18a;
662        if (!this.__fullyQualifiedServiceListenerName18aSet)
663        {
664            // fullyQualifiedServiceListenerName has no pre constraints
665            fullyQualifiedServiceListenerName18a = handleGetFullyQualifiedServiceListenerName();
666            // fullyQualifiedServiceListenerName has no post constraints
667            this.__fullyQualifiedServiceListenerName18a = fullyQualifiedServiceListenerName18a;
668            if (isMetafacadePropertyCachingEnabled())
669            {
670                this.__fullyQualifiedServiceListenerName18aSet = true;
671            }
672        }
673        return fullyQualifiedServiceListenerName18a;
674    }
675
676   /**
677    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceLocalInterfaceName()
678    * @return String
679    */
680    protected abstract String handleGetFullyQualifiedServiceLocalInterfaceName();
681
682    private String __fullyQualifiedServiceLocalInterfaceName19a;
683    private boolean __fullyQualifiedServiceLocalInterfaceName19aSet = false;
684
685    /**
686     * Returns the fully qualified service bean local interface name.
687     * @return (String)handleGetFullyQualifiedServiceLocalInterfaceName()
688     */
689    public final String getFullyQualifiedServiceLocalInterfaceName()
690    {
691        String fullyQualifiedServiceLocalInterfaceName19a = this.__fullyQualifiedServiceLocalInterfaceName19a;
692        if (!this.__fullyQualifiedServiceLocalInterfaceName19aSet)
693        {
694            // fullyQualifiedServiceLocalInterfaceName has no pre constraints
695            fullyQualifiedServiceLocalInterfaceName19a = handleGetFullyQualifiedServiceLocalInterfaceName();
696            // fullyQualifiedServiceLocalInterfaceName has no post constraints
697            this.__fullyQualifiedServiceLocalInterfaceName19a = fullyQualifiedServiceLocalInterfaceName19a;
698            if (isMetafacadePropertyCachingEnabled())
699            {
700                this.__fullyQualifiedServiceLocalInterfaceName19aSet = true;
701            }
702        }
703        return fullyQualifiedServiceLocalInterfaceName19a;
704    }
705
706   /**
707    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceRemoteInterfaceName()
708    * @return String
709    */
710    protected abstract String handleGetFullyQualifiedServiceRemoteInterfaceName();
711
712    private String __fullyQualifiedServiceRemoteInterfaceName20a;
713    private boolean __fullyQualifiedServiceRemoteInterfaceName20aSet = false;
714
715    /**
716     * Returns the fully qualified service bean remote interface name.
717     * @return (String)handleGetFullyQualifiedServiceRemoteInterfaceName()
718     */
719    public final String getFullyQualifiedServiceRemoteInterfaceName()
720    {
721        String fullyQualifiedServiceRemoteInterfaceName20a = this.__fullyQualifiedServiceRemoteInterfaceName20a;
722        if (!this.__fullyQualifiedServiceRemoteInterfaceName20aSet)
723        {
724            // fullyQualifiedServiceRemoteInterfaceName has no pre constraints
725            fullyQualifiedServiceRemoteInterfaceName20a = handleGetFullyQualifiedServiceRemoteInterfaceName();
726            // fullyQualifiedServiceRemoteInterfaceName has no post constraints
727            this.__fullyQualifiedServiceRemoteInterfaceName20a = fullyQualifiedServiceRemoteInterfaceName20a;
728            if (isMetafacadePropertyCachingEnabled())
729            {
730                this.__fullyQualifiedServiceRemoteInterfaceName20aSet = true;
731            }
732        }
733        return fullyQualifiedServiceRemoteInterfaceName20a;
734    }
735
736   /**
737    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getPersistenceContextType()
738    * @return String
739    */
740    protected abstract String handleGetPersistenceContextType();
741
742    private String __persistenceContextType21a;
743    private boolean __persistenceContextType21aSet = false;
744
745    /**
746     * Specifies whether the persistence context for this EntityManager is transaction scoped or
747     * extended.
748     * @return (String)handleGetPersistenceContextType()
749     */
750    public final String getPersistenceContextType()
751    {
752        String persistenceContextType21a = this.__persistenceContextType21a;
753        if (!this.__persistenceContextType21aSet)
754        {
755            // persistenceContextType has no pre constraints
756            persistenceContextType21a = handleGetPersistenceContextType();
757            // persistenceContextType has no post constraints
758            this.__persistenceContextType21a = persistenceContextType21a;
759            if (isMetafacadePropertyCachingEnabled())
760            {
761                this.__persistenceContextType21aSet = true;
762            }
763        }
764        return persistenceContextType21a;
765    }
766
767   /**
768    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getPersistenceContextUnitName()
769    * @return String
770    */
771    protected abstract String handleGetPersistenceContextUnitName();
772
773    private String __persistenceContextUnitName22a;
774    private boolean __persistenceContextUnitName22aSet = false;
775
776    /**
777     * Returns the persistence context unit name for the injected EntityManger.  This is only
778     * required if multiple persistence units exists.
779     * @return (String)handleGetPersistenceContextUnitName()
780     */
781    public final String getPersistenceContextUnitName()
782    {
783        String persistenceContextUnitName22a = this.__persistenceContextUnitName22a;
784        if (!this.__persistenceContextUnitName22aSet)
785        {
786            // persistenceContextUnitName has no pre constraints
787            persistenceContextUnitName22a = handleGetPersistenceContextUnitName();
788            // persistenceContextUnitName has no post constraints
789            this.__persistenceContextUnitName22a = persistenceContextUnitName22a;
790            if (isMetafacadePropertyCachingEnabled())
791            {
792                this.__persistenceContextUnitName22aSet = true;
793            }
794        }
795        return persistenceContextUnitName22a;
796    }
797
798   /**
799    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getPersistenceContextReferences()
800    * @return Collection
801    */
802    protected abstract Collection handleGetPersistenceContextReferences();
803
804    private Collection __persistenceContextReferences23a;
805    private boolean __persistenceContextReferences23aSet = false;
806
807    /**
808     * Returns the Collection of target objects from the service bean class that have a stereotype
809     * of PersistenceContext.
810     * @return (Collection)handleGetPersistenceContextReferences()
811     */
812    public final Collection getPersistenceContextReferences()
813    {
814        Collection persistenceContextReferences23a = this.__persistenceContextReferences23a;
815        if (!this.__persistenceContextReferences23aSet)
816        {
817            // persistenceContextReferences has no pre constraints
818            persistenceContextReferences23a = handleGetPersistenceContextReferences();
819            // persistenceContextReferences has no post constraints
820            this.__persistenceContextReferences23a = persistenceContextReferences23a;
821            if (isMetafacadePropertyCachingEnabled())
822            {
823                this.__persistenceContextReferences23aSet = true;
824            }
825        }
826        return persistenceContextReferences23a;
827    }
828
829   /**
830    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceName()
831    * @return String
832    */
833    protected abstract String handleGetFullyQualifiedServiceName();
834
835    private String __fullyQualifiedServiceName24a;
836    private boolean __fullyQualifiedServiceName24aSet = false;
837
838    /**
839     * Returns the fully qualified service bean name.
840     * @return (String)handleGetFullyQualifiedServiceName()
841     */
842    public final String getFullyQualifiedServiceName()
843    {
844        String fullyQualifiedServiceName24a = this.__fullyQualifiedServiceName24a;
845        if (!this.__fullyQualifiedServiceName24aSet)
846        {
847            // fullyQualifiedServiceName has no pre constraints
848            fullyQualifiedServiceName24a = handleGetFullyQualifiedServiceName();
849            // fullyQualifiedServiceName has no post constraints
850            this.__fullyQualifiedServiceName24a = fullyQualifiedServiceName24a;
851            if (isMetafacadePropertyCachingEnabled())
852            {
853                this.__fullyQualifiedServiceName24aSet = true;
854            }
855        }
856        return fullyQualifiedServiceName24a;
857    }
858
859   /**
860    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getRolesAllowed()
861    * @return String
862    */
863    protected abstract String handleGetRolesAllowed();
864
865    private String __rolesAllowed25a;
866    private boolean __rolesAllowed25aSet = false;
867
868    /**
869     * Returns the comma separated list of roles allowd to execute all operations in this session
870     * bean.  This is defined by actor dependencies on the session bean.
871     * @return (String)handleGetRolesAllowed()
872     */
873    public final String getRolesAllowed()
874    {
875        String rolesAllowed25a = this.__rolesAllowed25a;
876        if (!this.__rolesAllowed25aSet)
877        {
878            // rolesAllowed has no pre constraints
879            rolesAllowed25a = handleGetRolesAllowed();
880            // rolesAllowed has no post constraints
881            this.__rolesAllowed25a = rolesAllowed25a;
882            if (isMetafacadePropertyCachingEnabled())
883            {
884                this.__rolesAllowed25aSet = true;
885            }
886        }
887        return rolesAllowed25a;
888    }
889
890   /**
891    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isPermitAll()
892    * @return boolean
893    */
894    protected abstract boolean handleIsPermitAll();
895
896    private boolean __permitAll26a;
897    private boolean __permitAll26aSet = false;
898
899    /**
900     * Returns true if all roles are permitted to execute all operations in this session bean.  This
901     * is specified in the andromda.ejb.security.permitAll tagged value.  It will override the
902     * andromda.ejb.security.rolesAllowed tagged value.
903     * @return (boolean)handleIsPermitAll()
904     */
905    public final boolean isPermitAll()
906    {
907        boolean permitAll26a = this.__permitAll26a;
908        if (!this.__permitAll26aSet)
909        {
910            // permitAll has no pre constraints
911            permitAll26a = handleIsPermitAll();
912            // permitAll has no post constraints
913            this.__permitAll26a = permitAll26a;
914            if (isMetafacadePropertyCachingEnabled())
915            {
916                this.__permitAll26aSet = true;
917            }
918        }
919        return permitAll26a;
920    }
921
922   /**
923    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSecurityRealm()
924    * @return String
925    */
926    protected abstract String handleGetSecurityRealm();
927
928    private String __securityRealm27a;
929    private boolean __securityRealm27aSet = false;
930
931    /**
932     * Returns the security domain value.  Specified using the securityRealm namespace property or
933     * overridden in the andromda.ejb.security.realm tagged value.
934     * @return (String)handleGetSecurityRealm()
935     */
936    public final String getSecurityRealm()
937    {
938        String securityRealm27a = this.__securityRealm27a;
939        if (!this.__securityRealm27aSet)
940        {
941            // securityRealm has no pre constraints
942            securityRealm27a = handleGetSecurityRealm();
943            // securityRealm has no post constraints
944            this.__securityRealm27a = securityRealm27a;
945            if (isMetafacadePropertyCachingEnabled())
946            {
947                this.__securityRealm27aSet = true;
948            }
949        }
950        return securityRealm27a;
951    }
952
953   /**
954    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getPersistenceContainer()
955    * @return String
956    */
957    protected abstract String handleGetPersistenceContainer();
958
959    private String __persistenceContainer28a;
960    private boolean __persistenceContainer28aSet = false;
961
962    /**
963     * Returns the EJB3 container engine (jboss, weblogic).
964     * @return (String)handleGetPersistenceContainer()
965     */
966    public final String getPersistenceContainer()
967    {
968        String persistenceContainer28a = this.__persistenceContainer28a;
969        if (!this.__persistenceContainer28aSet)
970        {
971            // persistenceContainer has no pre constraints
972            persistenceContainer28a = handleGetPersistenceContainer();
973            // persistenceContainer has no post constraints
974            this.__persistenceContainer28a = persistenceContainer28a;
975            if (isMetafacadePropertyCachingEnabled())
976            {
977                this.__persistenceContainer28aSet = true;
978            }
979        }
980        return persistenceContainer28a;
981    }
982
983   /**
984    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isPersistenceContainerJboss()
985    * @return boolean
986    */
987    protected abstract boolean handleIsPersistenceContainerJboss();
988
989    private boolean __persistenceContainerJboss29a;
990    private boolean __persistenceContainerJboss29aSet = false;
991
992    /**
993     * Returns true if the persistence container is the JBoss engine.
994     * @return (boolean)handleIsPersistenceContainerJboss()
995     */
996    public final boolean isPersistenceContainerJboss()
997    {
998        boolean persistenceContainerJboss29a = this.__persistenceContainerJboss29a;
999        if (!this.__persistenceContainerJboss29aSet)
1000        {
1001            // persistenceContainerJboss has no pre constraints
1002            persistenceContainerJboss29a = handleIsPersistenceContainerJboss();
1003            // persistenceContainerJboss has no post constraints
1004            this.__persistenceContainerJboss29a = persistenceContainerJboss29a;
1005            if (isMetafacadePropertyCachingEnabled())
1006            {
1007                this.__persistenceContainerJboss29aSet = true;
1008            }
1009        }
1010        return persistenceContainerJboss29a;
1011    }
1012
1013   /**
1014    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isPersistenceContainerWeblogic()
1015    * @return boolean
1016    */
1017    protected abstract boolean handleIsPersistenceContainerWeblogic();
1018
1019    private boolean __persistenceContainerWeblogic30a;
1020    private boolean __persistenceContainerWeblogic30aSet = false;
1021
1022    /**
1023     * Returns true if the persistence container is the Weblogic engine.
1024     * @return (boolean)handleIsPersistenceContainerWeblogic()
1025     */
1026    public final boolean isPersistenceContainerWeblogic()
1027    {
1028        boolean persistenceContainerWeblogic30a = this.__persistenceContainerWeblogic30a;
1029        if (!this.__persistenceContainerWeblogic30aSet)
1030        {
1031            // persistenceContainerWeblogic has no pre constraints
1032            persistenceContainerWeblogic30a = handleIsPersistenceContainerWeblogic();
1033            // persistenceContainerWeblogic has no post constraints
1034            this.__persistenceContainerWeblogic30a = persistenceContainerWeblogic30a;
1035            if (isMetafacadePropertyCachingEnabled())
1036            {
1037                this.__persistenceContainerWeblogic30aSet = true;
1038            }
1039        }
1040        return persistenceContainerWeblogic30a;
1041    }
1042
1043   /**
1044    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getRunAs()
1045    * @return String
1046    */
1047    protected abstract String handleGetRunAs();
1048
1049    private String __runAs31a;
1050    private boolean __runAs31aSet = false;
1051
1052    /**
1053     * Returns the run-as identity for the session bean which is used to establish the identity the
1054     * bean will use when making calls.  It does not affect the identity of the callers.
1055     * @return (String)handleGetRunAs()
1056     */
1057    public final String getRunAs()
1058    {
1059        String runAs31a = this.__runAs31a;
1060        if (!this.__runAs31aSet)
1061        {
1062            // runAs has no pre constraints
1063            runAs31a = handleGetRunAs();
1064            // runAs has no post constraints
1065            this.__runAs31a = runAs31a;
1066            if (isMetafacadePropertyCachingEnabled())
1067            {
1068                this.__runAs31aSet = true;
1069            }
1070        }
1071        return runAs31a;
1072    }
1073
1074   /**
1075    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isDenyAll()
1076    * @return boolean
1077    */
1078    protected abstract boolean handleIsDenyAll();
1079
1080    private boolean __denyAll32a;
1081    private boolean __denyAll32aSet = false;
1082
1083    /**
1084     * Returns true if NO roles are permitted to execute operations in this bean.  This is specified
1085     * in the andromda.ejb.security.denyAll tagged value. Typically, it will be overridden at the
1086     * method level using the andromda.ejb.security.rolesAllowed tagged value.
1087     * @return (boolean)handleIsDenyAll()
1088     */
1089    public final boolean isDenyAll()
1090    {
1091        boolean denyAll32a = this.__denyAll32a;
1092        if (!this.__denyAll32aSet)
1093        {
1094            // denyAll has no pre constraints
1095            denyAll32a = handleIsDenyAll();
1096            // denyAll has no post constraints
1097            this.__denyAll32a = denyAll32a;
1098            if (isMetafacadePropertyCachingEnabled())
1099            {
1100                this.__denyAll32aSet = true;
1101            }
1102        }
1103        return denyAll32a;
1104    }
1105
1106   /**
1107    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getTransactionManagement()
1108    * @return String
1109    */
1110    protected abstract String handleGetTransactionManagement();
1111
1112    private String __transactionManagement33a;
1113    private boolean __transactionManagement33aSet = false;
1114
1115    /**
1116     * Returns the transaction demarcation strategy for this bean.  Typically, this will return BEAN
1117     * for non default CONTAINER managed beans.  Unless specified, this will return null indicating
1118     * CONTAINER transaction demarcation.
1119     * @return (String)handleGetTransactionManagement()
1120     */
1121    public final String getTransactionManagement()
1122    {
1123        String transactionManagement33a = this.__transactionManagement33a;
1124        if (!this.__transactionManagement33aSet)
1125        {
1126            // transactionManagement has no pre constraints
1127            transactionManagement33a = handleGetTransactionManagement();
1128            // transactionManagement has no post constraints
1129            this.__transactionManagement33a = transactionManagement33a;
1130            if (isMetafacadePropertyCachingEnabled())
1131            {
1132                this.__transactionManagement33aSet = true;
1133            }
1134        }
1135        return transactionManagement33a;
1136    }
1137
1138   /**
1139    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isTransactionManagementBean()
1140    * @return boolean
1141    */
1142    protected abstract boolean handleIsTransactionManagementBean();
1143
1144    private boolean __transactionManagementBean34a;
1145    private boolean __transactionManagementBean34aSet = false;
1146
1147    /**
1148     * Returns true if the transaction demarcation strategy is bean managedfor this bean.
1149     * @return (boolean)handleIsTransactionManagementBean()
1150     */
1151    public final boolean isTransactionManagementBean()
1152    {
1153        boolean transactionManagementBean34a = this.__transactionManagementBean34a;
1154        if (!this.__transactionManagementBean34aSet)
1155        {
1156            // transactionManagementBean has no pre constraints
1157            transactionManagementBean34a = handleIsTransactionManagementBean();
1158            // transactionManagementBean has no post constraints
1159            this.__transactionManagementBean34a = transactionManagementBean34a;
1160            if (isMetafacadePropertyCachingEnabled())
1161            {
1162                this.__transactionManagementBean34aSet = true;
1163            }
1164        }
1165        return transactionManagementBean34a;
1166    }
1167
1168   /**
1169    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getResourceUserTransactionReferences()
1170    * @return Collection
1171    */
1172    protected abstract Collection handleGetResourceUserTransactionReferences();
1173
1174    private Collection __resourceUserTransactionReferences35a;
1175    private boolean __resourceUserTransactionReferences35aSet = false;
1176
1177    /**
1178     * Returns the Collection of dependencies from the service bean that have stereotype of
1179     * ResourceRef and the target has a stereotype of UserTransaction.
1180     * @return (Collection)handleGetResourceUserTransactionReferences()
1181     */
1182    public final Collection getResourceUserTransactionReferences()
1183    {
1184        Collection resourceUserTransactionReferences35a = this.__resourceUserTransactionReferences35a;
1185        if (!this.__resourceUserTransactionReferences35aSet)
1186        {
1187            // resourceUserTransactionReferences has no pre constraints
1188            resourceUserTransactionReferences35a = handleGetResourceUserTransactionReferences();
1189            // resourceUserTransactionReferences has no post constraints
1190            this.__resourceUserTransactionReferences35a = resourceUserTransactionReferences35a;
1191            if (isMetafacadePropertyCachingEnabled())
1192            {
1193                this.__resourceUserTransactionReferences35aSet = true;
1194            }
1195        }
1196        return resourceUserTransactionReferences35a;
1197    }
1198
1199   /**
1200    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getResourceDataSourceReferences()
1201    * @return Collection
1202    */
1203    protected abstract Collection handleGetResourceDataSourceReferences();
1204
1205    private Collection __resourceDataSourceReferences36a;
1206    private boolean __resourceDataSourceReferences36aSet = false;
1207
1208    /**
1209     * Returns the Collection of dependencies from the service bean that have stereotype of
1210     * ResourceRef and the target has a stereotype of DataSource.
1211     * @return (Collection)handleGetResourceDataSourceReferences()
1212     */
1213    public final Collection getResourceDataSourceReferences()
1214    {
1215        Collection resourceDataSourceReferences36a = this.__resourceDataSourceReferences36a;
1216        if (!this.__resourceDataSourceReferences36aSet)
1217        {
1218            // resourceDataSourceReferences has no pre constraints
1219            resourceDataSourceReferences36a = handleGetResourceDataSourceReferences();
1220            // resourceDataSourceReferences has no post constraints
1221            this.__resourceDataSourceReferences36a = resourceDataSourceReferences36a;
1222            if (isMetafacadePropertyCachingEnabled())
1223            {
1224                this.__resourceDataSourceReferences36aSet = true;
1225            }
1226        }
1227        return resourceDataSourceReferences36a;
1228    }
1229
1230   /**
1231    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getMessageDrivenReferences()
1232    * @return Collection
1233    */
1234    protected abstract Collection handleGetMessageDrivenReferences();
1235
1236    private Collection __messageDrivenReferences37a;
1237    private boolean __messageDrivenReferences37aSet = false;
1238
1239    /**
1240     * Returns the Collection of dependencies from the service bean class where the target class has
1241     * a stereotype of MessageDriven.
1242     * @return (Collection)handleGetMessageDrivenReferences()
1243     */
1244    public final Collection getMessageDrivenReferences()
1245    {
1246        Collection messageDrivenReferences37a = this.__messageDrivenReferences37a;
1247        if (!this.__messageDrivenReferences37aSet)
1248        {
1249            // messageDrivenReferences has no pre constraints
1250            messageDrivenReferences37a = handleGetMessageDrivenReferences();
1251            // messageDrivenReferences has no post constraints
1252            this.__messageDrivenReferences37a = messageDrivenReferences37a;
1253            if (isMetafacadePropertyCachingEnabled())
1254            {
1255                this.__messageDrivenReferences37aSet = true;
1256            }
1257        }
1258        return messageDrivenReferences37a;
1259    }
1260
1261   /**
1262    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceDelegateName()
1263    * @return String
1264    */
1265    protected abstract String handleGetServiceDelegateName();
1266
1267    private String __serviceDelegateName38a;
1268    private boolean __serviceDelegateName38aSet = false;
1269
1270    /**
1271     * Return the service bean delegate class name.
1272     * @return (String)handleGetServiceDelegateName()
1273     */
1274    public final String getServiceDelegateName()
1275    {
1276        String serviceDelegateName38a = this.__serviceDelegateName38a;
1277        if (!this.__serviceDelegateName38aSet)
1278        {
1279            // serviceDelegateName has no pre constraints
1280            serviceDelegateName38a = handleGetServiceDelegateName();
1281            // serviceDelegateName has no post constraints
1282            this.__serviceDelegateName38a = serviceDelegateName38a;
1283            if (isMetafacadePropertyCachingEnabled())
1284            {
1285                this.__serviceDelegateName38aSet = true;
1286            }
1287        }
1288        return serviceDelegateName38a;
1289    }
1290
1291   /**
1292    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceDelegateName()
1293    * @return String
1294    */
1295    protected abstract String handleGetFullyQualifiedServiceDelegateName();
1296
1297    private String __fullyQualifiedServiceDelegateName39a;
1298    private boolean __fullyQualifiedServiceDelegateName39aSet = false;
1299
1300    /**
1301     * Returns the fully qualified service bean delegate class name.
1302     * @return (String)handleGetFullyQualifiedServiceDelegateName()
1303     */
1304    public final String getFullyQualifiedServiceDelegateName()
1305    {
1306        String fullyQualifiedServiceDelegateName39a = this.__fullyQualifiedServiceDelegateName39a;
1307        if (!this.__fullyQualifiedServiceDelegateName39aSet)
1308        {
1309            // fullyQualifiedServiceDelegateName has no pre constraints
1310            fullyQualifiedServiceDelegateName39a = handleGetFullyQualifiedServiceDelegateName();
1311            // fullyQualifiedServiceDelegateName has no post constraints
1312            this.__fullyQualifiedServiceDelegateName39a = fullyQualifiedServiceDelegateName39a;
1313            if (isMetafacadePropertyCachingEnabled())
1314            {
1315                this.__fullyQualifiedServiceDelegateName39aSet = true;
1316            }
1317        }
1318        return fullyQualifiedServiceDelegateName39a;
1319    }
1320
1321   /**
1322    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getJndiNameLocal()
1323    * @return String
1324    */
1325    protected abstract String handleGetJndiNameLocal();
1326
1327    private String __jndiNameLocal40a;
1328    private boolean __jndiNameLocal40aSet = false;
1329
1330    /**
1331     * The JNDI name to which this session EJB local interface is bound.
1332     * @return (String)handleGetJndiNameLocal()
1333     */
1334    public final String getJndiNameLocal()
1335    {
1336        String jndiNameLocal40a = this.__jndiNameLocal40a;
1337        if (!this.__jndiNameLocal40aSet)
1338        {
1339            // jndiNameLocal has no pre constraints
1340            jndiNameLocal40a = handleGetJndiNameLocal();
1341            // jndiNameLocal has no post constraints
1342            this.__jndiNameLocal40a = jndiNameLocal40a;
1343            if (isMetafacadePropertyCachingEnabled())
1344            {
1345                this.__jndiNameLocal40aSet = true;
1346            }
1347        }
1348        return jndiNameLocal40a;
1349    }
1350
1351   /**
1352    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeLocal()
1353    * @return boolean
1354    */
1355    protected abstract boolean handleIsViewTypeLocal();
1356
1357    private boolean __viewTypeLocal41a;
1358    private boolean __viewTypeLocal41aSet = false;
1359
1360    /**
1361     * Return true if the view type accessability for this bean is local or both.
1362     * Always generate a local interface is this session bean is a Seam component.
1363     * @return (boolean)handleIsViewTypeLocal()
1364     */
1365    public final boolean isViewTypeLocal()
1366    {
1367        boolean viewTypeLocal41a = this.__viewTypeLocal41a;
1368        if (!this.__viewTypeLocal41aSet)
1369        {
1370            // viewTypeLocal has no pre constraints
1371            viewTypeLocal41a = handleIsViewTypeLocal();
1372            // viewTypeLocal has no post constraints
1373            this.__viewTypeLocal41a = viewTypeLocal41a;
1374            if (isMetafacadePropertyCachingEnabled())
1375            {
1376                this.__viewTypeLocal41aSet = true;
1377            }
1378        }
1379        return viewTypeLocal41a;
1380    }
1381
1382   /**
1383    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeRemote()
1384    * @return boolean
1385    */
1386    protected abstract boolean handleIsViewTypeRemote();
1387
1388    private boolean __viewTypeRemote42a;
1389    private boolean __viewTypeRemote42aSet = false;
1390
1391    /**
1392     * Return true if the view type accessability for this bean is remote or both.
1393     * @return (boolean)handleIsViewTypeRemote()
1394     */
1395    public final boolean isViewTypeRemote()
1396    {
1397        boolean viewTypeRemote42a = this.__viewTypeRemote42a;
1398        if (!this.__viewTypeRemote42aSet)
1399        {
1400            // viewTypeRemote has no pre constraints
1401            viewTypeRemote42a = handleIsViewTypeRemote();
1402            // viewTypeRemote has no post constraints
1403            this.__viewTypeRemote42a = viewTypeRemote42a;
1404            if (isMetafacadePropertyCachingEnabled())
1405            {
1406                this.__viewTypeRemote42aSet = true;
1407            }
1408        }
1409        return viewTypeRemote42a;
1410    }
1411
1412   /**
1413    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getInterceptorReferences()
1414    * @return Collection
1415    */
1416    protected abstract Collection handleGetInterceptorReferences();
1417
1418    private Collection __interceptorReferences43a;
1419    private boolean __interceptorReferences43aSet = false;
1420
1421    /**
1422     * Returns the Collection of target elements from the service bean class where  the target class
1423     * has a stereotype of Interceptor.
1424     * @return (Collection)handleGetInterceptorReferences()
1425     */
1426    public final Collection getInterceptorReferences()
1427    {
1428        Collection interceptorReferences43a = this.__interceptorReferences43a;
1429        if (!this.__interceptorReferences43aSet)
1430        {
1431            // interceptorReferences has no pre constraints
1432            interceptorReferences43a = handleGetInterceptorReferences();
1433            // interceptorReferences has no post constraints
1434            this.__interceptorReferences43a = interceptorReferences43a;
1435            if (isMetafacadePropertyCachingEnabled())
1436            {
1437                this.__interceptorReferences43aSet = true;
1438            }
1439        }
1440        return interceptorReferences43a;
1441    }
1442
1443   /**
1444    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getDefaultExceptionName()
1445    * @return String
1446    */
1447    protected abstract String handleGetDefaultExceptionName();
1448
1449    private String __defaultExceptionName44a;
1450    private boolean __defaultExceptionName44aSet = false;
1451
1452    /**
1453     * The name of the default exception to be generated for this service.
1454     * @return (String)handleGetDefaultExceptionName()
1455     */
1456    public final String getDefaultExceptionName()
1457    {
1458        String defaultExceptionName44a = this.__defaultExceptionName44a;
1459        if (!this.__defaultExceptionName44aSet)
1460        {
1461            // defaultExceptionName has no pre constraints
1462            defaultExceptionName44a = handleGetDefaultExceptionName();
1463            // defaultExceptionName has no post constraints
1464            this.__defaultExceptionName44a = defaultExceptionName44a;
1465            if (isMetafacadePropertyCachingEnabled())
1466            {
1467                this.__defaultExceptionName44aSet = true;
1468            }
1469        }
1470        return defaultExceptionName44a;
1471    }
1472
1473   /**
1474    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedDefaultExceptionName()
1475    * @return String
1476    */
1477    protected abstract String handleGetFullyQualifiedDefaultExceptionName();
1478
1479    private String __fullyQualifiedDefaultExceptionName45a;
1480    private boolean __fullyQualifiedDefaultExceptionName45aSet = false;
1481
1482    /**
1483     * The fully qualified class name of the default exception.
1484     * @return (String)handleGetFullyQualifiedDefaultExceptionName()
1485     */
1486    public final String getFullyQualifiedDefaultExceptionName()
1487    {
1488        String fullyQualifiedDefaultExceptionName45a = this.__fullyQualifiedDefaultExceptionName45a;
1489        if (!this.__fullyQualifiedDefaultExceptionName45aSet)
1490        {
1491            // fullyQualifiedDefaultExceptionName has no pre constraints
1492            fullyQualifiedDefaultExceptionName45a = handleGetFullyQualifiedDefaultExceptionName();
1493            // fullyQualifiedDefaultExceptionName has no post constraints
1494            this.__fullyQualifiedDefaultExceptionName45a = fullyQualifiedDefaultExceptionName45a;
1495            if (isMetafacadePropertyCachingEnabled())
1496            {
1497                this.__fullyQualifiedDefaultExceptionName45aSet = true;
1498            }
1499        }
1500        return fullyQualifiedDefaultExceptionName45a;
1501    }
1502
1503   /**
1504    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isAllowDefaultServiceException()
1505    * @return boolean
1506    */
1507    protected abstract boolean handleIsAllowDefaultServiceException();
1508
1509    private boolean __allowDefaultServiceException46a;
1510    private boolean __allowDefaultServiceException46aSet = false;
1511
1512    /**
1513     * Indicates whether or not a default service exception should be allowed.
1514     * @return (boolean)handleIsAllowDefaultServiceException()
1515     */
1516    public final boolean isAllowDefaultServiceException()
1517    {
1518        boolean allowDefaultServiceException46a = this.__allowDefaultServiceException46a;
1519        if (!this.__allowDefaultServiceException46aSet)
1520        {
1521            // allowDefaultServiceException has no pre constraints
1522            allowDefaultServiceException46a = handleIsAllowDefaultServiceException();
1523            // allowDefaultServiceException has no post constraints
1524            this.__allowDefaultServiceException46a = allowDefaultServiceException46a;
1525            if (isMetafacadePropertyCachingEnabled())
1526            {
1527                this.__allowDefaultServiceException46aSet = true;
1528            }
1529        }
1530        return allowDefaultServiceException46a;
1531    }
1532
1533   /**
1534    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isListenerEnabled()
1535    * @return boolean
1536    */
1537    protected abstract boolean handleIsListenerEnabled();
1538
1539    private boolean __listenerEnabled47a;
1540    private boolean __listenerEnabled47aSet = false;
1541
1542    /**
1543     * Returns true if this session bean has the stereotype Listener.  False otherwise.
1544     * @return (boolean)handleIsListenerEnabled()
1545     */
1546    public final boolean isListenerEnabled()
1547    {
1548        boolean listenerEnabled47a = this.__listenerEnabled47a;
1549        if (!this.__listenerEnabled47aSet)
1550        {
1551            // listenerEnabled has no pre constraints
1552            listenerEnabled47a = handleIsListenerEnabled();
1553            // listenerEnabled has no post constraints
1554            this.__listenerEnabled47a = listenerEnabled47a;
1555            if (isMetafacadePropertyCachingEnabled())
1556            {
1557                this.__listenerEnabled47aSet = true;
1558            }
1559        }
1560        return listenerEnabled47a;
1561    }
1562
1563   /**
1564    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getJndiNamePrefix()
1565    * @return String
1566    */
1567    protected abstract String handleGetJndiNamePrefix();
1568
1569    private String __jndiNamePrefix48a;
1570    private boolean __jndiNamePrefix48aSet = false;
1571
1572    /**
1573     * Returns the JNDI name prefix for this session bean.  This is set using the jndiNamePrefix
1574     * namespace property and is commonly the ear file name excluding the extension for the EJB3
1575     * cartridge.  This prefix is applied whether the JNDI name is specified or not.
1576     * If no manual JNDI name is specified, then the prefix is applied like so:
1577     * jndiPrefix/EJBName/Remote
1578     * If a manual JNDI name is specified, then the prefix is applied:
1579     * jndiPrefix/ManualEJBJNDIName
1580     * @return (String)handleGetJndiNamePrefix()
1581     */
1582    public final String getJndiNamePrefix()
1583    {
1584        String jndiNamePrefix48a = this.__jndiNamePrefix48a;
1585        if (!this.__jndiNamePrefix48aSet)
1586        {
1587            // jndiNamePrefix has no pre constraints
1588            jndiNamePrefix48a = handleGetJndiNamePrefix();
1589            // jndiNamePrefix has no post constraints
1590            this.__jndiNamePrefix48a = jndiNamePrefix48a;
1591            if (isMetafacadePropertyCachingEnabled())
1592            {
1593                this.__jndiNamePrefix48aSet = true;
1594            }
1595        }
1596        return jndiNamePrefix48a;
1597    }
1598
1599   /**
1600    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSecurityEnabled()
1601    * @return boolean
1602    */
1603    protected abstract boolean handleIsSecurityEnabled();
1604
1605    private boolean __securityEnabled49a;
1606    private boolean __securityEnabled49aSet = false;
1607
1608    /**
1609     * Returns true if the security realm is specified indicating to generate the security
1610     * infrastructure files.
1611     * @return (boolean)handleIsSecurityEnabled()
1612     */
1613    public final boolean isSecurityEnabled()
1614    {
1615        boolean securityEnabled49a = this.__securityEnabled49a;
1616        if (!this.__securityEnabled49aSet)
1617        {
1618            // securityEnabled has no pre constraints
1619            securityEnabled49a = handleIsSecurityEnabled();
1620            // securityEnabled has no post constraints
1621            this.__securityEnabled49a = securityEnabled49a;
1622            if (isMetafacadePropertyCachingEnabled())
1623            {
1624                this.__securityEnabled49aSet = true;
1625            }
1626        }
1627        return securityEnabled49a;
1628    }
1629
1630   /**
1631    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isExcludeDefaultInterceptors()
1632    * @return boolean
1633    */
1634    protected abstract boolean handleIsExcludeDefaultInterceptors();
1635
1636    private boolean __excludeDefaultInterceptors50a;
1637    private boolean __excludeDefaultInterceptors50aSet = false;
1638
1639    /**
1640     * Determines whether to exclude the invocation of the default interceptors for all business
1641     * method in the bean.
1642     * @return (boolean)handleIsExcludeDefaultInterceptors()
1643     */
1644    public final boolean isExcludeDefaultInterceptors()
1645    {
1646        boolean excludeDefaultInterceptors50a = this.__excludeDefaultInterceptors50a;
1647        if (!this.__excludeDefaultInterceptors50aSet)
1648        {
1649            // excludeDefaultInterceptors has no pre constraints
1650            excludeDefaultInterceptors50a = handleIsExcludeDefaultInterceptors();
1651            // excludeDefaultInterceptors has no post constraints
1652            this.__excludeDefaultInterceptors50a = excludeDefaultInterceptors50a;
1653            if (isMetafacadePropertyCachingEnabled())
1654            {
1655                this.__excludeDefaultInterceptors50aSet = true;
1656            }
1657        }
1658        return excludeDefaultInterceptors50a;
1659    }
1660
1661   /**
1662    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isClusteringEnabled()
1663    * @return boolean
1664    */
1665    protected abstract boolean handleIsClusteringEnabled();
1666
1667    private boolean __clusteringEnabled51a;
1668    private boolean __clusteringEnabled51aSet = false;
1669
1670    /**
1671     * Determine whether clustering has been enabled.  Either set application wide using
1672     * enableClustering namespace property or via the andromda_service_clustered tagged value.
1673     * @return (boolean)handleIsClusteringEnabled()
1674     */
1675    public final boolean isClusteringEnabled()
1676    {
1677        boolean clusteringEnabled51a = this.__clusteringEnabled51a;
1678        if (!this.__clusteringEnabled51aSet)
1679        {
1680            // clusteringEnabled has no pre constraints
1681            clusteringEnabled51a = handleIsClusteringEnabled();
1682            // clusteringEnabled has no post constraints
1683            this.__clusteringEnabled51a = clusteringEnabled51a;
1684            if (isMetafacadePropertyCachingEnabled())
1685            {
1686                this.__clusteringEnabled51aSet = true;
1687            }
1688        }
1689        return clusteringEnabled51a;
1690    }
1691
1692   /**
1693    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isWebServiceOperationExists()
1694    * @return boolean
1695    */
1696    protected abstract boolean handleIsWebServiceOperationExists();
1697
1698    private boolean __webServiceOperationExists52a;
1699    private boolean __webServiceOperationExists52aSet = false;
1700
1701    /**
1702     * Returns true if at least one of the session bean operations is marked with the
1703     * WebServiceOperation stereotype.
1704     * @return (boolean)handleIsWebServiceOperationExists()
1705     */
1706    public final boolean isWebServiceOperationExists()
1707    {
1708        boolean webServiceOperationExists52a = this.__webServiceOperationExists52a;
1709        if (!this.__webServiceOperationExists52aSet)
1710        {
1711            // webServiceOperationExists has no pre constraints
1712            webServiceOperationExists52a = handleIsWebServiceOperationExists();
1713            // webServiceOperationExists has no post constraints
1714            this.__webServiceOperationExists52a = webServiceOperationExists52a;
1715            if (isMetafacadePropertyCachingEnabled())
1716            {
1717                this.__webServiceOperationExists52aSet = true;
1718            }
1719        }
1720        return webServiceOperationExists52a;
1721    }
1722
1723   /**
1724    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isWebServiceEnabled()
1725    * @return boolean
1726    */
1727    protected abstract boolean handleIsWebServiceEnabled();
1728
1729    private boolean __webServiceEnabled53a;
1730    private boolean __webServiceEnabled53aSet = false;
1731
1732    /**
1733     * Returns true if the session bean has either one of the following:
1734     * 1. The <<WebService>> stereotype is modelled on the bean class;
1735     * 2. The <<WebServiceOperation>> stereotype is modelled on at least one business method.
1736     * @return (boolean)handleIsWebServiceEnabled()
1737     */
1738    public final boolean isWebServiceEnabled()
1739    {
1740        boolean webServiceEnabled53a = this.__webServiceEnabled53a;
1741        if (!this.__webServiceEnabled53aSet)
1742        {
1743            // webServiceEnabled has no pre constraints
1744            webServiceEnabled53a = handleIsWebServiceEnabled();
1745            // webServiceEnabled has no post constraints
1746            this.__webServiceEnabled53a = webServiceEnabled53a;
1747            if (isMetafacadePropertyCachingEnabled())
1748            {
1749                this.__webServiceEnabled53aSet = true;
1750            }
1751        }
1752        return webServiceEnabled53a;
1753    }
1754
1755   /**
1756    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceBaseName()
1757    * @return String
1758    */
1759    protected abstract String handleGetServiceBaseName();
1760
1761    private String __serviceBaseName54a;
1762    private boolean __serviceBaseName54aSet = false;
1763
1764    /**
1765     * Returns the service bean base name.
1766     * @return (String)handleGetServiceBaseName()
1767     */
1768    public final String getServiceBaseName()
1769    {
1770        String serviceBaseName54a = this.__serviceBaseName54a;
1771        if (!this.__serviceBaseName54aSet)
1772        {
1773            // serviceBaseName has no pre constraints
1774            serviceBaseName54a = handleGetServiceBaseName();
1775            // serviceBaseName has no post constraints
1776            this.__serviceBaseName54a = serviceBaseName54a;
1777            if (isMetafacadePropertyCachingEnabled())
1778            {
1779                this.__serviceBaseName54aSet = true;
1780            }
1781        }
1782        return serviceBaseName54a;
1783    }
1784
1785   /**
1786    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceBaseName()
1787    * @return String
1788    */
1789    protected abstract String handleGetFullyQualifiedServiceBaseName();
1790
1791    private String __fullyQualifiedServiceBaseName55a;
1792    private boolean __fullyQualifiedServiceBaseName55aSet = false;
1793
1794    /**
1795     * Returns the fully qualified service base name.
1796     * @return (String)handleGetFullyQualifiedServiceBaseName()
1797     */
1798    public final String getFullyQualifiedServiceBaseName()
1799    {
1800        String fullyQualifiedServiceBaseName55a = this.__fullyQualifiedServiceBaseName55a;
1801        if (!this.__fullyQualifiedServiceBaseName55aSet)
1802        {
1803            // fullyQualifiedServiceBaseName has no pre constraints
1804            fullyQualifiedServiceBaseName55a = handleGetFullyQualifiedServiceBaseName();
1805            // fullyQualifiedServiceBaseName has no post constraints
1806            this.__fullyQualifiedServiceBaseName55a = fullyQualifiedServiceBaseName55a;
1807            if (isMetafacadePropertyCachingEnabled())
1808            {
1809                this.__fullyQualifiedServiceBaseName55aSet = true;
1810            }
1811        }
1812        return fullyQualifiedServiceBaseName55a;
1813    }
1814
1815   /**
1816    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSeamComponent()
1817    * @return boolean
1818    */
1819    protected abstract boolean handleIsSeamComponent();
1820
1821    private boolean __seamComponent56a;
1822    private boolean __seamComponent56aSet = false;
1823
1824    /**
1825     * Returns true if this session bean has the <<Seam>> stereotype modelled indicating it is a
1826     * Seam session bean component.
1827     * @return (boolean)handleIsSeamComponent()
1828     */
1829    public final boolean isSeamComponent()
1830    {
1831        boolean seamComponent56a = this.__seamComponent56a;
1832        if (!this.__seamComponent56aSet)
1833        {
1834            // seamComponent has no pre constraints
1835            seamComponent56a = handleIsSeamComponent();
1836            // seamComponent has no post constraints
1837            this.__seamComponent56a = seamComponent56a;
1838            if (isMetafacadePropertyCachingEnabled())
1839            {
1840                this.__seamComponent56aSet = true;
1841            }
1842        }
1843        return seamComponent56a;
1844    }
1845
1846   /**
1847    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentScopeType()
1848    * @return String
1849    */
1850    protected abstract String handleGetSeamComponentScopeType();
1851
1852    private String __seamComponentScopeType57a;
1853    private boolean __seamComponentScopeType57aSet = false;
1854
1855    /**
1856     * Tagged value andromda.seam.component.scope. Defines the default context of the component. 
1857     * Possible values are
1858     * EVENT
1859     * PAGE
1860     * CONVERSATION
1861     * SESSION
1862     * BUSINESS_PROCESS
1863     * APPLICATION
1864     * STATELESS
1865     * If no scope specified, default depends on component type.
1866     * @return (String)handleGetSeamComponentScopeType()
1867     */
1868    public final String getSeamComponentScopeType()
1869    {
1870        String seamComponentScopeType57a = this.__seamComponentScopeType57a;
1871        if (!this.__seamComponentScopeType57aSet)
1872        {
1873            // seamComponentScopeType has no pre constraints
1874            seamComponentScopeType57a = handleGetSeamComponentScopeType();
1875            // seamComponentScopeType has no post constraints
1876            this.__seamComponentScopeType57a = seamComponentScopeType57a;
1877            if (isMetafacadePropertyCachingEnabled())
1878            {
1879                this.__seamComponentScopeType57aSet = true;
1880            }
1881        }
1882        return seamComponentScopeType57a;
1883    }
1884
1885   /**
1886    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentName()
1887    * @return String
1888    */
1889    protected abstract String handleGetSeamComponentName();
1890
1891    private String __seamComponentName58a;
1892    private boolean __seamComponentName58aSet = false;
1893
1894    /**
1895     * Returns the Seam component name for the class.
1896     * @return (String)handleGetSeamComponentName()
1897     */
1898    public final String getSeamComponentName()
1899    {
1900        String seamComponentName58a = this.__seamComponentName58a;
1901        if (!this.__seamComponentName58aSet)
1902        {
1903            // seamComponentName has no pre constraints
1904            seamComponentName58a = handleGetSeamComponentName();
1905            // seamComponentName has no post constraints
1906            this.__seamComponentName58a = seamComponentName58a;
1907            if (isMetafacadePropertyCachingEnabled())
1908            {
1909                this.__seamComponentName58aSet = true;
1910            }
1911        }
1912        return seamComponentName58a;
1913    }
1914
1915   /**
1916    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeBoth()
1917    * @return boolean
1918    */
1919    protected abstract boolean handleIsViewTypeBoth();
1920
1921    private boolean __viewTypeBoth59a;
1922    private boolean __viewTypeBoth59aSet = false;
1923
1924    /**
1925     * Return true if the view type accessability for this bean is both.
1926     * @return (boolean)handleIsViewTypeBoth()
1927     */
1928    public final boolean isViewTypeBoth()
1929    {
1930        boolean viewTypeBoth59a = this.__viewTypeBoth59a;
1931        if (!this.__viewTypeBoth59aSet)
1932        {
1933            // viewTypeBoth has no pre constraints
1934            viewTypeBoth59a = handleIsViewTypeBoth();
1935            // viewTypeBoth has no post constraints
1936            this.__viewTypeBoth59a = viewTypeBoth59a;
1937            if (isMetafacadePropertyCachingEnabled())
1938            {
1939                this.__viewTypeBoth59aSet = true;
1940            }
1941        }
1942        return viewTypeBoth59a;
1943    }
1944
1945   /**
1946    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeStrictlyLocal()
1947    * @return boolean
1948    */
1949    protected abstract boolean handleIsViewTypeStrictlyLocal();
1950
1951    private boolean __viewTypeStrictlyLocal60a;
1952    private boolean __viewTypeStrictlyLocal60aSet = false;
1953
1954    /**
1955     * Returns true if the bean view type was explicitly set to local view using tagged value or set
1956     * as the app wide default.
1957     * @return (boolean)handleIsViewTypeStrictlyLocal()
1958     */
1959    public final boolean isViewTypeStrictlyLocal()
1960    {
1961        boolean viewTypeStrictlyLocal60a = this.__viewTypeStrictlyLocal60a;
1962        if (!this.__viewTypeStrictlyLocal60aSet)
1963        {
1964            // viewTypeStrictlyLocal has no pre constraints
1965            viewTypeStrictlyLocal60a = handleIsViewTypeStrictlyLocal();
1966            // viewTypeStrictlyLocal has no post constraints
1967            this.__viewTypeStrictlyLocal60a = viewTypeStrictlyLocal60a;
1968            if (isMetafacadePropertyCachingEnabled())
1969            {
1970                this.__viewTypeStrictlyLocal60aSet = true;
1971            }
1972        }
1973        return viewTypeStrictlyLocal60a;
1974    }
1975
1976   /**
1977    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeStrictlyRemote()
1978    * @return boolean
1979    */
1980    protected abstract boolean handleIsViewTypeStrictlyRemote();
1981
1982    private boolean __viewTypeStrictlyRemote61a;
1983    private boolean __viewTypeStrictlyRemote61aSet = false;
1984
1985    /**
1986     * Returns true if the bean view type was explicitly set to remote view using tagged value or
1987     * set as the app wide default.
1988     * @return (boolean)handleIsViewTypeStrictlyRemote()
1989     */
1990    public final boolean isViewTypeStrictlyRemote()
1991    {
1992        boolean viewTypeStrictlyRemote61a = this.__viewTypeStrictlyRemote61a;
1993        if (!this.__viewTypeStrictlyRemote61aSet)
1994        {
1995            // viewTypeStrictlyRemote has no pre constraints
1996            viewTypeStrictlyRemote61a = handleIsViewTypeStrictlyRemote();
1997            // viewTypeStrictlyRemote has no post constraints
1998            this.__viewTypeStrictlyRemote61a = viewTypeStrictlyRemote61a;
1999            if (isMetafacadePropertyCachingEnabled())
2000            {
2001                this.__viewTypeStrictlyRemote61aSet = true;
2002            }
2003        }
2004        return viewTypeStrictlyRemote61a;
2005    }
2006
2007   /**
2008    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isViewTypeStrictlyBoth()
2009    * @return boolean
2010    */
2011    protected abstract boolean handleIsViewTypeStrictlyBoth();
2012
2013    private boolean __viewTypeStrictlyBoth62a;
2014    private boolean __viewTypeStrictlyBoth62aSet = false;
2015
2016    /**
2017     * Returns true if the bean view type was explicitly set to both view using tagged value or set
2018     * as the app wide default.
2019     * @return (boolean)handleIsViewTypeStrictlyBoth()
2020     */
2021    public final boolean isViewTypeStrictlyBoth()
2022    {
2023        boolean viewTypeStrictlyBoth62a = this.__viewTypeStrictlyBoth62a;
2024        if (!this.__viewTypeStrictlyBoth62aSet)
2025        {
2026            // viewTypeStrictlyBoth has no pre constraints
2027            viewTypeStrictlyBoth62a = handleIsViewTypeStrictlyBoth();
2028            // viewTypeStrictlyBoth has no post constraints
2029            this.__viewTypeStrictlyBoth62a = viewTypeStrictlyBoth62a;
2030            if (isMetafacadePropertyCachingEnabled())
2031            {
2032                this.__viewTypeStrictlyBoth62aSet = true;
2033            }
2034        }
2035        return viewTypeStrictlyBoth62a;
2036    }
2037
2038   /**
2039    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSeamComponentStartup()
2040    * @return boolean
2041    */
2042    protected abstract boolean handleIsSeamComponentStartup();
2043
2044    private boolean __seamComponentStartup63a;
2045    private boolean __seamComponentStartup63aSet = false;
2046
2047    /**
2048     * Returns true if stereotype <<Startup>> is set. Specifies that an application scope component
2049     * is started immediately at initialization time. This is mainly used for certain built-in
2050     * components that bootstrap critical infrastructure such as JNDI, datasources, etc.
2051     * @return (boolean)handleIsSeamComponentStartup()
2052     */
2053    public final boolean isSeamComponentStartup()
2054    {
2055        boolean seamComponentStartup63a = this.__seamComponentStartup63a;
2056        if (!this.__seamComponentStartup63aSet)
2057        {
2058            // seamComponentStartup has no pre constraints
2059            seamComponentStartup63a = handleIsSeamComponentStartup();
2060            // seamComponentStartup has no post constraints
2061            this.__seamComponentStartup63a = seamComponentStartup63a;
2062            if (isMetafacadePropertyCachingEnabled())
2063            {
2064                this.__seamComponentStartup63aSet = true;
2065            }
2066        }
2067        return seamComponentStartup63a;
2068    }
2069
2070   /**
2071    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentConversionalIfNotBegunOutcome()
2072    * @return String
2073    */
2074    protected abstract String handleGetSeamComponentConversionalIfNotBegunOutcome();
2075
2076    private String __seamComponentConversionalIfNotBegunOutcome64a;
2077    private boolean __seamComponentConversionalIfNotBegunOutcome64aSet = false;
2078
2079    /**
2080     * Tagged value andromda.seam.component.conversional.ifnotbegunoutcome. Specifies that a
2081     * conversation scope component is conversational, meaning that no method of the component can
2082     * be called unless a long-running conversation started by this component is active (unless the
2083     * method would begin a new long-running conversation).
2084     * @return (String)handleGetSeamComponentConversionalIfNotBegunOutcome()
2085     */
2086    public final String getSeamComponentConversionalIfNotBegunOutcome()
2087    {
2088        String seamComponentConversionalIfNotBegunOutcome64a = this.__seamComponentConversionalIfNotBegunOutcome64a;
2089        if (!this.__seamComponentConversionalIfNotBegunOutcome64aSet)
2090        {
2091            // seamComponentConversionalIfNotBegunOutcome has no pre constraints
2092            seamComponentConversionalIfNotBegunOutcome64a = handleGetSeamComponentConversionalIfNotBegunOutcome();
2093            // seamComponentConversionalIfNotBegunOutcome has no post constraints
2094            this.__seamComponentConversionalIfNotBegunOutcome64a = seamComponentConversionalIfNotBegunOutcome64a;
2095            if (isMetafacadePropertyCachingEnabled())
2096            {
2097                this.__seamComponentConversionalIfNotBegunOutcome64aSet = true;
2098            }
2099        }
2100        return seamComponentConversionalIfNotBegunOutcome64a;
2101    }
2102
2103   /**
2104    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentIntercept()
2105    * @return String
2106    */
2107    protected abstract String handleGetSeamComponentIntercept();
2108
2109    private String __seamComponentIntercept65a;
2110    private boolean __seamComponentIntercept65aSet = false;
2111
2112    /**
2113     * Tagged value andromda.seam.component.intercept. Determines when Seam interceptors are active.
2114     * The possible values are defined by the InterceptionType enumeration: ALWAYS,
2115     * AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER.
2116     * When no interception type is explicitly specified, the default depends upon the component
2117     * type. For entity beans, the default is NEVER. For session beans, message driven beans and
2118     * JavaBeans, the default is ALWAYS.
2119     * @return (String)handleGetSeamComponentIntercept()
2120     */
2121    public final String getSeamComponentIntercept()
2122    {
2123        String seamComponentIntercept65a = this.__seamComponentIntercept65a;
2124        if (!this.__seamComponentIntercept65aSet)
2125        {
2126            // seamComponentIntercept has no pre constraints
2127            seamComponentIntercept65a = handleGetSeamComponentIntercept();
2128            // seamComponentIntercept has no post constraints
2129            this.__seamComponentIntercept65a = seamComponentIntercept65a;
2130            if (isMetafacadePropertyCachingEnabled())
2131            {
2132                this.__seamComponentIntercept65aSet = true;
2133            }
2134        }
2135        return seamComponentIntercept65a;
2136    }
2137
2138   /**
2139    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentJndiName()
2140    * @return String
2141    */
2142    protected abstract String handleGetSeamComponentJndiName();
2143
2144    private String __seamComponentJndiName66a;
2145    private boolean __seamComponentJndiName66aSet = false;
2146
2147    /**
2148     * Tagged value andromda.seam.component.jndiname. Specifies the JNDI name that Seam will use to
2149     * look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI
2150     * pattern specified by org.jboss.seam.core.init.jndiPattern.
2151     * @return (String)handleGetSeamComponentJndiName()
2152     */
2153    public final String getSeamComponentJndiName()
2154    {
2155        String seamComponentJndiName66a = this.__seamComponentJndiName66a;
2156        if (!this.__seamComponentJndiName66aSet)
2157        {
2158            // seamComponentJndiName has no pre constraints
2159            seamComponentJndiName66a = handleGetSeamComponentJndiName();
2160            // seamComponentJndiName has no post constraints
2161            this.__seamComponentJndiName66a = seamComponentJndiName66a;
2162            if (isMetafacadePropertyCachingEnabled())
2163            {
2164                this.__seamComponentJndiName66aSet = true;
2165            }
2166        }
2167        return seamComponentJndiName66a;
2168    }
2169
2170   /**
2171    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSeamComponentReadonly()
2172    * @return boolean
2173    */
2174    protected abstract boolean handleIsSeamComponentReadonly();
2175
2176    private boolean __seamComponentReadonly67a;
2177    private boolean __seamComponentReadonly67aSet = false;
2178
2179    /**
2180     * Tagged value andromda.seam.component.readonly. Specifies that a JavaBean component or
2181     * component method does not require state replication at the end of the invocation.
2182     * @return (boolean)handleIsSeamComponentReadonly()
2183     */
2184    public final boolean isSeamComponentReadonly()
2185    {
2186        boolean seamComponentReadonly67a = this.__seamComponentReadonly67a;
2187        if (!this.__seamComponentReadonly67aSet)
2188        {
2189            // seamComponentReadonly has no pre constraints
2190            seamComponentReadonly67a = handleIsSeamComponentReadonly();
2191            // seamComponentReadonly has no post constraints
2192            this.__seamComponentReadonly67a = seamComponentReadonly67a;
2193            if (isMetafacadePropertyCachingEnabled())
2194            {
2195                this.__seamComponentReadonly67aSet = true;
2196            }
2197        }
2198        return seamComponentReadonly67a;
2199    }
2200
2201   /**
2202    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentRoleNames()
2203    * @return Collection
2204    */
2205    protected abstract Collection handleGetSeamComponentRoleNames();
2206
2207    private Collection __seamComponentRoleNames68a;
2208    private boolean __seamComponentRoleNames68aSet = false;
2209
2210    /**
2211     * Tagged value andromda.seam.component.role.name. Allows a Seam component to be bound to
2212     * multiple contexts variables. The Name/Scope annotations define a "default role". Each Role
2213     * annotation defines an additional role.
2214     * This tagged value specifies the context variable name.
2215     * @return (Collection)handleGetSeamComponentRoleNames()
2216     */
2217    public final Collection getSeamComponentRoleNames()
2218    {
2219        Collection seamComponentRoleNames68a = this.__seamComponentRoleNames68a;
2220        if (!this.__seamComponentRoleNames68aSet)
2221        {
2222            // seamComponentRoleNames has no pre constraints
2223            seamComponentRoleNames68a = handleGetSeamComponentRoleNames();
2224            // seamComponentRoleNames has no post constraints
2225            this.__seamComponentRoleNames68a = seamComponentRoleNames68a;
2226            if (isMetafacadePropertyCachingEnabled())
2227            {
2228                this.__seamComponentRoleNames68aSet = true;
2229            }
2230        }
2231        return seamComponentRoleNames68a;
2232    }
2233
2234   /**
2235    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentSynchronizedTimeout()
2236    * @return String
2237    */
2238    protected abstract String handleGetSeamComponentSynchronizedTimeout();
2239
2240    private String __seamComponentSynchronizedTimeout69a;
2241    private boolean __seamComponentSynchronizedTimeout69aSet = false;
2242
2243    /**
2244     * Tagged value andromda.seam.component.synchronized.timeout. Specifies that a component is
2245     * accessed concurrently by multiple clients, and that Seam should serialize requests. If a
2246     * request is not able to obtain its lock on the component in the given timeout period, an
2247     * exception will be raised.
2248     * @return (String)handleGetSeamComponentSynchronizedTimeout()
2249     */
2250    public final String getSeamComponentSynchronizedTimeout()
2251    {
2252        String seamComponentSynchronizedTimeout69a = this.__seamComponentSynchronizedTimeout69a;
2253        if (!this.__seamComponentSynchronizedTimeout69aSet)
2254        {
2255            // seamComponentSynchronizedTimeout has no pre constraints
2256            seamComponentSynchronizedTimeout69a = handleGetSeamComponentSynchronizedTimeout();
2257            // seamComponentSynchronizedTimeout has no post constraints
2258            this.__seamComponentSynchronizedTimeout69a = seamComponentSynchronizedTimeout69a;
2259            if (isMetafacadePropertyCachingEnabled())
2260            {
2261                this.__seamComponentSynchronizedTimeout69aSet = true;
2262            }
2263        }
2264        return seamComponentSynchronizedTimeout69a;
2265    }
2266
2267   /**
2268    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#isSeamComponentTransactional()
2269    * @return boolean
2270    */
2271    protected abstract boolean handleIsSeamComponentTransactional();
2272
2273    private boolean __seamComponentTransactional70a;
2274    private boolean __seamComponentTransactional70aSet = false;
2275
2276    /**
2277     * Returns true if stereotype <<Transactional>> is set. Specifies that a JavaBean component
2278     * should have a similar transactional behavior to the default behavior of a session bean
2279     * component. ie. method invocations should take place in a transaction, and if no transaction
2280     * exists when the method is called, a transaction will be started just for that method. This
2281     * annotation may be applied at either class or method level.
2282     * @return (boolean)handleIsSeamComponentTransactional()
2283     */
2284    public final boolean isSeamComponentTransactional()
2285    {
2286        boolean seamComponentTransactional70a = this.__seamComponentTransactional70a;
2287        if (!this.__seamComponentTransactional70aSet)
2288        {
2289            // seamComponentTransactional has no pre constraints
2290            seamComponentTransactional70a = handleIsSeamComponentTransactional();
2291            // seamComponentTransactional has no post constraints
2292            this.__seamComponentTransactional70a = seamComponentTransactional70a;
2293            if (isMetafacadePropertyCachingEnabled())
2294            {
2295                this.__seamComponentTransactional70aSet = true;
2296            }
2297        }
2298        return seamComponentTransactional70a;
2299    }
2300
2301   /**
2302    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentStartupParameters()
2303    * @return String
2304    */
2305    protected abstract String handleGetSeamComponentStartupParameters();
2306
2307    private String __seamComponentStartupParameters71a;
2308    private boolean __seamComponentStartupParameters71aSet = false;
2309
2310    /**
2311     * Returns a string with parameters for the Startup annotation. Supported parameters:
2312     * depends ? specifies that the named components must be started first, if they are installed.
2313     * Specified by tagged value andromda.seam.component.startup.depends
2314     * @return (String)handleGetSeamComponentStartupParameters()
2315     */
2316    public final String getSeamComponentStartupParameters()
2317    {
2318        String seamComponentStartupParameters71a = this.__seamComponentStartupParameters71a;
2319        if (!this.__seamComponentStartupParameters71aSet)
2320        {
2321            // seamComponentStartupParameters has no pre constraints
2322            seamComponentStartupParameters71a = handleGetSeamComponentStartupParameters();
2323            // seamComponentStartupParameters has no post constraints
2324            this.__seamComponentStartupParameters71a = seamComponentStartupParameters71a;
2325            if (isMetafacadePropertyCachingEnabled())
2326            {
2327                this.__seamComponentStartupParameters71aSet = true;
2328            }
2329        }
2330        return seamComponentStartupParameters71a;
2331    }
2332
2333   /**
2334    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getSeamComponentRoleScopeTypes()
2335    * @return Collection
2336    */
2337    protected abstract Collection handleGetSeamComponentRoleScopeTypes();
2338
2339    private Collection __seamComponentRoleScopeTypes72a;
2340    private boolean __seamComponentRoleScopeTypes72aSet = false;
2341
2342    /**
2343     * If multiple roles are specified (since a seam component can be bound to multiple context
2344     * variables), then multiple roles are specified in the order the role names are specified. 
2345     * This is done by modelling the andromda.seam.component.role.scope tag with a comma separated
2346     * list of scopes.
2347     * @return (Collection)handleGetSeamComponentRoleScopeTypes()
2348     */
2349    public final Collection getSeamComponentRoleScopeTypes()
2350    {
2351        Collection seamComponentRoleScopeTypes72a = this.__seamComponentRoleScopeTypes72a;
2352        if (!this.__seamComponentRoleScopeTypes72aSet)
2353        {
2354            // seamComponentRoleScopeTypes has no pre constraints
2355            seamComponentRoleScopeTypes72a = handleGetSeamComponentRoleScopeTypes();
2356            // seamComponentRoleScopeTypes has no post constraints
2357            this.__seamComponentRoleScopeTypes72a = seamComponentRoleScopeTypes72a;
2358            if (isMetafacadePropertyCachingEnabled())
2359            {
2360                this.__seamComponentRoleScopeTypes72aSet = true;
2361            }
2362        }
2363        return seamComponentRoleScopeTypes72a;
2364    }
2365
2366   /**
2367    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceTestName()
2368    * @return String
2369    */
2370    protected abstract String handleGetFullyQualifiedServiceTestName();
2371
2372    private String __fullyQualifiedServiceTestName73a;
2373    private boolean __fullyQualifiedServiceTestName73aSet = false;
2374
2375    /**
2376     * Returns the fully qualified service test class name
2377     * @return (String)handleGetFullyQualifiedServiceTestName()
2378     */
2379    public final String getFullyQualifiedServiceTestName()
2380    {
2381        String fullyQualifiedServiceTestName73a = this.__fullyQualifiedServiceTestName73a;
2382        if (!this.__fullyQualifiedServiceTestName73aSet)
2383        {
2384            // fullyQualifiedServiceTestName has no pre constraints
2385            fullyQualifiedServiceTestName73a = handleGetFullyQualifiedServiceTestName();
2386            // fullyQualifiedServiceTestName has no post constraints
2387            this.__fullyQualifiedServiceTestName73a = fullyQualifiedServiceTestName73a;
2388            if (isMetafacadePropertyCachingEnabled())
2389            {
2390                this.__fullyQualifiedServiceTestName73aSet = true;
2391            }
2392        }
2393        return fullyQualifiedServiceTestName73a;
2394    }
2395
2396   /**
2397    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceTestName()
2398    * @return String
2399    */
2400    protected abstract String handleGetServiceTestName();
2401
2402    private String __serviceTestName74a;
2403    private boolean __serviceTestName74aSet = false;
2404
2405    /**
2406     * Returns the service bean test class name
2407     * @return (String)handleGetServiceTestName()
2408     */
2409    public final String getServiceTestName()
2410    {
2411        String serviceTestName74a = this.__serviceTestName74a;
2412        if (!this.__serviceTestName74aSet)
2413        {
2414            // serviceTestName has no pre constraints
2415            serviceTestName74a = handleGetServiceTestName();
2416            // serviceTestName has no post constraints
2417            this.__serviceTestName74a = serviceTestName74a;
2418            if (isMetafacadePropertyCachingEnabled())
2419            {
2420                this.__serviceTestName74aSet = true;
2421            }
2422        }
2423        return serviceTestName74a;
2424    }
2425
2426   /**
2427    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getTestPackageName()
2428    * @return String
2429    */
2430    protected abstract String handleGetTestPackageName();
2431
2432    private String __testPackageName75a;
2433    private boolean __testPackageName75aSet = false;
2434
2435    /**
2436     * Returns the service test package name. This simply appends .test to the existing service
2437     * class package.
2438     * @return (String)handleGetTestPackageName()
2439     */
2440    public final String getTestPackageName()
2441    {
2442        String testPackageName75a = this.__testPackageName75a;
2443        if (!this.__testPackageName75aSet)
2444        {
2445            // testPackageName has no pre constraints
2446            testPackageName75a = handleGetTestPackageName();
2447            // testPackageName has no post constraints
2448            this.__testPackageName75a = testPackageName75a;
2449            if (isMetafacadePropertyCachingEnabled())
2450            {
2451                this.__testPackageName75aSet = true;
2452            }
2453        }
2454        return testPackageName75a;
2455    }
2456
2457   /**
2458    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getServiceInterfaceName()
2459    * @return String
2460    */
2461    protected abstract String handleGetServiceInterfaceName();
2462
2463    private String __serviceInterfaceName76a;
2464    private boolean __serviceInterfaceName76aSet = false;
2465
2466    /**
2467     * The parent business interface name for this session bean.
2468     * @return (String)handleGetServiceInterfaceName()
2469     */
2470    public final String getServiceInterfaceName()
2471    {
2472        String serviceInterfaceName76a = this.__serviceInterfaceName76a;
2473        if (!this.__serviceInterfaceName76aSet)
2474        {
2475            // serviceInterfaceName has no pre constraints
2476            serviceInterfaceName76a = handleGetServiceInterfaceName();
2477            // serviceInterfaceName has no post constraints
2478            this.__serviceInterfaceName76a = serviceInterfaceName76a;
2479            if (isMetafacadePropertyCachingEnabled())
2480            {
2481                this.__serviceInterfaceName76aSet = true;
2482            }
2483        }
2484        return serviceInterfaceName76a;
2485    }
2486
2487   /**
2488    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade#getFullyQualifiedServiceInterfaceName()
2489    * @return String
2490    */
2491    protected abstract String handleGetFullyQualifiedServiceInterfaceName();
2492
2493    private String __fullyQualifiedServiceInterfaceName77a;
2494    private boolean __fullyQualifiedServiceInterfaceName77aSet = false;
2495
2496    /**
2497     * The fully qualified parent business interface name for this session bean.
2498     * @return (String)handleGetFullyQualifiedServiceInterfaceName()
2499     */
2500    public final String getFullyQualifiedServiceInterfaceName()
2501    {
2502        String fullyQualifiedServiceInterfaceName77a = this.__fullyQualifiedServiceInterfaceName77a;
2503        if (!this.__fullyQualifiedServiceInterfaceName77aSet)
2504        {
2505            // fullyQualifiedServiceInterfaceName has no pre constraints
2506            fullyQualifiedServiceInterfaceName77a = handleGetFullyQualifiedServiceInterfaceName();
2507            // fullyQualifiedServiceInterfaceName has no post constraints
2508            this.__fullyQualifiedServiceInterfaceName77a = fullyQualifiedServiceInterfaceName77a;
2509            if (isMetafacadePropertyCachingEnabled())
2510            {
2511                this.__fullyQualifiedServiceInterfaceName77aSet = true;
2512            }
2513        }
2514        return fullyQualifiedServiceInterfaceName77a;
2515    }
2516
2517    // ---------------- business methods ----------------------
2518
2519    /**
2520     * Method to be implemented in descendants
2521     * Gets create methods for this session EJB.  If 'follow' is set to true, it will follow the
2522     * inheritance hierarchy and retrieve those defined on any super types.
2523     * @param follow
2524     * @return Collection
2525     */
2526    protected abstract Collection handleGetCreateMethods(boolean follow);
2527
2528    /**
2529     * Gets create methods for this session EJB.  If 'follow' is set to true, it will follow the
2530     * inheritance hierarchy and retrieve those defined on any super types.
2531     * @param follow boolean
2532     * If set to true, then all create methods from the super type will also be included.
2533     * @return handleGetCreateMethods(follow)
2534     */
2535    public Collection getCreateMethods(boolean follow)
2536    {
2537        // getCreateMethods has no pre constraints
2538        Collection returnValue = handleGetCreateMethods(follow);
2539        // getCreateMethods has no post constraints
2540        return returnValue;
2541    }
2542
2543    /**
2544     * Method to be implemented in descendants
2545     * Gets all env-entries for the specified session EJB. Env-entries are stored as static
2546     * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
2547     * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
2548     * types as well.
2549     * @param follow
2550     * @return Collection
2551     */
2552    protected abstract Collection handleGetEnvironmentEntries(boolean follow);
2553
2554    /**
2555     * Gets all env-entries for the specified session EJB. Env-entries are stored as static
2556     * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
2557     * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
2558     * types as well.
2559     * @param follow boolean
2560     * If true, then the inheritance hierarchy will be followed and we'll retrieve all env-entries
2561     * from any super types as well.
2562     * @return handleGetEnvironmentEntries(follow)
2563     */
2564    public Collection getEnvironmentEntries(boolean follow)
2565    {
2566        // getEnvironmentEntries has no pre constraints
2567        Collection returnValue = handleGetEnvironmentEntries(follow);
2568        // getEnvironmentEntries has no post constraints
2569        return returnValue;
2570    }
2571
2572    /**
2573     * Method to be implemented in descendants
2574     * Gets all constants for this session EJB. Constants are defined as static read-only attributes
2575     * which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the inheritance
2576     * hierarchy will be followed and we'll retrieve all constants from any super types as well.
2577     * @param follow
2578     * @return Collection
2579     */
2580    protected abstract Collection handleGetConstants(boolean follow);
2581
2582    /**
2583     * Gets all constants for this session EJB. Constants are defined as static read-only attributes
2584     * which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the inheritance
2585     * hierarchy will be followed and we'll retrieve all constants from any super types as well.
2586     * @param follow boolean
2587     * If true, then the inheritance hierarchy will be followed and we'll retrieve all constants
2588     * from any super types as well.
2589     * @return handleGetConstants(follow)
2590     */
2591    public Collection getConstants(boolean follow)
2592    {
2593        // getConstants has no pre constraints
2594        Collection returnValue = handleGetConstants(follow);
2595        // getConstants has no post constraints
2596        return returnValue;
2597    }
2598
2599    /**
2600     * Method to be implemented in descendants
2601     * Returns the comma separated list of attributes.<p/>This method can be used to generate
2602     * argument lists for constructors and method calls.
2603     * @param attributes
2604     * @param includeTypes
2605     * @param includeNames
2606     * @return String
2607     */
2608    protected abstract String handleGetAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames);
2609
2610    /**
2611     * Returns the comma separated list of attributes.<p/>This method can be used to generate
2612     * argument lists for constructors and method calls.
2613     * @param attributes Collection
2614     * a collection of {@link Attribute} objects
2615     * @param includeTypes boolean
2616     * if <code>true</code>, the type names of the attributes are included.
2617     * @param includeNames boolean
2618     * if <code>true</code>, the names of the attributes are included
2619     * @return handleGetAttributesAsList(attributes, includeTypes, includeNames)
2620     */
2621    public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames)
2622    {
2623        // getAttributesAsList has no pre constraints
2624        String returnValue = handleGetAttributesAsList(attributes, includeTypes, includeNames);
2625        // getAttributesAsList has no post constraints
2626        return returnValue;
2627    }
2628
2629    /**
2630     * Method to be implemented in descendants
2631     * Filter out seam component attributes
2632     * @param attributes
2633     * @return Collection
2634     */
2635    protected abstract Collection handleFilterSeamAttributes(Collection attributes);
2636
2637    /**
2638     * Filter out seam component attributes
2639     * @param attributes Collection
2640     * TODO: Model Documentation for
2641     * org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade.filterSeamAttributes(attributes)
2642     * @return handleFilterSeamAttributes(attributes)
2643     */
2644    public Collection filterSeamAttributes(Collection attributes)
2645    {
2646        // filterSeamAttributes has no pre constraints
2647        Collection returnValue = handleFilterSeamAttributes(attributes);
2648        // filterSeamAttributes has no post constraints
2649        return returnValue;
2650    }
2651
2652    // ------------- associations ------------------
2653
2654    /**
2655     * Represents a Session EJB.
2656     * @return (Collection<Role>)handleGetNonRunAsRoles()
2657     */
2658    public final Collection<Role> getNonRunAsRoles()
2659    {
2660        Collection<Role> getNonRunAsRoles1r = null;
2661        // eJB3SessionFacade has no pre constraints
2662        Collection result = handleGetNonRunAsRoles();
2663        List shieldedResult = this.shieldedElements(result);
2664        try
2665        {
2666            getNonRunAsRoles1r = (Collection<Role>)shieldedResult;
2667        }
2668        catch (ClassCastException ex)
2669        {
2670            // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2671            EJB3SessionFacadeLogic.logger.warn("incorrect metafacade cast for EJB3SessionFacadeLogic.getNonRunAsRoles Collection<Role> " + result + ": " + shieldedResult);
2672        }
2673        // eJB3SessionFacade has no post constraints
2674        return getNonRunAsRoles1r;
2675    }
2676
2677    /**
2678     * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
2679     * @return  Collection
2680     */
2681    protected abstract Collection handleGetNonRunAsRoles();
2682
2683    /**
2684     * @return true
2685     * @see Service
2686     */
2687    public boolean isServiceMetaType()
2688    {
2689        return true;
2690    }
2691
2692    /**
2693     * @return true
2694     * @see ClassifierFacade
2695     */
2696    public boolean isClassifierFacadeMetaType()
2697    {
2698        return true;
2699    }
2700
2701    /**
2702     * @return true
2703     * @see GeneralizableElementFacade
2704     */
2705    public boolean isGeneralizableElementFacadeMetaType()
2706    {
2707        return true;
2708    }
2709
2710    /**
2711     * @return true
2712     * @see ModelElementFacade
2713     */
2714    public boolean isModelElementFacadeMetaType()
2715    {
2716        return true;
2717    }
2718
2719    // ----------- delegates to Service ------------
2720    /**
2721     * Return the attribute which name matches the parameter
2722     * @see ClassifierFacade#findAttribute(String name)
2723     */
2724    public AttributeFacade findAttribute(String name)
2725    {
2726        return this.getSuperService().findAttribute(name);
2727    }
2728
2729    /**
2730     * Those abstraction dependencies for which this classifier is the client.
2731     * @see ClassifierFacade#getAbstractions()
2732     */
2733    public Collection<ClassifierFacade> getAbstractions()
2734    {
2735        return this.getSuperService().getAbstractions();
2736    }
2737
2738    /**
2739     * Lists all classes associated to this one and any ancestor classes (through generalization).
2740     * There will be no duplicates. The order of the elements is predictable.
2741     * @see ClassifierFacade#getAllAssociatedClasses()
2742     */
2743    public Collection<ClassifierFacade> getAllAssociatedClasses()
2744    {
2745        return this.getSuperService().getAllAssociatedClasses();
2746    }
2747
2748    /**
2749     * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
2750     * any attributes and navigable connecting association ends.
2751     * @see ClassifierFacade#getAllProperties()
2752     */
2753    public Collection<ModelElementFacade> getAllProperties()
2754    {
2755        return this.getSuperService().getAllProperties();
2756    }
2757
2758    /**
2759     * A collection containing all required and/or read-only 'properties' of the classifier and its
2760     * ancestors. Properties are any attributes and navigable connecting association ends.
2761     * @see ClassifierFacade#getAllRequiredConstructorParameters()
2762     */
2763    public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
2764    {
2765        return this.getSuperService().getAllRequiredConstructorParameters();
2766    }
2767
2768    /**
2769     * Gets the array type for this classifier.  If this classifier already represents an array, it
2770     * just returns itself.
2771     * @see ClassifierFacade#getArray()
2772     */
2773    public ClassifierFacade getArray()
2774    {
2775        return this.getSuperService().getArray();
2776    }
2777
2778    /**
2779     * The name of the classifier as an array.
2780     * @see ClassifierFacade#getArrayName()
2781     */
2782    public String getArrayName()
2783    {
2784        return this.getSuperService().getArrayName();
2785    }
2786
2787    /**
2788     * Lists the classes associated to this one, there is no repitition of classes. The order of the
2789     * elements is predictable.
2790     * @see ClassifierFacade#getAssociatedClasses()
2791     */
2792    public Collection<ClassifierFacade> getAssociatedClasses()
2793    {
2794        return this.getSuperService().getAssociatedClasses();
2795    }
2796
2797    /**
2798     * Gets the association ends belonging to a classifier.
2799     * @see ClassifierFacade#getAssociationEnds()
2800     */
2801    public List<AssociationEndFacade> getAssociationEnds()
2802    {
2803        return this.getSuperService().getAssociationEnds();
2804    }
2805
2806    /**
2807     * Gets the attributes that belong to the classifier.
2808     * @see ClassifierFacade#getAttributes()
2809     */
2810    public List<AttributeFacade> getAttributes()
2811    {
2812        return this.getSuperService().getAttributes();
2813    }
2814
2815    /**
2816     * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
2817     * hierarchy and gets the attributes from the super classes as well.
2818     * @see ClassifierFacade#getAttributes(boolean follow)
2819     */
2820    public List<AttributeFacade> getAttributes(boolean follow)
2821    {
2822        return this.getSuperService().getAttributes(follow);
2823    }
2824
2825    /**
2826     * The fully qualified name of the classifier as an array.
2827     * @see ClassifierFacade#getFullyQualifiedArrayName()
2828     */
2829    public String getFullyQualifiedArrayName()
2830    {
2831        return this.getSuperService().getFullyQualifiedArrayName();
2832    }
2833
2834    /**
2835     * Returns all those operations that could be implemented at this classifier's level. This means
2836     * the operations owned by this classifier as well as any realized interface's operations
2837     * (recursively) in case this classifier itself is not already an interface, or generalized when
2838     * this classifier is an interface.
2839     * @see ClassifierFacade#getImplementationOperations()
2840     */
2841    public Collection<OperationFacade> getImplementationOperations()
2842    {
2843        return this.getSuperService().getImplementationOperations();
2844    }
2845
2846    /**
2847     * A comma separated list of the fully qualified names of all implemented interfaces.
2848     * @see ClassifierFacade#getImplementedInterfaceList()
2849     */
2850    public String getImplementedInterfaceList()
2851    {
2852        return this.getSuperService().getImplementedInterfaceList();
2853    }
2854
2855    /**
2856     * Those attributes that are scoped to an instance of this class.
2857     * @see ClassifierFacade#getInstanceAttributes()
2858     */
2859    public Collection<AttributeFacade> getInstanceAttributes()
2860    {
2861        return this.getSuperService().getInstanceAttributes();
2862    }
2863
2864    /**
2865     * Those operations that are scoped to an instance of this class.
2866     * @see ClassifierFacade#getInstanceOperations()
2867     */
2868    public List<OperationFacade> getInstanceOperations()
2869    {
2870        return this.getSuperService().getInstanceOperations();
2871    }
2872
2873    /**
2874     * Those interfaces that are abstractions of this classifier, this basically means this
2875     * classifier realizes them.
2876     * @see ClassifierFacade#getInterfaceAbstractions()
2877     */
2878    public Collection<ClassifierFacade> getInterfaceAbstractions()
2879    {
2880        return this.getSuperService().getInterfaceAbstractions();
2881    }
2882
2883    /**
2884     * A String representing a new Constructor declaration for this classifier type to be used in a
2885     * Java environment.
2886     * @see ClassifierFacade#getJavaNewString()
2887     */
2888    public String getJavaNewString()
2889    {
2890        return this.getSuperService().getJavaNewString();
2891    }
2892
2893    /**
2894     * A String representing the null-value for this classifier type to be used in a Java
2895     * environment.
2896     * @see ClassifierFacade#getJavaNullString()
2897     */
2898    public String getJavaNullString()
2899    {
2900        return this.getSuperService().getJavaNullString();
2901    }
2902
2903    /**
2904     * The other ends of this classifier's association ends which are navigable.
2905     * @see ClassifierFacade#getNavigableConnectingEnds()
2906     */
2907    public Collection<AssociationEndFacade> getNavigableConnectingEnds()
2908    {
2909        return this.getSuperService().getNavigableConnectingEnds();
2910    }
2911
2912    /**
2913     * Get the other ends of this classifier's association ends which are navigable and if 'follow'
2914     * is true goes up the inheritance hierarchy and gets the super association ends as well.
2915     * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
2916     */
2917    public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
2918    {
2919        return this.getSuperService().getNavigableConnectingEnds(follow);
2920    }
2921
2922    /**
2923     * Assuming that the classifier is an array, this will return the non array type of the
2924     * classifier from
2925     * the model.  If the classifier is NOT an array, it will just return itself.
2926     * @see ClassifierFacade#getNonArray()
2927     */
2928    public ClassifierFacade getNonArray()
2929    {
2930        return this.getSuperService().getNonArray();
2931    }
2932
2933    /**
2934     * The attributes from this classifier in the form of an operation call (this example would be
2935     * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
2936     * classifier, the result would be an empty '()'.
2937     * @see ClassifierFacade#getOperationCallFromAttributes()
2938     */
2939    public String getOperationCallFromAttributes()
2940    {
2941        return this.getSuperService().getOperationCallFromAttributes();
2942    }
2943
2944    /**
2945     * The operations owned by this classifier.
2946     * @see ClassifierFacade#getOperations()
2947     */
2948    public List<OperationFacade> getOperations()
2949    {
2950        return this.getSuperService().getOperations();
2951    }
2952
2953    /**
2954     * A collection containing all 'properties' of the classifier.  Properties are any attributes
2955     * and navigable connecting association ends.
2956     * @see ClassifierFacade#getProperties()
2957     */
2958    public List<ModelElementFacade> getProperties()
2959    {
2960        return this.getSuperService().getProperties();
2961    }
2962
2963    /**
2964     * Gets all properties (attributes and navigable association ends) for the classifier and if
2965     * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
2966     * classes as well.
2967     * @see ClassifierFacade#getProperties(boolean follow)
2968     */
2969    public List getProperties(boolean follow)
2970    {
2971        return this.getSuperService().getProperties(follow);
2972    }
2973
2974    /**
2975     * A collection containing all required and/or read-only 'properties' of the classifier. 
2976     * Properties are any attributes and navigable connecting association ends.
2977     * @see ClassifierFacade#getRequiredConstructorParameters()
2978     */
2979    public Collection<ModelElementFacade> getRequiredConstructorParameters()
2980    {
2981        return this.getSuperService().getRequiredConstructorParameters();
2982    }
2983
2984    /**
2985     * Returns the serial version UID of the underlying model element.
2986     * @see ClassifierFacade#getSerialVersionUID()
2987     */
2988    public long getSerialVersionUID()
2989    {
2990        return this.getSuperService().getSerialVersionUID();
2991    }
2992
2993    /**
2994     * Those attributes that are scoped to the definition of this class.
2995     * @see ClassifierFacade#getStaticAttributes()
2996     */
2997    public Collection<AttributeFacade> getStaticAttributes()
2998    {
2999        return this.getSuperService().getStaticAttributes();
3000    }
3001
3002    /**
3003     * Those operations that are scoped to the definition of this class.
3004     * @see ClassifierFacade#getStaticOperations()
3005     */
3006    public List<OperationFacade> getStaticOperations()
3007    {
3008        return this.getSuperService().getStaticOperations();
3009    }
3010
3011    /**
3012     * This class' superclass, returns the generalization if it is a ClassifierFacade, null
3013     * otherwise.
3014     * @see ClassifierFacade#getSuperClass()
3015     */
3016    public ClassifierFacade getSuperClass()
3017    {
3018        return this.getSuperService().getSuperClass();
3019    }
3020
3021    /**
3022     * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
3023     * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
3024     * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
3025     * 'wrapperMappingsUri', this property must point to the location of the mappings file which
3026     * maps the primitives to wrapper types.
3027     * @see ClassifierFacade#getWrapperName()
3028     */
3029    public String getWrapperName()
3030    {
3031        return this.getSuperService().getWrapperName();
3032    }
3033
3034    /**
3035     * Indicates if this classifier is 'abstract'.
3036     * @see ClassifierFacade#isAbstract()
3037     */
3038    public boolean isAbstract()
3039    {
3040        return this.getSuperService().isAbstract();
3041    }
3042
3043    /**
3044     * True if this classifier represents an array type. False otherwise.
3045     * @see ClassifierFacade#isArrayType()
3046     */
3047    public boolean isArrayType()
3048    {
3049        return this.getSuperService().isArrayType();
3050    }
3051
3052    /**
3053     * True if the ClassifierFacade is an AssociationClass.
3054     * @see ClassifierFacade#isAssociationClass()
3055     */
3056    public boolean isAssociationClass()
3057    {
3058        return this.getSuperService().isAssociationClass();
3059    }
3060
3061    /**
3062     * Returns true if this type represents a Blob type.
3063     * @see ClassifierFacade#isBlobType()
3064     */
3065    public boolean isBlobType()
3066    {
3067        return this.getSuperService().isBlobType();
3068    }
3069
3070    /**
3071     * Indicates if this type represents a boolean type or not.
3072     * @see ClassifierFacade#isBooleanType()
3073     */
3074    public boolean isBooleanType()
3075    {
3076        return this.getSuperService().isBooleanType();
3077    }
3078
3079    /**
3080     * Indicates if this type represents a char, Character, or java.lang.Character type or not.
3081     * @see ClassifierFacade#isCharacterType()
3082     */
3083    public boolean isCharacterType()
3084    {
3085        return this.getSuperService().isCharacterType();
3086    }
3087
3088    /**
3089     * Returns true if this type represents a Clob type.
3090     * @see ClassifierFacade#isClobType()
3091     */
3092    public boolean isClobType()
3093    {
3094        return this.getSuperService().isClobType();
3095    }
3096
3097    /**
3098     * True if this classifier represents a collection type. False otherwise.
3099     * @see ClassifierFacade#isCollectionType()
3100     */
3101    public boolean isCollectionType()
3102    {
3103        return this.getSuperService().isCollectionType();
3104    }
3105
3106    /**
3107     * True/false depending on whether or not this classifier represents a datatype. A data type is
3108     * a type whose instances are identified only by their value. A data type may contain attributes
3109     * to support the modeling of structured data types.
3110     * @see ClassifierFacade#isDataType()
3111     */
3112    public boolean isDataType()
3113    {
3114        return this.getSuperService().isDataType();
3115    }
3116
3117    /**
3118     * True when this classifier is a date type.
3119     * @see ClassifierFacade#isDateType()
3120     */
3121    public boolean isDateType()
3122    {
3123        return this.getSuperService().isDateType();
3124    }
3125
3126    /**
3127     * Indicates if this type represents a Double type or not.
3128     * @see ClassifierFacade#isDoubleType()
3129     */
3130    public boolean isDoubleType()
3131    {
3132        return this.getSuperService().isDoubleType();
3133    }
3134
3135    /**
3136     * Indicates whether or not this classifier represents an "EmbeddedValue'.
3137     * @see ClassifierFacade#isEmbeddedValue()
3138     */
3139    public boolean isEmbeddedValue()
3140    {
3141        return this.getSuperService().isEmbeddedValue();
3142    }
3143
3144    /**
3145     * True if this classifier is in fact marked as an enumeration.
3146     * @see ClassifierFacade#isEnumeration()
3147     */
3148    public boolean isEnumeration()
3149    {
3150        return this.getSuperService().isEnumeration();
3151    }
3152
3153    /**
3154     * Returns true if this type represents a 'file' type.
3155     * @see ClassifierFacade#isFileType()
3156     */
3157    public boolean isFileType()
3158    {
3159        return this.getSuperService().isFileType();
3160    }
3161
3162    /**
3163     * Indicates if this type represents a Float type or not.
3164     * @see ClassifierFacade#isFloatType()
3165     */
3166    public boolean isFloatType()
3167    {
3168        return this.getSuperService().isFloatType();
3169    }
3170
3171    /**
3172     * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
3173     * @see ClassifierFacade#isIntegerType()
3174     */
3175    public boolean isIntegerType()
3176    {
3177        return this.getSuperService().isIntegerType();
3178    }
3179
3180    /**
3181     * True/false depending on whether or not this Classifier represents an interface.
3182     * @see ClassifierFacade#isInterface()
3183     */
3184    public boolean isInterface()
3185    {
3186        return this.getSuperService().isInterface();
3187    }
3188
3189    /**
3190     * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
3191     * @see ClassifierFacade#isLeaf()
3192     */
3193    public boolean isLeaf()
3194    {
3195        return this.getSuperService().isLeaf();
3196    }
3197
3198    /**
3199     * True if this classifier represents a list type. False otherwise.
3200     * @see ClassifierFacade#isListType()
3201     */
3202    public boolean isListType()
3203    {
3204        return this.getSuperService().isListType();
3205    }
3206
3207    /**
3208     * Indicates if this type represents a Long type or not.
3209     * @see ClassifierFacade#isLongType()
3210     */
3211    public boolean isLongType()
3212    {
3213        return this.getSuperService().isLongType();
3214    }
3215
3216    /**
3217     * Indicates whether or not this classifier represents a Map type.
3218     * @see ClassifierFacade#isMapType()
3219     */
3220    public boolean isMapType()
3221    {
3222        return this.getSuperService().isMapType();
3223    }
3224
3225    /**
3226     * Indicates whether or not this classifier represents a primitive type.
3227     * @see ClassifierFacade#isPrimitive()
3228     */
3229    public boolean isPrimitive()
3230    {
3231        return this.getSuperService().isPrimitive();
3232    }
3233
3234    /**
3235     * True if this classifier represents a set type. False otherwise.
3236     * @see ClassifierFacade#isSetType()
3237     */
3238    public boolean isSetType()
3239    {
3240        return this.getSuperService().isSetType();
3241    }
3242
3243    /**
3244     * Indicates whether or not this classifier represents a string type.
3245     * @see ClassifierFacade#isStringType()
3246     */
3247    public boolean isStringType()
3248    {
3249        return this.getSuperService().isStringType();
3250    }
3251
3252    /**
3253     * Indicates whether or not this classifier represents a time type.
3254     * @see ClassifierFacade#isTimeType()
3255     */
3256    public boolean isTimeType()
3257    {
3258        return this.getSuperService().isTimeType();
3259    }
3260
3261    /**
3262     * Returns true if this type is a wrapped primitive type.
3263     * @see ClassifierFacade#isWrappedPrimitive()
3264     */
3265    public boolean isWrappedPrimitive()
3266    {
3267        return this.getSuperService().isWrappedPrimitive();
3268    }
3269
3270    /**
3271     * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
3272     * to true.
3273     * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
3274     */
3275    public Object findTaggedValue(String tagName, boolean follow)
3276    {
3277        return this.getSuperService().findTaggedValue(tagName, follow);
3278    }
3279
3280    /**
3281     * All generalizations for this generalizable element, goes up the inheritance tree.
3282     * @see GeneralizableElementFacade#getAllGeneralizations()
3283     */
3284    public Collection<GeneralizableElementFacade> getAllGeneralizations()
3285    {
3286        return this.getSuperService().getAllGeneralizations();
3287    }
3288
3289    /**
3290     * All specializations (travels down the inheritance hierarchy).
3291     * @see GeneralizableElementFacade#getAllSpecializations()
3292     */
3293    public Collection<GeneralizableElementFacade> getAllSpecializations()
3294    {
3295        return this.getSuperService().getAllSpecializations();
3296    }
3297
3298    /**
3299     * Gets the direct generalization for this generalizable element.
3300     * @see GeneralizableElementFacade#getGeneralization()
3301     */
3302    public GeneralizableElementFacade getGeneralization()
3303    {
3304        return this.getSuperService().getGeneralization();
3305    }
3306
3307    /**
3308     * Gets the actual links that this generalization element is part of (it plays either the
3309     * specialization or generalization).
3310     * @see GeneralizableElementFacade#getGeneralizationLinks()
3311     */
3312    public Collection<GeneralizationFacade> getGeneralizationLinks()
3313    {
3314        return this.getSuperService().getGeneralizationLinks();
3315    }
3316
3317    /**
3318     * A comma separated list of the fully qualified names of all generalizations.
3319     * @see GeneralizableElementFacade#getGeneralizationList()
3320     */
3321    public String getGeneralizationList()
3322    {
3323        return this.getSuperService().getGeneralizationList();
3324    }
3325
3326    /**
3327     * The element found when you recursively follow the generalization path up to the root. If an
3328     * element has no generalization itself will be considered the root.
3329     * @see GeneralizableElementFacade#getGeneralizationRoot()
3330     */
3331    public GeneralizableElementFacade getGeneralizationRoot()
3332    {
3333        return this.getSuperService().getGeneralizationRoot();
3334    }
3335
3336    /**
3337     * Return all generalizations (ancestors) from this generalizable element.
3338     * @see GeneralizableElementFacade#getGeneralizations()
3339     */
3340    public Collection<GeneralizableElementFacade> getGeneralizations()
3341    {
3342        return this.getSuperService().getGeneralizations();
3343    }
3344
3345    /**
3346     * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
3347     * @see GeneralizableElementFacade#getSpecializations()
3348     */
3349    public Collection<GeneralizableElementFacade> getSpecializations()
3350    {
3351        return this.getSuperService().getSpecializations();
3352    }
3353
3354    /**
3355     * Copies all tagged values from the given ModelElementFacade to this model element facade.
3356     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
3357     */
3358    public void copyTaggedValues(ModelElementFacade element)
3359    {
3360        this.getSuperService().copyTaggedValues(element);
3361    }
3362
3363    /**
3364     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
3365     * one found will be returned.
3366     * @see ModelElementFacade#findTaggedValue(String tagName)
3367     */
3368    public Object findTaggedValue(String tagName)
3369    {
3370        return this.getSuperService().findTaggedValue(tagName);
3371    }
3372
3373    /**
3374     * Returns all the values for the tagged value with the specified name. The returned collection
3375     * will contains only String instances, or will be empty. Never null.
3376     * @see ModelElementFacade#findTaggedValues(String tagName)
3377     */
3378    public Collection<Object> findTaggedValues(String tagName)
3379    {
3380        return this.getSuperService().findTaggedValues(tagName);
3381    }
3382
3383    /**
3384     * Returns the fully qualified name of the model element. The fully qualified name includes
3385     * complete package qualified name of the underlying model element. The templates parameter will
3386     * be replaced by the correct one given the binding relation of the parameter to this element.
3387     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
3388     */
3389    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
3390    {
3391        return this.getSuperService().getBindedFullyQualifiedName(bindedElement);
3392    }
3393
3394    /**
3395     * Gets all constraints belonging to the model element.
3396     * @see ModelElementFacade#getConstraints()
3397     */
3398    public Collection<ConstraintFacade> getConstraints()
3399    {
3400        return this.getSuperService().getConstraints();
3401    }
3402
3403    /**
3404     * Returns the constraints of the argument kind that have been placed onto this model. Typical
3405     * kinds are "inv", "pre" and "post". Other kinds are possible.
3406     * @see ModelElementFacade#getConstraints(String kind)
3407     */
3408    public Collection<ConstraintFacade> getConstraints(String kind)
3409    {
3410        return this.getSuperService().getConstraints(kind);
3411    }
3412
3413    /**
3414     * Gets the documentation for the model element, The indent argument is prefixed to each line.
3415     * By default this method wraps lines after 64 characters.
3416     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
3417     * @see ModelElementFacade#getDocumentation(String indent)
3418     */
3419    public String getDocumentation(String indent)
3420    {
3421        return this.getSuperService().getDocumentation(indent);
3422    }
3423
3424    /**
3425     * This method returns the documentation for this model element, with the lines wrapped after
3426     * the specified number of characters, values of less than 1 will indicate no line wrapping is
3427     * required. By default paragraphs are returned as HTML.
3428     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
3429     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
3430     */
3431    public String getDocumentation(String indent, int lineLength)
3432    {
3433        return this.getSuperService().getDocumentation(indent, lineLength);
3434    }
3435
3436    /**
3437     * This method returns the documentation for this model element, with the lines wrapped after
3438     * the specified number of characters, values of less than 1 will indicate no line wrapping is
3439     * required. HTML style determines if HTML Escaping is applied.
3440     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
3441     */
3442    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
3443    {
3444        return this.getSuperService().getDocumentation(indent, lineLength, htmlStyle);
3445    }
3446
3447    /**
3448     * The fully qualified name of this model element.
3449     * @see ModelElementFacade#getFullyQualifiedName()
3450     */
3451    public String getFullyQualifiedName()
3452    {
3453        return this.getSuperService().getFullyQualifiedName();
3454    }
3455
3456    /**
3457     * Returns the fully qualified name of the model element. The fully qualified name includes
3458     * complete package qualified name of the underlying model element.  If modelName is true, then
3459     * the original name of the model element (the name contained within the model) will be the name
3460     * returned, otherwise a name from a language mapping will be returned.
3461     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
3462     */
3463    public String getFullyQualifiedName(boolean modelName)
3464    {
3465        return this.getSuperService().getFullyQualifiedName(modelName);
3466    }
3467
3468    /**
3469     * Returns the fully qualified name as a path, the returned value always starts with out a slash
3470     * '/'.
3471     * @see ModelElementFacade#getFullyQualifiedNamePath()
3472     */
3473    public String getFullyQualifiedNamePath()
3474    {
3475        return this.getSuperService().getFullyQualifiedNamePath();
3476    }
3477
3478    /**
3479     * Gets the unique identifier of the underlying model element.
3480     * @see ModelElementFacade#getId()
3481     */
3482    public String getId()
3483    {
3484        return this.getSuperService().getId();
3485    }
3486
3487    /**
3488     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
3489     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
3490     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
3491     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
3492     * JDK5 compiler level.
3493     * @see ModelElementFacade#getKeywords()
3494     */
3495    public Collection<String> getKeywords()
3496    {
3497        return this.getSuperService().getKeywords();
3498    }
3499
3500    /**
3501     * UML2: Retrieves a localized label for this named element.
3502     * @see ModelElementFacade#getLabel()
3503     */
3504    public String getLabel()
3505    {
3506        return this.getSuperService().getLabel();
3507    }
3508
3509    /**
3510     * The language mappings that have been set for this model element.
3511     * @see ModelElementFacade#getLanguageMappings()
3512     */
3513    public TypeMappings getLanguageMappings()
3514    {
3515        return this.getSuperService().getLanguageMappings();
3516    }
3517
3518    /**
3519     * Return the model containing this model element (multiple models may be loaded and processed
3520     * at the same time).
3521     * @see ModelElementFacade#getModel()
3522     */
3523    public ModelFacade getModel()
3524    {
3525        return this.getSuperService().getModel();
3526    }
3527
3528    /**
3529     * The name of the model element.
3530     * @see ModelElementFacade#getName()
3531     */
3532    public String getName()
3533    {
3534        return this.getSuperService().getName();
3535    }
3536
3537    /**
3538     * Gets the package to which this model element belongs.
3539     * @see ModelElementFacade#getPackage()
3540     */
3541    public ModelElementFacade getPackage()
3542    {
3543        return this.getSuperService().getPackage();
3544    }
3545
3546    /**
3547     * The name of this model element's package.
3548     * @see ModelElementFacade#getPackageName()
3549     */
3550    public String getPackageName()
3551    {
3552        return this.getSuperService().getPackageName();
3553    }
3554
3555    /**
3556     * Gets the package name (optionally providing the ability to retrieve the model name and not
3557     * the mapped name).
3558     * @see ModelElementFacade#getPackageName(boolean modelName)
3559     */
3560    public String getPackageName(boolean modelName)
3561    {
3562        return this.getSuperService().getPackageName(modelName);
3563    }
3564
3565    /**
3566     * Returns the package as a path, the returned value always starts with out a slash '/'.
3567     * @see ModelElementFacade#getPackagePath()
3568     */
3569    public String getPackagePath()
3570    {
3571        return this.getSuperService().getPackagePath();
3572    }
3573
3574    /**
3575     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
3576     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
3577     * the names of the containing namespaces starting at the root of the hierarchy and ending with
3578     * the name of the NamedElement itself.
3579     * @see ModelElementFacade#getQualifiedName()
3580     */
3581    public String getQualifiedName()
3582    {
3583        return this.getSuperService().getQualifiedName();
3584    }
3585
3586    /**
3587     * Gets the root package for the model element.
3588     * @see ModelElementFacade#getRootPackage()
3589     */
3590    public PackageFacade getRootPackage()
3591    {
3592        return this.getSuperService().getRootPackage();
3593    }
3594
3595    /**
3596     * Gets the dependencies for which this model element is the source.
3597     * @see ModelElementFacade#getSourceDependencies()
3598     */
3599    public Collection<DependencyFacade> getSourceDependencies()
3600    {
3601        return this.getSuperService().getSourceDependencies();
3602    }
3603
3604    /**
3605     * If this model element is the context of an activity graph, this represents that activity
3606     * graph.
3607     * @see ModelElementFacade#getStateMachineContext()
3608     */
3609    public StateMachineFacade getStateMachineContext()
3610    {
3611        return this.getSuperService().getStateMachineContext();
3612    }
3613
3614    /**
3615     * The collection of ALL stereotype names for this model element.
3616     * @see ModelElementFacade#getStereotypeNames()
3617     */
3618    public Collection<String> getStereotypeNames()
3619    {
3620        return this.getSuperService().getStereotypeNames();
3621    }
3622
3623    /**
3624     * Gets all stereotypes for this model element.
3625     * @see ModelElementFacade#getStereotypes()
3626     */
3627    public Collection<StereotypeFacade> getStereotypes()
3628    {
3629        return this.getSuperService().getStereotypes();
3630    }
3631
3632    /**
3633     * Return the TaggedValues associated with this model element, under all stereotypes.
3634     * @see ModelElementFacade#getTaggedValues()
3635     */
3636    public Collection<TaggedValueFacade> getTaggedValues()
3637    {
3638        return this.getSuperService().getTaggedValues();
3639    }
3640
3641    /**
3642     * Gets the dependencies for which this model element is the target.
3643     * @see ModelElementFacade#getTargetDependencies()
3644     */
3645    public Collection<DependencyFacade> getTargetDependencies()
3646    {
3647        return this.getSuperService().getTargetDependencies();
3648    }
3649
3650    /**
3651     * Get the template parameter for this model element having the parameterName
3652     * @see ModelElementFacade#getTemplateParameter(String parameterName)
3653     */
3654    public Object getTemplateParameter(String parameterName)
3655    {
3656        return this.getSuperService().getTemplateParameter(parameterName);
3657    }
3658
3659    /**
3660     * Get the template parameters for this model element
3661     * @see ModelElementFacade#getTemplateParameters()
3662     */
3663    public Collection<TemplateParameterFacade> getTemplateParameters()
3664    {
3665        return this.getSuperService().getTemplateParameters();
3666    }
3667
3668    /**
3669     * The visibility (i.e. public, private, protected or package) of the model element, will
3670     * attempt a lookup for these values in the language mappings (if any).
3671     * @see ModelElementFacade#getVisibility()
3672     */
3673    public String getVisibility()
3674    {
3675        return this.getSuperService().getVisibility();
3676    }
3677
3678    /**
3679     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
3680     * is taken into account when searching for the stereotype), false otherwise.
3681     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
3682     */
3683    public boolean hasExactStereotype(String stereotypeName)
3684    {
3685        return this.getSuperService().hasExactStereotype(stereotypeName);
3686    }
3687
3688    /**
3689     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
3690     * pipe, semicolon, or << >>
3691     * @see ModelElementFacade#hasKeyword(String keywordName)
3692     */
3693    public boolean hasKeyword(String keywordName)
3694    {
3695        return this.getSuperService().hasKeyword(keywordName);
3696    }
3697
3698    /**
3699     * Returns true if the model element has the specified stereotype.  If the stereotype itself
3700     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
3701     * one of the stereotype's ancestors has a matching name this method will return true, false
3702     * otherwise.
3703     * For example, if we have a certain stereotype called <<exception>> and a model element has a
3704     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
3705     * method with 'stereotypeName' defined as 'exception' the method would return true since
3706     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
3707     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
3708     * @see ModelElementFacade#hasStereotype(String stereotypeName)
3709     */
3710    public boolean hasStereotype(String stereotypeName)
3711    {
3712        return this.getSuperService().hasStereotype(stereotypeName);
3713    }
3714
3715    /**
3716     * True if there are target dependencies from this element that are instances of BindingFacade.
3717     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
3718     * @see ModelElementFacade#isBindingDependenciesPresent()
3719     */
3720    public boolean isBindingDependenciesPresent()
3721    {
3722        return this.getSuperService().isBindingDependenciesPresent();
3723    }
3724
3725    /**
3726     * Indicates if any constraints are present on this model element.
3727     * @see ModelElementFacade#isConstraintsPresent()
3728     */
3729    public boolean isConstraintsPresent()
3730    {
3731        return this.getSuperService().isConstraintsPresent();
3732    }
3733
3734    /**
3735     * Indicates if any documentation is present on this model element.
3736     * @see ModelElementFacade#isDocumentationPresent()
3737     */
3738    public boolean isDocumentationPresent()
3739    {
3740        return this.getSuperService().isDocumentationPresent();
3741    }
3742
3743    /**
3744     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
3745     * @see ModelElementFacade#isReservedWord()
3746     */
3747    public boolean isReservedWord()
3748    {
3749        return this.getSuperService().isReservedWord();
3750    }
3751
3752    /**
3753     * True is there are template parameters on this model element. For UML2, applies to Class,
3754     * Operation, Property, and Parameter.
3755     * @see ModelElementFacade#isTemplateParametersPresent()
3756     */
3757    public boolean isTemplateParametersPresent()
3758    {
3759        return this.getSuperService().isTemplateParametersPresent();
3760    }
3761
3762    /**
3763     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
3764     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
3765     * Enumerations and Interfaces, optionally applies on other model elements.
3766     * @see ModelElementFacade#isValidIdentifierName()
3767     */
3768    public boolean isValidIdentifierName()
3769    {
3770        return this.getSuperService().isValidIdentifierName();
3771    }
3772
3773    /**
3774     * Searches for the constraint with the specified 'name' on this model element, and if found
3775     * translates it using the specified 'translation' from a translation library discovered by the
3776     * framework.
3777     * @see ModelElementFacade#translateConstraint(String name, String translation)
3778     */
3779    public String translateConstraint(String name, String translation)
3780    {
3781        return this.getSuperService().translateConstraint(name, translation);
3782    }
3783
3784    /**
3785     * Translates all constraints belonging to this model element with the given 'translation'.
3786     * @see ModelElementFacade#translateConstraints(String translation)
3787     */
3788    public String[] translateConstraints(String translation)
3789    {
3790        return this.getSuperService().translateConstraints(translation);
3791    }
3792
3793    /**
3794     * Translates the constraints of the specified 'kind' belonging to this model element.
3795     * @see ModelElementFacade#translateConstraints(String kind, String translation)
3796     */
3797    public String[] translateConstraints(String kind, String translation)
3798    {
3799        return this.getSuperService().translateConstraints(kind, translation);
3800    }
3801
3802    /**
3803     * Returns a collection of all entities this service and its ancestors have a relation to.
3804     * @see Service#getAllEntityReferences()
3805     */
3806    public Collection<DependencyFacade> getAllEntityReferences()
3807    {
3808        return this.getSuperService().getAllEntityReferences();
3809    }
3810
3811    /**
3812     * All messaging destinations that belong to this service and all decendent services.
3813     * @see Service#getAllMessagingDestinations()
3814     */
3815    public Collection<Destination> getAllMessagingDestinations()
3816    {
3817        return this.getSuperService().getAllMessagingDestinations();
3818    }
3819
3820    /**
3821     * All roles associated with the service, this includes both roles that have access to the
3822     * entire service, and any roles that have access to a single operation.
3823     * @see Service#getAllRoles()
3824     */
3825    public Collection<Role> getAllRoles()
3826    {
3827        return this.getSuperService().getAllRoles();
3828    }
3829
3830    /**
3831     * Returns a collection of all services this service and its ancestors have a relation to.
3832     * @see Service#getAllServiceReferences()
3833     */
3834    public Collection<DependencyFacade> getAllServiceReferences()
3835    {
3836        return this.getSuperService().getAllServiceReferences();
3837    }
3838
3839    /**
3840     * References to all entities to which this service has a dependency.
3841     * @see Service#getEntityReferences()
3842     */
3843    public Collection<DependencyFacade> getEntityReferences()
3844    {
3845        return this.getSuperService().getEntityReferences();
3846    }
3847
3848    /**
3849     * All messaging destinations available to this service.
3850     * @see Service#getMessagingDestinations()
3851     */
3852    public Collection<Destination> getMessagingDestinations()
3853    {
3854        return this.getSuperService().getMessagingDestinations();
3855    }
3856
3857    /**
3858     * The roles of the service, these are the actor's that can access this service.
3859     * @see Service#getRoles()
3860     */
3861    public Collection<Role> getRoles()
3862    {
3863        return this.getSuperService().getRoles();
3864    }
3865
3866    /**
3867     * References to all services to which this service has a dependency.
3868     * @see Service#getServiceReferences()
3869     */
3870    public Collection<DependencyFacade> getServiceReferences()
3871    {
3872        return this.getSuperService().getServiceReferences();
3873    }
3874
3875    /**
3876     * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
3877     */
3878    @Override
3879    public void initialize()
3880    {
3881        this.getSuperService().initialize();
3882    }
3883
3884    /**
3885     * @return Object getSuperService().getValidationOwner()
3886     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
3887     */
3888    @Override
3889    public Object getValidationOwner()
3890    {
3891        Object owner = this.getSuperService().getValidationOwner();
3892        return owner;
3893    }
3894
3895    /**
3896     * @return String getSuperService().getValidationName()
3897     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
3898     */
3899    @Override
3900    public String getValidationName()
3901    {
3902        String name = this.getSuperService().getValidationName();
3903        return name;
3904    }
3905
3906    /**
3907     * @param validationMessages Collection<ModelValidationMessage>
3908     * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
3909     */
3910    @Override
3911    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
3912    {
3913        this.getSuperService().validateInvariants(validationMessages);
3914    }
3915
3916    /**
3917     * The property that stores the name of the metafacade.
3918     */
3919    private static final String NAME_PROPERTY = "name";
3920    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
3921
3922    /**
3923     * @see Object#toString()
3924     */
3925    @Override
3926    public String toString()
3927    {
3928        final StringBuilder toString = new StringBuilder(this.getClass().getName());
3929        toString.append("[");
3930        try
3931        {
3932            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
3933        }
3934        catch (final Throwable tryAgain)
3935        {
3936            try
3937            {
3938                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
3939            }
3940            catch (final Throwable ignore)
3941            {
3942                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
3943            }
3944        }
3945        toString.append("]");
3946        return toString.toString();
3947    }
3948}