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 org.andromda.core.common.Introspector;
009import org.andromda.core.metafacade.MetafacadeBase;
010import org.andromda.core.metafacade.MetafacadeFactory;
011import org.andromda.core.metafacade.ModelValidationMessage;
012import org.andromda.metafacades.uml.AttributeFacade;
013import org.andromda.metafacades.uml.ClassifierFacade;
014import org.andromda.metafacades.uml.ConstraintFacade;
015import org.andromda.metafacades.uml.DependencyFacade;
016import org.andromda.metafacades.uml.EnumerationFacade;
017import org.andromda.metafacades.uml.ModelElementFacade;
018import org.andromda.metafacades.uml.ModelFacade;
019import org.andromda.metafacades.uml.PackageFacade;
020import org.andromda.metafacades.uml.StateMachineFacade;
021import org.andromda.metafacades.uml.StereotypeFacade;
022import org.andromda.metafacades.uml.TaggedValueFacade;
023import org.andromda.metafacades.uml.TemplateParameterFacade;
024import org.andromda.metafacades.uml.TypeMappings;
025
026/**
027 * TODO: Model Documentation for org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade
028 * MetafacadeLogic for EJB3SessionAttributeFacade
029 *
030 * @see EJB3SessionAttributeFacade
031 */
032public abstract class EJB3SessionAttributeFacadeLogic
033    extends MetafacadeBase
034    implements EJB3SessionAttributeFacade
035{
036    /**
037     * The underlying UML object
038     * @see Object
039     */
040    protected Object metaObject;
041
042    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
043     * @param metaObjectIn
044     * @param context
045     */
046    protected EJB3SessionAttributeFacadeLogic(Object metaObjectIn, String context)
047    {
048        super(metaObjectIn, getContext(context));
049        this.superAttributeFacade =
050           (AttributeFacade)
051            MetafacadeFactory.getInstance().createFacadeImpl(
052                    "org.andromda.metafacades.uml.AttributeFacade",
053                    metaObjectIn,
054                    getContext(context));
055        this.metaObject = metaObjectIn;
056    }
057
058    /**
059     * Gets the context for this metafacade logic instance.
060     * @param context String. Set to EJB3SessionAttributeFacade if null
061     * @return context String
062     */
063    private static String getContext(String context)
064    {
065        if (context == null)
066        {
067            context = "org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade";
068        }
069        return context;
070    }
071
072    private AttributeFacade superAttributeFacade;
073    private boolean superAttributeFacadeInitialized = false;
074
075    /**
076     * Gets the AttributeFacade parent instance.
077     * @return this.superAttributeFacade AttributeFacade
078     */
079    private AttributeFacade getSuperAttributeFacade()
080    {
081        if (!this.superAttributeFacadeInitialized)
082        {
083            ((MetafacadeBase)this.superAttributeFacade).setMetafacadeContext(this.getMetafacadeContext());
084            this.superAttributeFacadeInitialized = true;
085        }
086        return this.superAttributeFacade;
087    }
088
089    /** Reset context only for non-root metafacades
090     * @param context
091     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
092     */
093    @Override
094    public void resetMetafacadeContext(String context)
095    {
096        if (!this.contextRoot) // reset context only for non-root metafacades
097        {
098            context = getContext(context);  // to have same value as in original constructor call
099            setMetafacadeContext (context);
100            if (this.superAttributeFacadeInitialized)
101            {
102                ((MetafacadeBase)this.superAttributeFacade).resetMetafacadeContext(context);
103            }
104        }
105    }
106
107    /**
108     * @return boolean true always
109     * @see EJB3SessionAttributeFacade
110     */
111    public boolean isEJB3SessionAttributeFacadeMetaType()
112    {
113        return true;
114    }
115
116    // --------------- attributes ---------------------
117
118   /**
119    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getTransactionType()
120    * @return String
121    */
122    protected abstract String handleGetTransactionType();
123
124    private String __transactionType1a;
125    private boolean __transactionType1aSet = false;
126
127    /**
128     * Gets the transaction type for this attribute (i.e. REQUIRED, etc)
129     * @return (String)handleGetTransactionType()
130     */
131    public final String getTransactionType()
132    {
133        String transactionType1a = this.__transactionType1a;
134        if (!this.__transactionType1aSet)
135        {
136            // transactionType has no pre constraints
137            transactionType1a = handleGetTransactionType();
138            // transactionType has no post constraints
139            this.__transactionType1a = transactionType1a;
140            if (isMetafacadePropertyCachingEnabled())
141            {
142                this.__transactionType1aSet = true;
143            }
144        }
145        return transactionType1a;
146    }
147
148   /**
149    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamBijectionIn()
150    * @return boolean
151    */
152    protected abstract boolean handleIsSeamBijectionIn();
153
154    private boolean __seamBijectionIn2a;
155    private boolean __seamBijectionIn2aSet = false;
156
157    /**
158     * Returns true the attribute is modelled with the <<In>> stereotype indicating that it is a
159     * Seam component attribute and is to be injected from a context variable at the start of each
160     * component invocation.
161     * @return (boolean)handleIsSeamBijectionIn()
162     */
163    public final boolean isSeamBijectionIn()
164    {
165        boolean seamBijectionIn2a = this.__seamBijectionIn2a;
166        if (!this.__seamBijectionIn2aSet)
167        {
168            // seamBijectionIn has no pre constraints
169            seamBijectionIn2a = handleIsSeamBijectionIn();
170            // seamBijectionIn has no post constraints
171            this.__seamBijectionIn2a = seamBijectionIn2a;
172            if (isMetafacadePropertyCachingEnabled())
173            {
174                this.__seamBijectionIn2aSet = true;
175            }
176        }
177        return seamBijectionIn2a;
178    }
179
180   /**
181    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamBijectionOut()
182    * @return boolean
183    */
184    protected abstract boolean handleIsSeamBijectionOut();
185
186    private boolean __seamBijectionOut3a;
187    private boolean __seamBijectionOut3aSet = false;
188
189    /**
190     * Returns true if the attribute is modelled with the <<Out>> stereotype indicating that it is a
191     * Seam component attribute and is to be outjected to a context variable at the end of each
192     * component invocation.
193     * @return (boolean)handleIsSeamBijectionOut()
194     */
195    public final boolean isSeamBijectionOut()
196    {
197        boolean seamBijectionOut3a = this.__seamBijectionOut3a;
198        if (!this.__seamBijectionOut3aSet)
199        {
200            // seamBijectionOut has no pre constraints
201            seamBijectionOut3a = handleIsSeamBijectionOut();
202            // seamBijectionOut has no post constraints
203            this.__seamBijectionOut3a = seamBijectionOut3a;
204            if (isMetafacadePropertyCachingEnabled())
205            {
206                this.__seamBijectionOut3aSet = true;
207            }
208        }
209        return seamBijectionOut3a;
210    }
211
212   /**
213    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamValidationValid()
214    * @return boolean
215    */
216    protected abstract boolean handleIsSeamValidationValid();
217
218    private boolean __seamValidationValid4a;
219    private boolean __seamValidationValid4aSet = false;
220
221    /**
222     * Returns true if the <<Valid>> stereotype is modelled on seam component bean attribute to
223     * Indicates that the hibernate Validator recursively validate this and related objects when an
224     * action listener Seam component method with IfInvalid annotation is invoked.
225     * @return (boolean)handleIsSeamValidationValid()
226     */
227    public final boolean isSeamValidationValid()
228    {
229        boolean seamValidationValid4a = this.__seamValidationValid4a;
230        if (!this.__seamValidationValid4aSet)
231        {
232            // seamValidationValid has no pre constraints
233            seamValidationValid4a = handleIsSeamValidationValid();
234            // seamValidationValid has no post constraints
235            this.__seamValidationValid4a = seamValidationValid4a;
236            if (isMetafacadePropertyCachingEnabled())
237            {
238                this.__seamValidationValid4aSet = true;
239            }
240        }
241        return seamValidationValid4a;
242    }
243
244   /**
245    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamDataModel()
246    * @return boolean
247    */
248    protected abstract boolean handleIsSeamDataModel();
249
250    private boolean __seamDataModel5a;
251    private boolean __seamDataModel5aSet = false;
252
253    /**
254     * Returns true if the attribute of type List, Map, Set or Object[] is modelled with the
255     * <<DataModel>> stereotype indicating that it shall be exposed as a JSF DataModel into the
256     * scope of the owning component (or the EVENT scope if the owning component is STATELESS). In
257     * the case of Map, each row of the DataModel is a Map.Entry.
258     * @return (boolean)handleIsSeamDataModel()
259     */
260    public final boolean isSeamDataModel()
261    {
262        boolean seamDataModel5a = this.__seamDataModel5a;
263        if (!this.__seamDataModel5aSet)
264        {
265            // seamDataModel has no pre constraints
266            seamDataModel5a = handleIsSeamDataModel();
267            // seamDataModel has no post constraints
268            this.__seamDataModel5a = seamDataModel5a;
269            if (isMetafacadePropertyCachingEnabled())
270            {
271                this.__seamDataModel5aSet = true;
272            }
273        }
274        return seamDataModel5a;
275    }
276
277   /**
278    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamDataModelSelection()
279    * @return boolean
280    */
281    protected abstract boolean handleIsSeamDataModelSelection();
282
283    private boolean __seamDataModelSelection6a;
284    private boolean __seamDataModelSelection6aSet = false;
285
286    /**
287     * Returns true if stereotype <<DataModelSelection>> is set. Injects the selected value from the
288     * JSF DataModel (this is the element of the underlying collection, or the map value).
289     * @return (boolean)handleIsSeamDataModelSelection()
290     */
291    public final boolean isSeamDataModelSelection()
292    {
293        boolean seamDataModelSelection6a = this.__seamDataModelSelection6a;
294        if (!this.__seamDataModelSelection6aSet)
295        {
296            // seamDataModelSelection has no pre constraints
297            seamDataModelSelection6a = handleIsSeamDataModelSelection();
298            // seamDataModelSelection has no post constraints
299            this.__seamDataModelSelection6a = seamDataModelSelection6a;
300            if (isMetafacadePropertyCachingEnabled())
301            {
302                this.__seamDataModelSelection6aSet = true;
303            }
304        }
305        return seamDataModelSelection6a;
306    }
307
308   /**
309    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamDataModelSelectionIndex()
310    * @return boolean
311    */
312    protected abstract boolean handleIsSeamDataModelSelectionIndex();
313
314    private boolean __seamDataModelSelectionIndex7a;
315    private boolean __seamDataModelSelectionIndex7aSet = false;
316
317    /**
318     * Returns true if stereotype <<DataModelSelectionIndex>> is set. Exposes the selection index of
319     * the JSF DataModel as an attribute of the component (this is the row number of the underlying
320     * collection, or the map key).
321     * @return (boolean)handleIsSeamDataModelSelectionIndex()
322     */
323    public final boolean isSeamDataModelSelectionIndex()
324    {
325        boolean seamDataModelSelectionIndex7a = this.__seamDataModelSelectionIndex7a;
326        if (!this.__seamDataModelSelectionIndex7aSet)
327        {
328            // seamDataModelSelectionIndex has no pre constraints
329            seamDataModelSelectionIndex7a = handleIsSeamDataModelSelectionIndex();
330            // seamDataModelSelectionIndex has no post constraints
331            this.__seamDataModelSelectionIndex7a = seamDataModelSelectionIndex7a;
332            if (isMetafacadePropertyCachingEnabled())
333            {
334                this.__seamDataModelSelectionIndex7aSet = true;
335            }
336        }
337        return seamDataModelSelectionIndex7a;
338    }
339
340   /**
341    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamBijectionLogger()
342    * @return boolean
343    */
344    protected abstract boolean handleIsSeamBijectionLogger();
345
346    private boolean __seamBijectionLogger8a;
347    private boolean __seamBijectionLogger8aSet = false;
348
349    /**
350     * Returns true if stereotype <<Logger>> is set. Specifies that a component field is to be
351     * injected with an instance of org.jboss.seam.log.Log.
352     * @return (boolean)handleIsSeamBijectionLogger()
353     */
354    public final boolean isSeamBijectionLogger()
355    {
356        boolean seamBijectionLogger8a = this.__seamBijectionLogger8a;
357        if (!this.__seamBijectionLogger8aSet)
358        {
359            // seamBijectionLogger has no pre constraints
360            seamBijectionLogger8a = handleIsSeamBijectionLogger();
361            // seamBijectionLogger has no post constraints
362            this.__seamBijectionLogger8a = seamBijectionLogger8a;
363            if (isMetafacadePropertyCachingEnabled())
364            {
365                this.__seamBijectionLogger8aSet = true;
366            }
367        }
368        return seamBijectionLogger8a;
369    }
370
371   /**
372    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamBijectionRequestParameter()
373    * @return boolean
374    */
375    protected abstract boolean handleIsSeamBijectionRequestParameter();
376
377    private boolean __seamBijectionRequestParameter9a;
378    private boolean __seamBijectionRequestParameter9aSet = false;
379
380    /**
381     * Returns true if stereotype <<RequestParameter>> is set. Specifies that a component attribute
382     * is to be injected with the value of a request parameter. Basic type conversions are performed
383     * automatically.
384     * @return (boolean)handleIsSeamBijectionRequestParameter()
385     */
386    public final boolean isSeamBijectionRequestParameter()
387    {
388        boolean seamBijectionRequestParameter9a = this.__seamBijectionRequestParameter9a;
389        if (!this.__seamBijectionRequestParameter9aSet)
390        {
391            // seamBijectionRequestParameter has no pre constraints
392            seamBijectionRequestParameter9a = handleIsSeamBijectionRequestParameter();
393            // seamBijectionRequestParameter has no post constraints
394            this.__seamBijectionRequestParameter9a = seamBijectionRequestParameter9a;
395            if (isMetafacadePropertyCachingEnabled())
396            {
397                this.__seamBijectionRequestParameter9aSet = true;
398            }
399        }
400        return seamBijectionRequestParameter9a;
401    }
402
403   /**
404    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamBijectionInParameters()
405    * @return String
406    */
407    protected abstract String handleGetSeamBijectionInParameters();
408
409    private String __seamBijectionInParameters10a;
410    private boolean __seamBijectionInParameters10aSet = false;
411
412    /**
413     * Returns a parameter string for org.jboss.seam.annotations.In annotation. Supported
414     * parameters:
415     * * value ? specifies the name of the context variable. Default to the name of the component
416     * attribute. Alternatively, specifies a JSF EL expression, surrounded by #{...}.
417     * * create ? specifies that Seam should instantiate the component with the same name as the
418     * context variable if the context variable is undefined (null) in all contexts. Default to
419     * false.
420     * * required ? specifies Seam should throw an exception if the context variable is undefined in
421     * all contexts.
422     * @return (String)handleGetSeamBijectionInParameters()
423     */
424    public final String getSeamBijectionInParameters()
425    {
426        String seamBijectionInParameters10a = this.__seamBijectionInParameters10a;
427        if (!this.__seamBijectionInParameters10aSet)
428        {
429            // seamBijectionInParameters has no pre constraints
430            seamBijectionInParameters10a = handleGetSeamBijectionInParameters();
431            // seamBijectionInParameters has no post constraints
432            this.__seamBijectionInParameters10a = seamBijectionInParameters10a;
433            if (isMetafacadePropertyCachingEnabled())
434            {
435                this.__seamBijectionInParameters10aSet = true;
436            }
437        }
438        return seamBijectionInParameters10a;
439    }
440
441   /**
442    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamBijectionLoggerParameters()
443    * @return String
444    */
445    protected abstract String handleGetSeamBijectionLoggerParameters();
446
447    private String __seamBijectionLoggerParameters11a;
448    private boolean __seamBijectionLoggerParameters11aSet = false;
449
450    /**
451     * Returns a parameter string for org.jboss.seam.annotations.Logger annotation. Supported
452     * parameters:
453     * value ? specifies the name of the log category. Default to the name of the component class.
454     * @return (String)handleGetSeamBijectionLoggerParameters()
455     */
456    public final String getSeamBijectionLoggerParameters()
457    {
458        String seamBijectionLoggerParameters11a = this.__seamBijectionLoggerParameters11a;
459        if (!this.__seamBijectionLoggerParameters11aSet)
460        {
461            // seamBijectionLoggerParameters has no pre constraints
462            seamBijectionLoggerParameters11a = handleGetSeamBijectionLoggerParameters();
463            // seamBijectionLoggerParameters has no post constraints
464            this.__seamBijectionLoggerParameters11a = seamBijectionLoggerParameters11a;
465            if (isMetafacadePropertyCachingEnabled())
466            {
467                this.__seamBijectionLoggerParameters11aSet = true;
468            }
469        }
470        return seamBijectionLoggerParameters11a;
471    }
472
473   /**
474    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamBijectionOutParameters()
475    * @return String
476    */
477    protected abstract String handleGetSeamBijectionOutParameters();
478
479    private String __seamBijectionOutParameters12a;
480    private boolean __seamBijectionOutParameters12aSet = false;
481
482    /**
483     * Returns a parameter string for org.jboss.seam.annotations.Out annotation. Supported
484     * parameters:
485     * * value ? specifies the name of the context variable. Default to the name of the component
486     * attribute.
487     * * required ? specifies Seam should throw an exception if the component attribute is null
488     * during outjection.
489     * * scope ? specifies the scope that Seam should bind the returned value to.
490     * @return (String)handleGetSeamBijectionOutParameters()
491     */
492    public final String getSeamBijectionOutParameters()
493    {
494        String seamBijectionOutParameters12a = this.__seamBijectionOutParameters12a;
495        if (!this.__seamBijectionOutParameters12aSet)
496        {
497            // seamBijectionOutParameters has no pre constraints
498            seamBijectionOutParameters12a = handleGetSeamBijectionOutParameters();
499            // seamBijectionOutParameters has no post constraints
500            this.__seamBijectionOutParameters12a = seamBijectionOutParameters12a;
501            if (isMetafacadePropertyCachingEnabled())
502            {
503                this.__seamBijectionOutParameters12aSet = true;
504            }
505        }
506        return seamBijectionOutParameters12a;
507    }
508
509   /**
510    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamBijectionRequestParameterParameters()
511    * @return String
512    */
513    protected abstract String handleGetSeamBijectionRequestParameterParameters();
514
515    private String __seamBijectionRequestParameterParameters13a;
516    private boolean __seamBijectionRequestParameterParameters13aSet = false;
517
518    /**
519     * Returns a parameter string for org.jboss.seam.annotations.RequestParameter annotation.
520     * Supported parameters:
521     * * value ? specifies the name of the request parameter. Default to the name of the component
522     * attribute.
523     * @return (String)handleGetSeamBijectionRequestParameterParameters()
524     */
525    public final String getSeamBijectionRequestParameterParameters()
526    {
527        String seamBijectionRequestParameterParameters13a = this.__seamBijectionRequestParameterParameters13a;
528        if (!this.__seamBijectionRequestParameterParameters13aSet)
529        {
530            // seamBijectionRequestParameterParameters has no pre constraints
531            seamBijectionRequestParameterParameters13a = handleGetSeamBijectionRequestParameterParameters();
532            // seamBijectionRequestParameterParameters has no post constraints
533            this.__seamBijectionRequestParameterParameters13a = seamBijectionRequestParameterParameters13a;
534            if (isMetafacadePropertyCachingEnabled())
535            {
536                this.__seamBijectionRequestParameterParameters13aSet = true;
537            }
538        }
539        return seamBijectionRequestParameterParameters13a;
540    }
541
542   /**
543    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamDataModelParameters()
544    * @return String
545    */
546    protected abstract String handleGetSeamDataModelParameters();
547
548    private String __seamDataModelParameters14a;
549    private boolean __seamDataModelParameters14aSet = false;
550
551    /**
552     * Returns a parameter string for org.jboss.seam.annotations.DataModel annotation. Supported
553     * parameters:
554     * * value ? name of the conversation context variable. Default to the attribute name.
555     * * scope ? if scope=ScopeType.PAGE is explicitly specified, the DataModel will be kept in the
556     * PAGE context.
557     * @return (String)handleGetSeamDataModelParameters()
558     */
559    public final String getSeamDataModelParameters()
560    {
561        String seamDataModelParameters14a = this.__seamDataModelParameters14a;
562        if (!this.__seamDataModelParameters14aSet)
563        {
564            // seamDataModelParameters has no pre constraints
565            seamDataModelParameters14a = handleGetSeamDataModelParameters();
566            // seamDataModelParameters has no post constraints
567            this.__seamDataModelParameters14a = seamDataModelParameters14a;
568            if (isMetafacadePropertyCachingEnabled())
569            {
570                this.__seamDataModelParameters14aSet = true;
571            }
572        }
573        return seamDataModelParameters14a;
574    }
575
576   /**
577    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamDataModelSelectionParameters()
578    * @return String
579    */
580    protected abstract String handleGetSeamDataModelSelectionParameters();
581
582    private String __seamDataModelSelectionParameters15a;
583    private boolean __seamDataModelSelectionParameters15aSet = false;
584
585    /**
586     * Returns a parameter string for org.jboss.seam.annotations.DataModelSelection annotation.
587     * Supported parameters:
588     * * value ? name of the conversation context variable. Not needed if there is exactly one
589     * DataModel in the component.
590     * @return (String)handleGetSeamDataModelSelectionParameters()
591     */
592    public final String getSeamDataModelSelectionParameters()
593    {
594        String seamDataModelSelectionParameters15a = this.__seamDataModelSelectionParameters15a;
595        if (!this.__seamDataModelSelectionParameters15aSet)
596        {
597            // seamDataModelSelectionParameters has no pre constraints
598            seamDataModelSelectionParameters15a = handleGetSeamDataModelSelectionParameters();
599            // seamDataModelSelectionParameters has no post constraints
600            this.__seamDataModelSelectionParameters15a = seamDataModelSelectionParameters15a;
601            if (isMetafacadePropertyCachingEnabled())
602            {
603                this.__seamDataModelSelectionParameters15aSet = true;
604            }
605        }
606        return seamDataModelSelectionParameters15a;
607    }
608
609   /**
610    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#getSeamDataModelSelectionIndexParameters()
611    * @return String
612    */
613    protected abstract String handleGetSeamDataModelSelectionIndexParameters();
614
615    private String __seamDataModelSelectionIndexParameters16a;
616    private boolean __seamDataModelSelectionIndexParameters16aSet = false;
617
618    /**
619     * Returns a parameter string for org.jboss.seam.annotations.DataModelSelection annotation.
620     * Supported parameters:
621     * * value ? name of the conversation context variable. Not needed if there is exactly one
622     * DataModel in the component.
623     * @return (String)handleGetSeamDataModelSelectionIndexParameters()
624     */
625    public final String getSeamDataModelSelectionIndexParameters()
626    {
627        String seamDataModelSelectionIndexParameters16a = this.__seamDataModelSelectionIndexParameters16a;
628        if (!this.__seamDataModelSelectionIndexParameters16aSet)
629        {
630            // seamDataModelSelectionIndexParameters has no pre constraints
631            seamDataModelSelectionIndexParameters16a = handleGetSeamDataModelSelectionIndexParameters();
632            // seamDataModelSelectionIndexParameters has no post constraints
633            this.__seamDataModelSelectionIndexParameters16a = seamDataModelSelectionIndexParameters16a;
634            if (isMetafacadePropertyCachingEnabled())
635            {
636                this.__seamDataModelSelectionIndexParameters16aSet = true;
637            }
638        }
639        return seamDataModelSelectionIndexParameters16a;
640    }
641
642   /**
643    * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade#isSeamAttribute()
644    * @return boolean
645    */
646    protected abstract boolean handleIsSeamAttribute();
647
648    private boolean __seamAttribute17a;
649    private boolean __seamAttribute17aSet = false;
650
651    /**
652     * Returns true if this attribute is a seam component attribute, marked with one or more of the
653     * following annotations In, Out, Log, RequestParameter, DataModel, DatamodeSelection
654     * @return (boolean)handleIsSeamAttribute()
655     */
656    public final boolean isSeamAttribute()
657    {
658        boolean seamAttribute17a = this.__seamAttribute17a;
659        if (!this.__seamAttribute17aSet)
660        {
661            // seamAttribute has no pre constraints
662            seamAttribute17a = handleIsSeamAttribute();
663            // seamAttribute has no post constraints
664            this.__seamAttribute17a = seamAttribute17a;
665            if (isMetafacadePropertyCachingEnabled())
666            {
667                this.__seamAttribute17aSet = true;
668            }
669        }
670        return seamAttribute17a;
671    }
672
673    /**
674     * @return true
675     * @see AttributeFacade
676     */
677    public boolean isAttributeFacadeMetaType()
678    {
679        return true;
680    }
681
682    /**
683     * @return true
684     * @see ModelElementFacade
685     */
686    public boolean isModelElementFacadeMetaType()
687    {
688        return true;
689    }
690
691    // ----------- delegates to AttributeFacade ------------
692    /**
693     * Searches the given feature for the specified tag.
694     * If the follow boolean is set to true then the search will continue from the class attribute
695     * to the class itself and then up the class hierarchy.
696     * @see AttributeFacade#findTaggedValue(String name, boolean follow)
697     */
698    public Object findTaggedValue(String name, boolean follow)
699    {
700        return this.getSuperAttributeFacade().findTaggedValue(name, follow);
701    }
702
703    /**
704     * The default value of the attribute.  This is the value given if no value is defined.
705     * @see AttributeFacade#getDefaultValue()
706     */
707    public String getDefaultValue()
708    {
709        return this.getSuperAttributeFacade().getDefaultValue();
710    }
711
712    /**
713     * If the attribute is an enumeration literal this represents the owning enumeration. Can be
714     * empty.
715     * @see AttributeFacade#getEnumeration()
716     */
717    public EnumerationFacade getEnumeration()
718    {
719        return this.getSuperAttributeFacade().getEnumeration();
720    }
721
722    /**
723     * Returns the enumeration literal parameters defined by tagged value as a comma separated list.
724     * @see AttributeFacade#getEnumerationLiteralParameters()
725     */
726    public String getEnumerationLiteralParameters()
727    {
728        return this.getSuperAttributeFacade().getEnumerationLiteralParameters();
729    }
730
731    /**
732     * The value for this attribute if it is an enumeration literal, null otherwise. The default
733     * value is returned as a String if it has been specified, if it's not specified this
734     * attribute's name is assumed.
735     * @see AttributeFacade#getEnumerationValue()
736     */
737    public String getEnumerationValue()
738    {
739        return this.getSuperAttributeFacade().getEnumerationValue();
740    }
741
742    /**
743     * The name of the accessor operation that would retrieve this attribute's value.
744     * @see AttributeFacade#getGetterName()
745     */
746    public String getGetterName()
747    {
748        return this.getSuperAttributeFacade().getGetterName();
749    }
750
751    /**
752     * The name of the type that is returned on the accessor and mutator operations,  determined in
753     * part by the multiplicity.
754     * @see AttributeFacade#getGetterSetterTypeName()
755     */
756    public String getGetterSetterTypeName()
757    {
758        return this.getSuperAttributeFacade().getGetterSetterTypeName();
759    }
760
761    /**
762     * the lower value for the multiplicity
763     * -only applicable for UML2
764     * @see AttributeFacade#getLower()
765     */
766    public int getLower()
767    {
768        return this.getSuperAttributeFacade().getLower();
769    }
770
771    /**
772     * Gets the classifier who is the owner of the attributes.
773     * @see AttributeFacade#getOwner()
774     */
775    public ClassifierFacade getOwner()
776    {
777        return this.getSuperAttributeFacade().getOwner();
778    }
779
780    /**
781     * The name of the mutator operation that would retrieve this attribute's value.
782     * @see AttributeFacade#getSetterName()
783     */
784    public String getSetterName()
785    {
786        return this.getSuperAttributeFacade().getSetterName();
787    }
788
789    /**
790     * The classifier owning this attribute.
791     * @see AttributeFacade#getType()
792     */
793    public ClassifierFacade getType()
794    {
795        return this.getSuperAttributeFacade().getType();
796    }
797
798    /**
799     * the upper value for the multiplicity (will be -1 for *)
800     * -only applicable for UML2
801     * @see AttributeFacade#getUpper()
802     */
803    public int getUpper()
804    {
805        return this.getSuperAttributeFacade().getUpper();
806    }
807
808    /**
809     * True if this attribute can only be set.
810     * @see AttributeFacade#isAddOnly()
811     */
812    public boolean isAddOnly()
813    {
814        return this.getSuperAttributeFacade().isAddOnly();
815    }
816
817    /**
818     * True if this attribute can be modified.
819     * @see AttributeFacade#isChangeable()
820     */
821    public boolean isChangeable()
822    {
823        return this.getSuperAttributeFacade().isChangeable();
824    }
825
826    /**
827     * Indicates if the default value is present.
828     * @see AttributeFacade#isDefaultValuePresent()
829     */
830    public boolean isDefaultValuePresent()
831    {
832        return this.getSuperAttributeFacade().isDefaultValuePresent();
833    }
834
835    /**
836     * If the attribute is derived (its value is computed). UML2 only. UML14 always returns false.
837     * Default=false.
838     * @see AttributeFacade#isDerived()
839     */
840    public boolean isDerived()
841    {
842        return this.getSuperAttributeFacade().isDerived();
843    }
844
845    /**
846     * True if this attribute is owned by an enumeration.
847     * @see AttributeFacade#isEnumerationLiteral()
848     */
849    public boolean isEnumerationLiteral()
850    {
851        return this.getSuperAttributeFacade().isEnumerationLiteral();
852    }
853
854    /**
855     * Returns true if enumeration literal parameters exist (defined by tagged value) for the
856     * literal.
857     * @see AttributeFacade#isEnumerationLiteralParametersExist()
858     */
859    public boolean isEnumerationLiteralParametersExist()
860    {
861        return this.getSuperAttributeFacade().isEnumerationLiteralParametersExist();
862    }
863
864    /**
865     * True if this attribute is owned by an enumeration but is defined as a member variable (NOT a
866     * literal).
867     * @see AttributeFacade#isEnumerationMember()
868     */
869    public boolean isEnumerationMember()
870    {
871        return this.getSuperAttributeFacade().isEnumerationMember();
872    }
873
874    /**
875     * IsLeaf property in the operation. If true, operation is final, cannot be extended or
876     * implemented by a descendant.
877     * @see AttributeFacade#isLeaf()
878     */
879    public boolean isLeaf()
880    {
881        return this.getSuperAttributeFacade().isLeaf();
882    }
883
884    /**
885     * Whether or not this attribute has a multiplicity greater than 1.
886     * @see AttributeFacade#isMany()
887     */
888    public boolean isMany()
889    {
890        return this.getSuperAttributeFacade().isMany();
891    }
892
893    /**
894     * Indicates whether or not the attributes are ordered (if multiplicity is greater than 1).
895     * @see AttributeFacade#isOrdered()
896     */
897    public boolean isOrdered()
898    {
899        return this.getSuperAttributeFacade().isOrdered();
900    }
901
902    /**
903     * Whether or not this attribute can be modified.
904     * @see AttributeFacade#isReadOnly()
905     */
906    public boolean isReadOnly()
907    {
908        return this.getSuperAttributeFacade().isReadOnly();
909    }
910
911    /**
912     * Whether or not the multiplicity of this attribute is 1.
913     * @see AttributeFacade#isRequired()
914     */
915    public boolean isRequired()
916    {
917        return this.getSuperAttributeFacade().isRequired();
918    }
919
920    /**
921     * Indicates if this attribute is 'static', meaning it has a classifier scope.
922     * @see AttributeFacade#isStatic()
923     */
924    public boolean isStatic()
925    {
926        return this.getSuperAttributeFacade().isStatic();
927    }
928
929    /**
930     * If the attribute is unique within the Collection type. UML2 only. UML14 always returns false.
931     * Unique+Ordered determines the implementation Collection type. Default=false.
932     * @see AttributeFacade#isUnique()
933     */
934    public boolean isUnique()
935    {
936        return this.getSuperAttributeFacade().isUnique();
937    }
938
939    /**
940     * Copies all tagged values from the given ModelElementFacade to this model element facade.
941     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
942     */
943    public void copyTaggedValues(ModelElementFacade element)
944    {
945        this.getSuperAttributeFacade().copyTaggedValues(element);
946    }
947
948    /**
949     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
950     * one found will be returned.
951     * @see ModelElementFacade#findTaggedValue(String tagName)
952     */
953    public Object findTaggedValue(String tagName)
954    {
955        return this.getSuperAttributeFacade().findTaggedValue(tagName);
956    }
957
958    /**
959     * Returns all the values for the tagged value with the specified name. The returned collection
960     * will contains only String instances, or will be empty. Never null.
961     * @see ModelElementFacade#findTaggedValues(String tagName)
962     */
963    public Collection<Object> findTaggedValues(String tagName)
964    {
965        return this.getSuperAttributeFacade().findTaggedValues(tagName);
966    }
967
968    /**
969     * Returns the fully qualified name of the model element. The fully qualified name includes
970     * complete package qualified name of the underlying model element. The templates parameter will
971     * be replaced by the correct one given the binding relation of the parameter to this element.
972     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
973     */
974    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
975    {
976        return this.getSuperAttributeFacade().getBindedFullyQualifiedName(bindedElement);
977    }
978
979    /**
980     * Gets all constraints belonging to the model element.
981     * @see ModelElementFacade#getConstraints()
982     */
983    public Collection<ConstraintFacade> getConstraints()
984    {
985        return this.getSuperAttributeFacade().getConstraints();
986    }
987
988    /**
989     * Returns the constraints of the argument kind that have been placed onto this model. Typical
990     * kinds are "inv", "pre" and "post". Other kinds are possible.
991     * @see ModelElementFacade#getConstraints(String kind)
992     */
993    public Collection<ConstraintFacade> getConstraints(String kind)
994    {
995        return this.getSuperAttributeFacade().getConstraints(kind);
996    }
997
998    /**
999     * Gets the documentation for the model element, The indent argument is prefixed to each line.
1000     * By default this method wraps lines after 64 characters.
1001     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1002     * @see ModelElementFacade#getDocumentation(String indent)
1003     */
1004    public String getDocumentation(String indent)
1005    {
1006        return this.getSuperAttributeFacade().getDocumentation(indent);
1007    }
1008
1009    /**
1010     * This method returns the documentation for this model element, with the lines wrapped after
1011     * the specified number of characters, values of less than 1 will indicate no line wrapping is
1012     * required. By default paragraphs are returned as HTML.
1013     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1014     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1015     */
1016    public String getDocumentation(String indent, int lineLength)
1017    {
1018        return this.getSuperAttributeFacade().getDocumentation(indent, lineLength);
1019    }
1020
1021    /**
1022     * This method returns the documentation for this model element, with the lines wrapped after
1023     * the specified number of characters, values of less than 1 will indicate no line wrapping is
1024     * required. HTML style determines if HTML Escaping is applied.
1025     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1026     */
1027    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1028    {
1029        return this.getSuperAttributeFacade().getDocumentation(indent, lineLength, htmlStyle);
1030    }
1031
1032    /**
1033     * The fully qualified name of this model element.
1034     * @see ModelElementFacade#getFullyQualifiedName()
1035     */
1036    public String getFullyQualifiedName()
1037    {
1038        return this.getSuperAttributeFacade().getFullyQualifiedName();
1039    }
1040
1041    /**
1042     * Returns the fully qualified name of the model element. The fully qualified name includes
1043     * complete package qualified name of the underlying model element.  If modelName is true, then
1044     * the original name of the model element (the name contained within the model) will be the name
1045     * returned, otherwise a name from a language mapping will be returned.
1046     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1047     */
1048    public String getFullyQualifiedName(boolean modelName)
1049    {
1050        return this.getSuperAttributeFacade().getFullyQualifiedName(modelName);
1051    }
1052
1053    /**
1054     * Returns the fully qualified name as a path, the returned value always starts with out a slash
1055     * '/'.
1056     * @see ModelElementFacade#getFullyQualifiedNamePath()
1057     */
1058    public String getFullyQualifiedNamePath()
1059    {
1060        return this.getSuperAttributeFacade().getFullyQualifiedNamePath();
1061    }
1062
1063    /**
1064     * Gets the unique identifier of the underlying model element.
1065     * @see ModelElementFacade#getId()
1066     */
1067    public String getId()
1068    {
1069        return this.getSuperAttributeFacade().getId();
1070    }
1071
1072    /**
1073     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1074     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1075     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1076     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1077     * JDK5 compiler level.
1078     * @see ModelElementFacade#getKeywords()
1079     */
1080    public Collection<String> getKeywords()
1081    {
1082        return this.getSuperAttributeFacade().getKeywords();
1083    }
1084
1085    /**
1086     * UML2: Retrieves a localized label for this named element.
1087     * @see ModelElementFacade#getLabel()
1088     */
1089    public String getLabel()
1090    {
1091        return this.getSuperAttributeFacade().getLabel();
1092    }
1093
1094    /**
1095     * The language mappings that have been set for this model element.
1096     * @see ModelElementFacade#getLanguageMappings()
1097     */
1098    public TypeMappings getLanguageMappings()
1099    {
1100        return this.getSuperAttributeFacade().getLanguageMappings();
1101    }
1102
1103    /**
1104     * Return the model containing this model element (multiple models may be loaded and processed
1105     * at the same time).
1106     * @see ModelElementFacade#getModel()
1107     */
1108    public ModelFacade getModel()
1109    {
1110        return this.getSuperAttributeFacade().getModel();
1111    }
1112
1113    /**
1114     * The name of the model element.
1115     * @see ModelElementFacade#getName()
1116     */
1117    public String getName()
1118    {
1119        return this.getSuperAttributeFacade().getName();
1120    }
1121
1122    /**
1123     * Gets the package to which this model element belongs.
1124     * @see ModelElementFacade#getPackage()
1125     */
1126    public ModelElementFacade getPackage()
1127    {
1128        return this.getSuperAttributeFacade().getPackage();
1129    }
1130
1131    /**
1132     * The name of this model element's package.
1133     * @see ModelElementFacade#getPackageName()
1134     */
1135    public String getPackageName()
1136    {
1137        return this.getSuperAttributeFacade().getPackageName();
1138    }
1139
1140    /**
1141     * Gets the package name (optionally providing the ability to retrieve the model name and not
1142     * the mapped name).
1143     * @see ModelElementFacade#getPackageName(boolean modelName)
1144     */
1145    public String getPackageName(boolean modelName)
1146    {
1147        return this.getSuperAttributeFacade().getPackageName(modelName);
1148    }
1149
1150    /**
1151     * Returns the package as a path, the returned value always starts with out a slash '/'.
1152     * @see ModelElementFacade#getPackagePath()
1153     */
1154    public String getPackagePath()
1155    {
1156        return this.getSuperAttributeFacade().getPackagePath();
1157    }
1158
1159    /**
1160     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1161     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1162     * the names of the containing namespaces starting at the root of the hierarchy and ending with
1163     * the name of the NamedElement itself.
1164     * @see ModelElementFacade#getQualifiedName()
1165     */
1166    public String getQualifiedName()
1167    {
1168        return this.getSuperAttributeFacade().getQualifiedName();
1169    }
1170
1171    /**
1172     * Gets the root package for the model element.
1173     * @see ModelElementFacade#getRootPackage()
1174     */
1175    public PackageFacade getRootPackage()
1176    {
1177        return this.getSuperAttributeFacade().getRootPackage();
1178    }
1179
1180    /**
1181     * Gets the dependencies for which this model element is the source.
1182     * @see ModelElementFacade#getSourceDependencies()
1183     */
1184    public Collection<DependencyFacade> getSourceDependencies()
1185    {
1186        return this.getSuperAttributeFacade().getSourceDependencies();
1187    }
1188
1189    /**
1190     * If this model element is the context of an activity graph, this represents that activity
1191     * graph.
1192     * @see ModelElementFacade#getStateMachineContext()
1193     */
1194    public StateMachineFacade getStateMachineContext()
1195    {
1196        return this.getSuperAttributeFacade().getStateMachineContext();
1197    }
1198
1199    /**
1200     * The collection of ALL stereotype names for this model element.
1201     * @see ModelElementFacade#getStereotypeNames()
1202     */
1203    public Collection<String> getStereotypeNames()
1204    {
1205        return this.getSuperAttributeFacade().getStereotypeNames();
1206    }
1207
1208    /**
1209     * Gets all stereotypes for this model element.
1210     * @see ModelElementFacade#getStereotypes()
1211     */
1212    public Collection<StereotypeFacade> getStereotypes()
1213    {
1214        return this.getSuperAttributeFacade().getStereotypes();
1215    }
1216
1217    /**
1218     * Return the TaggedValues associated with this model element, under all stereotypes.
1219     * @see ModelElementFacade#getTaggedValues()
1220     */
1221    public Collection<TaggedValueFacade> getTaggedValues()
1222    {
1223        return this.getSuperAttributeFacade().getTaggedValues();
1224    }
1225
1226    /**
1227     * Gets the dependencies for which this model element is the target.
1228     * @see ModelElementFacade#getTargetDependencies()
1229     */
1230    public Collection<DependencyFacade> getTargetDependencies()
1231    {
1232        return this.getSuperAttributeFacade().getTargetDependencies();
1233    }
1234
1235    /**
1236     * Get the template parameter for this model element having the parameterName
1237     * @see ModelElementFacade#getTemplateParameter(String parameterName)
1238     */
1239    public Object getTemplateParameter(String parameterName)
1240    {
1241        return this.getSuperAttributeFacade().getTemplateParameter(parameterName);
1242    }
1243
1244    /**
1245     * Get the template parameters for this model element
1246     * @see ModelElementFacade#getTemplateParameters()
1247     */
1248    public Collection<TemplateParameterFacade> getTemplateParameters()
1249    {
1250        return this.getSuperAttributeFacade().getTemplateParameters();
1251    }
1252
1253    /**
1254     * The visibility (i.e. public, private, protected or package) of the model element, will
1255     * attempt a lookup for these values in the language mappings (if any).
1256     * @see ModelElementFacade#getVisibility()
1257     */
1258    public String getVisibility()
1259    {
1260        return this.getSuperAttributeFacade().getVisibility();
1261    }
1262
1263    /**
1264     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1265     * is taken into account when searching for the stereotype), false otherwise.
1266     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1267     */
1268    public boolean hasExactStereotype(String stereotypeName)
1269    {
1270        return this.getSuperAttributeFacade().hasExactStereotype(stereotypeName);
1271    }
1272
1273    /**
1274     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1275     * pipe, semicolon, or << >>
1276     * @see ModelElementFacade#hasKeyword(String keywordName)
1277     */
1278    public boolean hasKeyword(String keywordName)
1279    {
1280        return this.getSuperAttributeFacade().hasKeyword(keywordName);
1281    }
1282
1283    /**
1284     * Returns true if the model element has the specified stereotype.  If the stereotype itself
1285     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1286     * one of the stereotype's ancestors has a matching name this method will return true, false
1287     * otherwise.
1288     * For example, if we have a certain stereotype called <<exception>> and a model element has a
1289     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1290     * method with 'stereotypeName' defined as 'exception' the method would return true since
1291     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1292     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1293     * @see ModelElementFacade#hasStereotype(String stereotypeName)
1294     */
1295    public boolean hasStereotype(String stereotypeName)
1296    {
1297        return this.getSuperAttributeFacade().hasStereotype(stereotypeName);
1298    }
1299
1300    /**
1301     * True if there are target dependencies from this element that are instances of BindingFacade.
1302     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1303     * @see ModelElementFacade#isBindingDependenciesPresent()
1304     */
1305    public boolean isBindingDependenciesPresent()
1306    {
1307        return this.getSuperAttributeFacade().isBindingDependenciesPresent();
1308    }
1309
1310    /**
1311     * Indicates if any constraints are present on this model element.
1312     * @see ModelElementFacade#isConstraintsPresent()
1313     */
1314    public boolean isConstraintsPresent()
1315    {
1316        return this.getSuperAttributeFacade().isConstraintsPresent();
1317    }
1318
1319    /**
1320     * Indicates if any documentation is present on this model element.
1321     * @see ModelElementFacade#isDocumentationPresent()
1322     */
1323    public boolean isDocumentationPresent()
1324    {
1325        return this.getSuperAttributeFacade().isDocumentationPresent();
1326    }
1327
1328    /**
1329     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1330     * @see ModelElementFacade#isReservedWord()
1331     */
1332    public boolean isReservedWord()
1333    {
1334        return this.getSuperAttributeFacade().isReservedWord();
1335    }
1336
1337    /**
1338     * True is there are template parameters on this model element. For UML2, applies to Class,
1339     * Operation, Property, and Parameter.
1340     * @see ModelElementFacade#isTemplateParametersPresent()
1341     */
1342    public boolean isTemplateParametersPresent()
1343    {
1344        return this.getSuperAttributeFacade().isTemplateParametersPresent();
1345    }
1346
1347    /**
1348     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1349     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1350     * Enumerations and Interfaces, optionally applies on other model elements.
1351     * @see ModelElementFacade#isValidIdentifierName()
1352     */
1353    public boolean isValidIdentifierName()
1354    {
1355        return this.getSuperAttributeFacade().isValidIdentifierName();
1356    }
1357
1358    /**
1359     * Searches for the constraint with the specified 'name' on this model element, and if found
1360     * translates it using the specified 'translation' from a translation library discovered by the
1361     * framework.
1362     * @see ModelElementFacade#translateConstraint(String name, String translation)
1363     */
1364    public String translateConstraint(String name, String translation)
1365    {
1366        return this.getSuperAttributeFacade().translateConstraint(name, translation);
1367    }
1368
1369    /**
1370     * Translates all constraints belonging to this model element with the given 'translation'.
1371     * @see ModelElementFacade#translateConstraints(String translation)
1372     */
1373    public String[] translateConstraints(String translation)
1374    {
1375        return this.getSuperAttributeFacade().translateConstraints(translation);
1376    }
1377
1378    /**
1379     * Translates the constraints of the specified 'kind' belonging to this model element.
1380     * @see ModelElementFacade#translateConstraints(String kind, String translation)
1381     */
1382    public String[] translateConstraints(String kind, String translation)
1383    {
1384        return this.getSuperAttributeFacade().translateConstraints(kind, translation);
1385    }
1386
1387    /**
1388     * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1389     */
1390    @Override
1391    public void initialize()
1392    {
1393        this.getSuperAttributeFacade().initialize();
1394    }
1395
1396    /**
1397     * @return Object getSuperAttributeFacade().getValidationOwner()
1398     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1399     */
1400    @Override
1401    public Object getValidationOwner()
1402    {
1403        Object owner = this.getSuperAttributeFacade().getValidationOwner();
1404        return owner;
1405    }
1406
1407    /**
1408     * @return String getSuperAttributeFacade().getValidationName()
1409     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1410     */
1411    @Override
1412    public String getValidationName()
1413    {
1414        String name = this.getSuperAttributeFacade().getValidationName();
1415        return name;
1416    }
1417
1418    /**
1419     * @param validationMessages Collection<ModelValidationMessage>
1420     * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1421     */
1422    @Override
1423    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1424    {
1425        this.getSuperAttributeFacade().validateInvariants(validationMessages);
1426    }
1427
1428    /**
1429     * The property that stores the name of the metafacade.
1430     */
1431    private static final String NAME_PROPERTY = "name";
1432    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1433
1434    /**
1435     * @see Object#toString()
1436     */
1437    @Override
1438    public String toString()
1439    {
1440        final StringBuilder toString = new StringBuilder(this.getClass().getName());
1441        toString.append("[");
1442        try
1443        {
1444            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1445        }
1446        catch (final Throwable tryAgain)
1447        {
1448            try
1449            {
1450                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1451            }
1452            catch (final Throwable ignore)
1453            {
1454                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1455            }
1456        }
1457        toString.append("]");
1458        return toString.toString();
1459    }
1460}