View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.ejb3.metafacades;
6   
7   import java.util.Collection;
8   import org.andromda.core.common.Introspector;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.MetafacadeFactory;
11  import org.andromda.core.metafacade.ModelValidationMessage;
12  import org.andromda.metafacades.uml.AttributeFacade;
13  import org.andromda.metafacades.uml.ClassifierFacade;
14  import org.andromda.metafacades.uml.ConstraintFacade;
15  import org.andromda.metafacades.uml.DependencyFacade;
16  import org.andromda.metafacades.uml.EnumerationFacade;
17  import org.andromda.metafacades.uml.ModelElementFacade;
18  import org.andromda.metafacades.uml.ModelFacade;
19  import org.andromda.metafacades.uml.PackageFacade;
20  import org.andromda.metafacades.uml.StateMachineFacade;
21  import org.andromda.metafacades.uml.StereotypeFacade;
22  import org.andromda.metafacades.uml.TaggedValueFacade;
23  import org.andromda.metafacades.uml.TemplateParameterFacade;
24  import org.andromda.metafacades.uml.TypeMappings;
25  
26  /**
27   * TODO: Model Documentation for org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade
28   * MetafacadeLogic for EJB3SessionAttributeFacade
29   *
30   * @see EJB3SessionAttributeFacade
31   */
32  public abstract class EJB3SessionAttributeFacadeLogic
33      extends MetafacadeBase
34      implements EJB3SessionAttributeFacade
35  {
36      /**
37       * The underlying UML object
38       * @see Object
39       */
40      protected Object metaObject;
41  
42      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
43       * @param metaObjectIn
44       * @param context
45       */
46      protected EJB3SessionAttributeFacadeLogic(Object metaObjectIn, String context)
47      {
48          super(metaObjectIn, getContext(context));
49          this.superAttributeFacade =
50             (AttributeFacade)
51              MetafacadeFactory.getInstance().createFacadeImpl(
52                      "org.andromda.metafacades.uml.AttributeFacade",
53                      metaObjectIn,
54                      getContext(context));
55          this.metaObject = metaObjectIn;
56      }
57  
58      /**
59       * Gets the context for this metafacade logic instance.
60       * @param context String. Set to EJB3SessionAttributeFacade if null
61       * @return context String
62       */
63      private static String getContext(String context)
64      {
65          if (context == null)
66          {
67              context = "org.andromda.cartridges.ejb3.metafacades.EJB3SessionAttributeFacade";
68          }
69          return context;
70      }
71  
72      private AttributeFacade superAttributeFacade;
73      private boolean superAttributeFacadeInitialized = false;
74  
75      /**
76       * Gets the AttributeFacade parent instance.
77       * @return this.superAttributeFacade AttributeFacade
78       */
79      private AttributeFacade getSuperAttributeFacade()
80      {
81          if (!this.superAttributeFacadeInitialized)
82          {
83              ((MetafacadeBase)this.superAttributeFacade).setMetafacadeContext(this.getMetafacadeContext());
84              this.superAttributeFacadeInitialized = true;
85          }
86          return this.superAttributeFacade;
87      }
88  
89      /** Reset context only for non-root metafacades
90       * @param context
91       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
92       */
93      @Override
94      public void resetMetafacadeContext(String context)
95      {
96          if (!this.contextRoot) // reset context only for non-root metafacades
97          {
98              context = getContext(context);  // to have same value as in original constructor call
99              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 }