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.AssociationEndFacade;
13  import org.andromda.metafacades.uml.AssociationFacade;
14  import org.andromda.metafacades.uml.ClassifierFacade;
15  import org.andromda.metafacades.uml.ConstraintFacade;
16  import org.andromda.metafacades.uml.DependencyFacade;
17  import org.andromda.metafacades.uml.EntityAttribute;
18  import org.andromda.metafacades.uml.ManageableEntityAssociationEnd;
19  import org.andromda.metafacades.uml.ModelElementFacade;
20  import org.andromda.metafacades.uml.ModelFacade;
21  import org.andromda.metafacades.uml.PackageFacade;
22  import org.andromda.metafacades.uml.StateMachineFacade;
23  import org.andromda.metafacades.uml.StereotypeFacade;
24  import org.andromda.metafacades.uml.TaggedValueFacade;
25  import org.andromda.metafacades.uml.TemplateParameterFacade;
26  import org.andromda.metafacades.uml.TypeMappings;
27  
28  /**
29   * TODO: Model Documentation for
30   * org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacade
31   * MetafacadeLogic for EJB3ManageableEntityAssociationEndFacade
32   *
33   * @see EJB3ManageableEntityAssociationEndFacade
34   */
35  public abstract class EJB3ManageableEntityAssociationEndFacadeLogic
36      extends MetafacadeBase
37      implements EJB3ManageableEntityAssociationEndFacade
38  {
39      /**
40       * The underlying UML object
41       * @see Object
42       */
43      protected Object metaObject;
44  
45      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
46       * @param metaObjectIn
47       * @param context
48       */
49      protected EJB3ManageableEntityAssociationEndFacadeLogic(Object metaObjectIn, String context)
50      {
51          super(metaObjectIn, getContext(context));
52          this.superManageableEntityAssociationEnd =
53             (ManageableEntityAssociationEnd)
54              MetafacadeFactory.getInstance().createFacadeImpl(
55                      "org.andromda.metafacades.uml.ManageableEntityAssociationEnd",
56                      metaObjectIn,
57                      getContext(context));
58          this.superEJB3AssociationEndFacade =
59             (EJB3AssociationEndFacade)
60              MetafacadeFactory.getInstance().createFacadeImpl(
61                      "org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacade",
62                      metaObjectIn,
63                      getContext(context));
64          this.metaObject = metaObjectIn;
65      }
66  
67      /**
68       * Gets the context for this metafacade logic instance.
69       * @param context String. Set to EJB3ManageableEntityAssociationEndFacade if null
70       * @return context String
71       */
72      private static String getContext(String context)
73      {
74          if (context == null)
75          {
76              context = "org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityAssociationEndFacade";
77          }
78          return context;
79      }
80  
81      private ManageableEntityAssociationEnd superManageableEntityAssociationEnd;
82      private boolean superManageableEntityAssociationEndInitialized = false;
83  
84      /**
85       * Gets the ManageableEntityAssociationEnd parent instance.
86       * @return this.superManageableEntityAssociationEnd ManageableEntityAssociationEnd
87       */
88      protected ManageableEntityAssociationEnd getSuperManageableEntityAssociationEnd()
89      {
90          if (!this.superManageableEntityAssociationEndInitialized)
91          {
92              ((MetafacadeBase)this.superManageableEntityAssociationEnd).setMetafacadeContext(this.getMetafacadeContext());
93              this.superManageableEntityAssociationEndInitialized = true;
94          }
95          return this.superManageableEntityAssociationEnd;
96      }
97  
98      private EJB3AssociationEndFacade superEJB3AssociationEndFacade;
99      private boolean superEJB3AssociationEndFacadeInitialized = false;
100 
101     /**
102      * Gets the EJB3AssociationEndFacade parent instance.
103      * @return this.superEJB3AssociationEndFacade EJB3AssociationEndFacade
104      */
105     protected EJB3AssociationEndFacade getSuperEJB3AssociationEndFacade()
106     {
107         if (!this.superEJB3AssociationEndFacadeInitialized)
108         {
109             ((MetafacadeBase)this.superEJB3AssociationEndFacade).setMetafacadeContext(this.getMetafacadeContext());
110             this.superEJB3AssociationEndFacadeInitialized = true;
111         }
112         return this.superEJB3AssociationEndFacade;
113     }
114 
115     /** Reset context only for non-root metafacades
116      * @param context
117      * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
118      */
119     @Override
120     public void resetMetafacadeContext(String context)
121     {
122         if (!this.contextRoot) // reset context only for non-root metafacades
123         {
124             context = getContext(context);  // to have same value as in original constructor call
125             setMetafacadeContext (context);
126             if (this.superManageableEntityAssociationEndInitialized)
127             {
128                 ((MetafacadeBase)this.superManageableEntityAssociationEnd).resetMetafacadeContext(context);
129             }
130             if (this.superEJB3AssociationEndFacadeInitialized)
131             {
132                 ((MetafacadeBase)this.superEJB3AssociationEndFacade).resetMetafacadeContext(context);
133             }
134         }
135     }
136 
137     /**
138      * @return boolean true always
139      * @see EJB3ManageableEntityAssociationEndFacade
140      */
141     public boolean isEJB3ManageableEntityAssociationEndFacadeMetaType()
142     {
143         return true;
144     }
145 
146     /**
147      * @return true
148      * @see EJB3AssociationEndFacade
149      */
150     public boolean isEJB3AssociationEndFacadeMetaType()
151     {
152         return true;
153     }
154 
155     /**
156      * @return true
157      * @see ManageableEntityAssociationEnd
158      */
159     public boolean isManageableEntityAssociationEndMetaType()
160     {
161         return true;
162     }
163 
164     /**
165      * @return true
166      * @see org.andromda.metafacades.uml.EntityAssociationEnd
167      */
168     public boolean isEntityAssociationEndMetaType()
169     {
170         return true;
171     }
172 
173     /**
174      * @return true
175      * @see AssociationEndFacade
176      */
177     public boolean isAssociationEndFacadeMetaType()
178     {
179         return true;
180     }
181 
182     /**
183      * @return true
184      * @see ModelElementFacade
185      */
186     public boolean isModelElementFacadeMetaType()
187     {
188         return true;
189     }
190 
191     // ----------- delegates to ManageableEntityAssociationEnd ------------
192     /**
193      * Represents an attribute of an entity.
194      * @see ManageableEntityAssociationEnd#getManageableIdentifier()
195      */
196     public EntityAttribute getManageableIdentifier()
197     {
198         return this.getSuperManageableEntityAssociationEnd().getManageableIdentifier();
199     }
200 
201     /**
202      * Whether or not this association end should be displayed.
203      * @see ManageableEntityAssociationEnd#isDisplay()
204      */
205     public boolean isDisplay()
206     {
207         return this.getSuperManageableEntityAssociationEnd().isDisplay();
208     }
209 
210     // ----------- delegates to EJB3AssociationEndFacade ------------
211     /**
212      * Returns the default cascade property specified for UML aggregation.
213      * @see EJB3AssociationEndFacade#getAggregationCascadeType()
214      */
215     public String getAggregationCascadeType()
216     {
217         return this.getSuperEJB3AssociationEndFacade().getAggregationCascadeType();
218     }
219 
220     /**
221      * Provides the cache policy for the entity association Collection.
222      * Posible values are NONE, READ_WRITE, NONSTRICT_READ_WRITE, READ_ONLY, TRANSACTIONAL.
223      * @see EJB3AssociationEndFacade#getCacheType()
224      */
225     public String getCacheType()
226     {
227         return this.getSuperEJB3AssociationEndFacade().getCacheType();
228     }
229 
230     /**
231      * Return the cascade type attributes as an array of this association end or null if no relevant
232      * cascade attribute is found.
233      * @see EJB3AssociationEndFacade#getCascadeType()
234      */
235     public String getCascadeType()
236     {
237         return this.getSuperEJB3AssociationEndFacade().getCascadeType();
238     }
239 
240     /**
241      * Returns the association end collection index name.
242      * @see EJB3AssociationEndFacade#getCollectionIndexName()
243      */
244     public String getCollectionIndexName()
245     {
246         return this.getSuperEJB3AssociationEndFacade().getCollectionIndexName();
247     }
248 
249     /**
250      * this will only apply for Maps; it will return the type of the attribute specified on the
251      * CollectionIndexName tagged value
252      * @see EJB3AssociationEndFacade#getCollectionIndexType()
253      */
254     public String getCollectionIndexType()
255     {
256         return this.getSuperEJB3AssociationEndFacade().getCollectionIndexType();
257     }
258 
259     /**
260      * Returns the collection type defined on this association end using the
261      * andromda_persistence_collection_type tagged value.
262      * If undefined use the following strategy:
263      * - If ordered collection type: return a list
264      * - Otherwise, return the default association collection type.
265      * @see EJB3AssociationEndFacade#getCollectionType()
266      */
267     public String getCollectionType()
268     {
269         return this.getSuperEJB3AssociationEndFacade().getCollectionType();
270     }
271 
272     /**
273      * The fully qualified class name of the collection implementation type.
274      * @see EJB3AssociationEndFacade#getCollectionTypeImplemenationClass()
275      */
276     public String getCollectionTypeImplemenationClass()
277     {
278         return this.getSuperEJB3AssociationEndFacade().getCollectionTypeImplemenationClass();
279     }
280 
281     /**
282      * The actual implementation of the collection type.
283      * @see EJB3AssociationEndFacade#getCollectionTypeImplementation()
284      */
285     public String getCollectionTypeImplementation()
286     {
287         return this.getSuperEJB3AssociationEndFacade().getCollectionTypeImplementation();
288     }
289 
290     /**
291      * The actual implementation of the collection type.
292      * @see EJB3AssociationEndFacade#getCollectionTypeImplementation(String arg)
293      */
294     public String getCollectionTypeImplementation(String arg)
295     {
296         return this.getSuperEJB3AssociationEndFacade().getCollectionTypeImplementation(arg);
297     }
298 
299     /**
300      * Defines the column definition DDL used when creating table schema - use to override default
301      * container DDL.
302      * @see EJB3AssociationEndFacade#getColumnDefinition()
303      */
304     public String getColumnDefinition()
305     {
306         return this.getSuperEJB3AssociationEndFacade().getColumnDefinition();
307     }
308 
309     /**
310      * Returns the default cascade property specified for UML composition.
311      * @see EJB3AssociationEndFacade#getCompositionCascadeType()
312      */
313     public String getCompositionCascadeType()
314     {
315         return this.getSuperEJB3AssociationEndFacade().getCompositionCascadeType();
316     }
317 
318     /**
319      * Returns the default collection interface from namespace descriptor.
320      * @see EJB3AssociationEndFacade#getDefaultCollectionInterface()
321      */
322     public String getDefaultCollectionInterface()
323     {
324         return this.getSuperEJB3AssociationEndFacade().getDefaultCollectionInterface();
325     }
326 
327     /**
328      * Get the fetch type for this association end(CMR).
329      * If no fetch type tagged value is specified and COMPOSITION_DEFINES_EAGER_LOADING is enabled,
330      * then:
331      * <ul><li>aggregation: lazy-loaded</li><li>composition: eager-loaded</li></ul>
332      * Otherwise, the default fetch type for CMR of type One2Many and Many2Many is LAZY.
333      * Default fetch type for CMR of type Many2One and One2One is EAGER.
334      * This will return either EAGER or LAZY.
335      * @see EJB3AssociationEndFacade#getFetchType()
336      */
337     public String getFetchType()
338     {
339         return this.getSuperEJB3AssociationEndFacade().getFetchType();
340     }
341 
342     /**
343      * Returns the name of the foreign key constraint to use for name property of
344      * org.hibernate.annotations.ForeignKey annotation used for Many-To-One,
345      * One-To-One and Many-To-Many relationships.
346      * @see EJB3AssociationEndFacade#getForeignKeyConstraintName(String suffix)
347      */
348     public String getForeignKeyConstraintName(String suffix)
349     {
350         return this.getSuperEJB3AssociationEndFacade().getForeignKeyConstraintName(suffix);
351     }
352 
353     /**
354      * Returns the name of the foreign key to use for name property of JoinColumn/InverseJoinColumn
355      * used in JoinTable for One-To-Many and Many-To-Many relationships.
356      * @see EJB3AssociationEndFacade#getForeignKeyName(String suffix)
357      */
358     public String getForeignKeyName(String suffix)
359     {
360         return this.getSuperEJB3AssociationEndFacade().getForeignKeyName(suffix);
361     }
362 
363     /**
364      * Returns the getter name for the label name of the display attribute of the manageable entity.
365      * @see EJB3AssociationEndFacade#getGetterLabelName()
366      */
367     public String getGetterLabelName()
368     {
369         return this.getSuperEJB3AssociationEndFacade().getGetterLabelName();
370     }
371 
372     /**
373      * Returns the Hibernate cascade attribute of this association end.
374      * @see EJB3AssociationEndFacade#getHibernateCascadeType()
375      */
376     public String getHibernateCascadeType()
377     {
378         return this.getSuperEJB3AssociationEndFacade().getHibernateCascadeType();
379     }
380 
381     /**
382      * Returns the label name for the association end used as the display attribute for manageable
383      * entities.
384      * @see EJB3AssociationEndFacade#getLabelName()
385      */
386     public String getLabelName()
387     {
388         return this.getSuperEJB3AssociationEndFacade().getLabelName();
389     }
390 
391     /**
392      * The order by clause set to order the returning Collection object on the many side of an
393      * association.
394      * @see EJB3AssociationEndFacade#getOrderByClause()
395      */
396     public String getOrderByClause()
397     {
398         return this.getSuperEJB3AssociationEndFacade().getOrderByClause();
399     }
400 
401     /**
402      * Returns the setter name for the label name of the display attribute of the manageable entity.
403      * @see EJB3AssociationEndFacade#getSetterLabelName()
404      */
405     public String getSetterLabelName()
406     {
407         return this.getSuperEJB3AssociationEndFacade().getSetterLabelName();
408     }
409 
410     /**
411      * Returns true if the tagged value with the specified name exists for the association end.
412      * @see EJB3AssociationEndFacade#hasTaggedValue(String name)
413      */
414     public boolean hasTaggedValue(String name)
415     {
416         return this.getSuperEJB3AssociationEndFacade().hasTaggedValue(name);
417     }
418 
419     /**
420      * Returns true if association caching has been enabled via namespace property
421      * hibernateEnableAssociationCache.
422      * @see EJB3AssociationEndFacade#isAssociationCacheEnabled()
423      */
424     public boolean isAssociationCacheEnabled()
425     {
426         return this.getSuperEJB3AssociationEndFacade().isAssociationCacheEnabled();
427     }
428 
429     /**
430      * Returns true if the collection type is a collection.  This will only be the case if the
431      * association end multiplicity is defined as ordered.
432      * @see EJB3AssociationEndFacade#isCollection()
433      */
434     public boolean isCollection()
435     {
436         return this.getSuperEJB3AssociationEndFacade().isCollection();
437     }
438 
439     /**
440      * Returns true if the collection interface for this association end is java.util.SortedSet.
441      * @see EJB3AssociationEndFacade#isCollectionInterfaceSortedSet()
442      */
443     public boolean isCollectionInterfaceSortedSet()
444     {
445         return this.getSuperEJB3AssociationEndFacade().isCollectionInterfaceSortedSet();
446     }
447 
448     /**
449      * Whether the column can be nullable.  False for identifier and unique fields.  If
450      * andromda_persistence_column_nullable tag is set, the tagged value is used.  Otherwise,
451      * determine if this attribute is required from the multiplicity set on the attribute.
452      * @see EJB3AssociationEndFacade#isColumnNullable()
453      */
454     public boolean isColumnNullable()
455     {
456         return this.getSuperEJB3AssociationEndFacade().isColumnNullable();
457     }
458 
459     /**
460      * Determine if the fetch type for this entity relationship end is eager loading.
461      * @see EJB3AssociationEndFacade#isEager()
462      */
463     public boolean isEager()
464     {
465         return this.getSuperEJB3AssociationEndFacade().isEager();
466     }
467 
468     /**
469      * Returns true if a foreign key constraint has been defined explicitly by the user.  Otherwise
470      * returns false.  This will determine if the ForeignKey annotation will be rendered.  We
471      * require this because there is no clean way of defining the constraint name for all
472      * constraints as there may be a chance that two constraints may have the same name. This
473      * vilates the database integrity.
474      * @see EJB3AssociationEndFacade#isForeignKeyConstraintDefined()
475      */
476     public boolean isForeignKeyConstraintDefined()
477     {
478         return this.getSuperEJB3AssociationEndFacade().isForeignKeyConstraintDefined();
479     }
480 
481     /**
482      * Returns true if a Hibernate cascade attribute is defined for this association end.
483      * @see EJB3AssociationEndFacade#isHibernateCascadeExists()
484      */
485     public boolean isHibernateCascadeExists()
486     {
487         return this.getSuperEJB3AssociationEndFacade().isHibernateCascadeExists();
488     }
489 
490     /**
491      * Determine if the fetch type for this entity relationship end is lazy loading.
492      * @see EJB3AssociationEndFacade#isLazy()
493      */
494     public boolean isLazy()
495     {
496         return this.getSuperEJB3AssociationEndFacade().isLazy();
497     }
498 
499     /**
500      * Returns true if the collection type is a list.  This will only be the case if the association
501      * end multiplicity is defined as ordered.
502      * @see EJB3AssociationEndFacade#isList()
503      */
504     public boolean isList()
505     {
506         return this.getSuperEJB3AssociationEndFacade().isList();
507     }
508 
509     /**
510      * Returns true if the collection type is a map.  This will only be the case if the association
511      * end multiplicity is defined as unordered.
512      * @see EJB3AssociationEndFacade#isMap()
513      */
514     public boolean isMap()
515     {
516         return this.getSuperEJB3AssociationEndFacade().isMap();
517     }
518 
519     /**
520      * Sets the optional attribute on the annotation to determine if a null value is allowed.  If
521      * set to false, non-null relationships must always exist.  If the andromda_persistence_optional
522      * tag is set, then use the tagged value, otherwise determine if null value is allowed by way of
523      * multiplicity on the association end.
524      * @see EJB3AssociationEndFacade#isOptional()
525      */
526     public boolean isOptional()
527     {
528         return this.getSuperEJB3AssociationEndFacade().isOptional();
529     }
530 
531     /**
532      * Determines if this association end if the owning side.  Used in one-to-one and many-to-many
533      * relationships.
534      * @see EJB3AssociationEndFacade#isOwning()
535      */
536     public boolean isOwning()
537     {
538         return this.getSuperEJB3AssociationEndFacade().isOwning();
539     }
540 
541     /**
542      * Returns true if the collection type is a set.  This will only be the case if the association
543      * end multiplicity is defined as unordered.
544      * @see EJB3AssociationEndFacade#isSet()
545      */
546     public boolean isSet()
547     {
548         return this.getSuperEJB3AssociationEndFacade().isSet();
549     }
550 
551     /**
552      * A name suitable for use when adding new elements to this association end in programming code.
553      * @see AssociationEndFacade#getAdderName()
554      */
555     public String getAdderName()
556     {
557         return this.getSuperEJB3AssociationEndFacade().getAdderName();
558     }
559 
560     /**
561      * Returns the value of the 'Aggregation' attribute (none, shared, composite). The default value
562      * is "none". The literals are from the enumeration org.eclipse.uml2.uml.AggregationKind.
563      * Specifies the kind of aggregation that applies to the Property.
564      * @see AssociationEndFacade#getAggregationKind()
565      */
566     public String getAggregationKind()
567     {
568         return this.getSuperEJB3AssociationEndFacade().getAggregationKind();
569     }
570 
571     /**
572      * The association owning this association end.
573      * @see AssociationEndFacade#getAssociation()
574      */
575     public AssociationFacade getAssociation()
576     {
577         return this.getSuperEJB3AssociationEndFacade().getAssociation();
578     }
579 
580     /**
581      * UML2: Returns the value of the 'Default' attribute. Specifies a String that represents a
582      * value to be used when no argument is supplied for the Property. A String that is evaluated to
583      * give a default value for the Property when an object of the owning Classifier is
584      * instantiated.  Can be something like: new ValueObject(values);
585      * @see AssociationEndFacade#getDefault()
586      */
587     public String getDefault()
588     {
589         return this.getSuperEJB3AssociationEndFacade().getDefault();
590     }
591 
592     /**
593      * A name suitable for use when accessing this association end in programming code.
594      * @see AssociationEndFacade#getGetterName()
595      */
596     public String getGetterName()
597     {
598         return this.getSuperEJB3AssociationEndFacade().getGetterName();
599     }
600 
601     /**
602      * The name of the type that is returned on the accessor and mutator operations,  determined in
603      * part by the multiplicity.
604      * @see AssociationEndFacade#getGetterSetterTypeName()
605      */
606     public String getGetterSetterTypeName()
607     {
608         return this.getSuperEJB3AssociationEndFacade().getGetterSetterTypeName();
609     }
610 
611     /**
612      * the lower value for the multiplicity
613      * -only applicable for UML2
614      * @see AssociationEndFacade#getLower()
615      */
616     public int getLower()
617     {
618         return this.getSuperEJB3AssociationEndFacade().getLower();
619     }
620 
621     /**
622      * The other association end owned by this end's association.
623      * @see AssociationEndFacade#getOtherEnd()
624      */
625     public AssociationEndFacade getOtherEnd()
626     {
627         return this.getSuperEJB3AssociationEndFacade().getOtherEnd();
628     }
629 
630     /**
631      * A name suitable for use when removing element from this association end in programming code.
632      * @see AssociationEndFacade#getRemoverName()
633      */
634     public String getRemoverName()
635     {
636         return this.getSuperEJB3AssociationEndFacade().getRemoverName();
637     }
638 
639     /**
640      * A name suitable for use when accessing this association end in programming code.
641      * @see AssociationEndFacade#getSetterName()
642      */
643     public String getSetterName()
644     {
645         return this.getSuperEJB3AssociationEndFacade().getSetterName();
646     }
647 
648     /**
649      * The classifier attached to this association end.
650      * @see AssociationEndFacade#getType()
651      */
652     public ClassifierFacade getType()
653     {
654         return this.getSuperEJB3AssociationEndFacade().getType();
655     }
656 
657     /**
658      * the upper value for the multiplicity (will be -1 for *)
659      * -only applicable for UML2
660      * @see AssociationEndFacade#getUpper()
661      */
662     public int getUpper()
663     {
664         return this.getSuperEJB3AssociationEndFacade().getUpper();
665     }
666 
667     /**
668      * True if this association end represents an aggregation relationship.
669      * @see AssociationEndFacade#isAggregation()
670      */
671     public boolean isAggregation()
672     {
673         return this.getSuperEJB3AssociationEndFacade().isAggregation();
674     }
675 
676     /**
677      * Is true if update of one side of the association should also update the other side. false if
678      * not.
679      * @see AssociationEndFacade#isBidirectional()
680      */
681     public boolean isBidirectional()
682     {
683         return this.getSuperEJB3AssociationEndFacade().isBidirectional();
684     }
685 
686     /**
687      * Returns whether or not (true/false) this association end is the child end of the assocation
688      * (i.e. the other end's aggregation is composition).
689      * @see AssociationEndFacade#isChild()
690      */
691     public boolean isChild()
692     {
693         return this.getSuperEJB3AssociationEndFacade().isChild();
694     }
695 
696     /**
697      * True if this association end represents a composition relationship.
698      * @see AssociationEndFacade#isComposition()
699      */
700     public boolean isComposition()
701     {
702         return this.getSuperEJB3AssociationEndFacade().isComposition();
703     }
704 
705     /**
706      * If the association end is derived (its value is computed). UML2 only. UML14 always returns
707      * false. Default=false.
708      * @see AssociationEndFacade#isDerived()
709      */
710     public boolean isDerived()
711     {
712         return this.getSuperEJB3AssociationEndFacade().isDerived();
713     }
714 
715     /**
716      * IsLeaf property in the association end property. If true, attribute is final, cannot be
717      * extended or implemented by a descendant. Default=false.
718      * @see AssociationEndFacade#isLeaf()
719      */
720     public boolean isLeaf()
721     {
722         return this.getSuperEJB3AssociationEndFacade().isLeaf();
723     }
724 
725     /**
726      * True if this association end's multiplicity is greater than one.
727      * @see AssociationEndFacade#isMany()
728      */
729     public boolean isMany()
730     {
731         return this.getSuperEJB3AssociationEndFacade().isMany();
732     }
733 
734     /**
735      * True if this association end's and the other end's multiplicities are both many.
736      * @see AssociationEndFacade#isMany2Many()
737      */
738     public boolean isMany2Many()
739     {
740         return this.getSuperEJB3AssociationEndFacade().isMany2Many();
741     }
742 
743     /**
744      * True if this association end's multiplicity is many while the other end's is one.
745      * @see AssociationEndFacade#isMany2One()
746      */
747     public boolean isMany2One()
748     {
749         return this.getSuperEJB3AssociationEndFacade().isMany2One();
750     }
751 
752     /**
753      * True if it is possible to navigate from the other end to this association end .
754      * @see AssociationEndFacade#isNavigable()
755      */
756     public boolean isNavigable()
757     {
758         return this.getSuperEJB3AssociationEndFacade().isNavigable();
759     }
760 
761     /**
762      * True if this association end's multiplicity is one while the other end's is many.
763      * @see AssociationEndFacade#isOne2Many()
764      */
765     public boolean isOne2Many()
766     {
767         return this.getSuperEJB3AssociationEndFacade().isOne2Many();
768     }
769 
770     /**
771      * True if this association end's and the other end's multiplicities are both one.
772      * @see AssociationEndFacade#isOne2One()
773      */
774     public boolean isOne2One()
775     {
776         return this.getSuperEJB3AssociationEndFacade().isOne2One();
777     }
778 
779     /**
780      * Indicates whether or not the association ends are ordered (if multiplicity is greater than
781      * 1).
782      * @see AssociationEndFacade#isOrdered()
783      */
784     public boolean isOrdered()
785     {
786         return this.getSuperEJB3AssociationEndFacade().isOrdered();
787     }
788 
789     /**
790      * True if the association end cannot be changed.
791      * @see AssociationEndFacade#isReadOnly()
792      */
793     public boolean isReadOnly()
794     {
795         return this.getSuperEJB3AssociationEndFacade().isReadOnly();
796     }
797 
798     /**
799      * True if this association end's multiplicity is strictly greater than zero.
800      * @see AssociationEndFacade#isRequired()
801      */
802     public boolean isRequired()
803     {
804         return this.getSuperEJB3AssociationEndFacade().isRequired();
805     }
806 
807     /**
808      * Indicates if this associationEnd is 'static', meaning it has a classifier scope.
809      * @see AssociationEndFacade#isStatic()
810      */
811     public boolean isStatic()
812     {
813         return this.getSuperEJB3AssociationEndFacade().isStatic();
814     }
815 
816     /**
817      * UML2: If the association attribute is unique within the Collection type. UML14 always returns
818      * false. Unique+Ordered determines the implementation Collection type. Default=false.
819      * @see AssociationEndFacade#isUnique()
820      */
821     public boolean isUnique()
822     {
823         return this.getSuperEJB3AssociationEndFacade().isUnique();
824     }
825 
826     /**
827      * The name of the index to create on a column that persists the foreign key attribute.
828      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getColumnIndex()
829      */
830     public String getColumnIndex()
831     {
832         return this.getSuperEJB3AssociationEndFacade().getColumnIndex();
833     }
834 
835     /**
836      * The name of the column that makes up the foreign key.
837      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getColumnName()
838      */
839     public String getColumnName()
840     {
841         return this.getSuperEJB3AssociationEndFacade().getColumnName();
842     }
843 
844     /**
845      * The name of the foreign key constraint to use for databases.
846      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getForeignKeyConstraintName()
847      */
848     public String getForeignKeyConstraintName()
849     {
850         return this.getSuperEJB3AssociationEndFacade().getForeignKeyConstraintName();
851     }
852 
853     /**
854      * The current foreign key suffix specified for this entity association end facade.
855      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getForeignKeySuffix()
856      */
857     public String getForeignKeySuffix()
858     {
859         return this.getSuperEJB3AssociationEndFacade().getForeignKeySuffix();
860     }
861 
862     /**
863      * The SQL type for this the foreign key column of this association end.
864      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getSqlType()
865      */
866     public String getSqlType()
867     {
868         return this.getSuperEJB3AssociationEndFacade().getSqlType();
869     }
870 
871     /**
872      * The name of the unique-key that this unique association end belongs
873      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getUniqueGroup()
874      */
875     public String getUniqueGroup()
876     {
877         return this.getSuperEJB3AssociationEndFacade().getUniqueGroup();
878     }
879 
880     /**
881      * Indicates whether or not a foreign identifier should be used for the entity that owns this
882      * association end.  This would only make sense in the case of a child in a one-to-one
883      * parent-child association.  If this flag is true, then the identifier of this entity should
884      * also be used as the foreign key to the related parent entity.
885      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isForeignIdentifier()
886      */
887     public boolean isForeignIdentifier()
888     {
889         return this.getSuperEJB3AssociationEndFacade().isForeignIdentifier();
890     }
891 
892     /**
893      * True if this association is an identifier for its entity.
894      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isIdentifier()
895      */
896     public boolean isIdentifier()
897     {
898         return this.getSuperEJB3AssociationEndFacade().isIdentifier();
899     }
900 
901     /**
902      * True if the associationEnd is marked with identifiers stereotype, false otherwise.
903      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isIdentifiersPresent()
904      */
905     public boolean isIdentifiersPresent()
906     {
907         return this.getSuperEJB3AssociationEndFacade().isIdentifiersPresent();
908     }
909 
910     /**
911      * Indicates this association end should be ignored by the persistence layer.
912      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isTransient()
913      */
914     public boolean isTransient()
915     {
916         return this.getSuperEJB3AssociationEndFacade().isTransient();
917     }
918 
919     /**
920      * Copies all tagged values from the given ModelElementFacade to this model element facade.
921      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
922      */
923     public void copyTaggedValues(ModelElementFacade element)
924     {
925         this.getSuperEJB3AssociationEndFacade().copyTaggedValues(element);
926     }
927 
928     /**
929      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
930      * one found will be returned.
931      * @see ModelElementFacade#findTaggedValue(String tagName)
932      */
933     public Object findTaggedValue(String tagName)
934     {
935         return this.getSuperEJB3AssociationEndFacade().findTaggedValue(tagName);
936     }
937 
938     /**
939      * Returns all the values for the tagged value with the specified name. The returned collection
940      * will contains only String instances, or will be empty. Never null.
941      * @see ModelElementFacade#findTaggedValues(String tagName)
942      */
943     public Collection<Object> findTaggedValues(String tagName)
944     {
945         return this.getSuperEJB3AssociationEndFacade().findTaggedValues(tagName);
946     }
947 
948     /**
949      * Returns the fully qualified name of the model element. The fully qualified name includes
950      * complete package qualified name of the underlying model element. The templates parameter will
951      * be replaced by the correct one given the binding relation of the parameter to this element.
952      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
953      */
954     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
955     {
956         return this.getSuperEJB3AssociationEndFacade().getBindedFullyQualifiedName(bindedElement);
957     }
958 
959     /**
960      * Gets all constraints belonging to the model element.
961      * @see ModelElementFacade#getConstraints()
962      */
963     public Collection<ConstraintFacade> getConstraints()
964     {
965         return this.getSuperEJB3AssociationEndFacade().getConstraints();
966     }
967 
968     /**
969      * Returns the constraints of the argument kind that have been placed onto this model. Typical
970      * kinds are "inv", "pre" and "post". Other kinds are possible.
971      * @see ModelElementFacade#getConstraints(String kind)
972      */
973     public Collection<ConstraintFacade> getConstraints(String kind)
974     {
975         return this.getSuperEJB3AssociationEndFacade().getConstraints(kind);
976     }
977 
978     /**
979      * Gets the documentation for the model element, The indent argument is prefixed to each line.
980      * By default this method wraps lines after 64 characters.
981      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
982      * @see ModelElementFacade#getDocumentation(String indent)
983      */
984     public String getDocumentation(String indent)
985     {
986         return this.getSuperEJB3AssociationEndFacade().getDocumentation(indent);
987     }
988 
989     /**
990      * This method returns the documentation for this model element, with the lines wrapped after
991      * the specified number of characters, values of less than 1 will indicate no line wrapping is
992      * required. By default paragraphs are returned as HTML.
993      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
994      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
995      */
996     public String getDocumentation(String indent, int lineLength)
997     {
998         return this.getSuperEJB3AssociationEndFacade().getDocumentation(indent, lineLength);
999     }
1000 
1001     /**
1002      * This method returns the documentation for this model element, with the lines wrapped after
1003      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1004      * required. HTML style determines if HTML Escaping is applied.
1005      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1006      */
1007     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1008     {
1009         return this.getSuperEJB3AssociationEndFacade().getDocumentation(indent, lineLength, htmlStyle);
1010     }
1011 
1012     /**
1013      * The fully qualified name of this model element.
1014      * @see ModelElementFacade#getFullyQualifiedName()
1015      */
1016     public String getFullyQualifiedName()
1017     {
1018         return this.getSuperEJB3AssociationEndFacade().getFullyQualifiedName();
1019     }
1020 
1021     /**
1022      * Returns the fully qualified name of the model element. The fully qualified name includes
1023      * complete package qualified name of the underlying model element.  If modelName is true, then
1024      * the original name of the model element (the name contained within the model) will be the name
1025      * returned, otherwise a name from a language mapping will be returned.
1026      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1027      */
1028     public String getFullyQualifiedName(boolean modelName)
1029     {
1030         return this.getSuperEJB3AssociationEndFacade().getFullyQualifiedName(modelName);
1031     }
1032 
1033     /**
1034      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1035      * '/'.
1036      * @see ModelElementFacade#getFullyQualifiedNamePath()
1037      */
1038     public String getFullyQualifiedNamePath()
1039     {
1040         return this.getSuperEJB3AssociationEndFacade().getFullyQualifiedNamePath();
1041     }
1042 
1043     /**
1044      * Gets the unique identifier of the underlying model element.
1045      * @see ModelElementFacade#getId()
1046      */
1047     public String getId()
1048     {
1049         return this.getSuperEJB3AssociationEndFacade().getId();
1050     }
1051 
1052     /**
1053      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1054      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1055      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1056      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1057      * JDK5 compiler level.
1058      * @see ModelElementFacade#getKeywords()
1059      */
1060     public Collection<String> getKeywords()
1061     {
1062         return this.getSuperEJB3AssociationEndFacade().getKeywords();
1063     }
1064 
1065     /**
1066      * UML2: Retrieves a localized label for this named element.
1067      * @see ModelElementFacade#getLabel()
1068      */
1069     public String getLabel()
1070     {
1071         return this.getSuperEJB3AssociationEndFacade().getLabel();
1072     }
1073 
1074     /**
1075      * The language mappings that have been set for this model element.
1076      * @see ModelElementFacade#getLanguageMappings()
1077      */
1078     public TypeMappings getLanguageMappings()
1079     {
1080         return this.getSuperEJB3AssociationEndFacade().getLanguageMappings();
1081     }
1082 
1083     /**
1084      * Return the model containing this model element (multiple models may be loaded and processed
1085      * at the same time).
1086      * @see ModelElementFacade#getModel()
1087      */
1088     public ModelFacade getModel()
1089     {
1090         return this.getSuperEJB3AssociationEndFacade().getModel();
1091     }
1092 
1093     /**
1094      * The name of the model element.
1095      * @see ModelElementFacade#getName()
1096      */
1097     public String getName()
1098     {
1099         return this.getSuperEJB3AssociationEndFacade().getName();
1100     }
1101 
1102     /**
1103      * Gets the package to which this model element belongs.
1104      * @see ModelElementFacade#getPackage()
1105      */
1106     public ModelElementFacade getPackage()
1107     {
1108         return this.getSuperEJB3AssociationEndFacade().getPackage();
1109     }
1110 
1111     /**
1112      * The name of this model element's package.
1113      * @see ModelElementFacade#getPackageName()
1114      */
1115     public String getPackageName()
1116     {
1117         return this.getSuperEJB3AssociationEndFacade().getPackageName();
1118     }
1119 
1120     /**
1121      * Gets the package name (optionally providing the ability to retrieve the model name and not
1122      * the mapped name).
1123      * @see ModelElementFacade#getPackageName(boolean modelName)
1124      */
1125     public String getPackageName(boolean modelName)
1126     {
1127         return this.getSuperEJB3AssociationEndFacade().getPackageName(modelName);
1128     }
1129 
1130     /**
1131      * Returns the package as a path, the returned value always starts with out a slash '/'.
1132      * @see ModelElementFacade#getPackagePath()
1133      */
1134     public String getPackagePath()
1135     {
1136         return this.getSuperEJB3AssociationEndFacade().getPackagePath();
1137     }
1138 
1139     /**
1140      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1141      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1142      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1143      * the name of the NamedElement itself.
1144      * @see ModelElementFacade#getQualifiedName()
1145      */
1146     public String getQualifiedName()
1147     {
1148         return this.getSuperEJB3AssociationEndFacade().getQualifiedName();
1149     }
1150 
1151     /**
1152      * Gets the root package for the model element.
1153      * @see ModelElementFacade#getRootPackage()
1154      */
1155     public PackageFacade getRootPackage()
1156     {
1157         return this.getSuperEJB3AssociationEndFacade().getRootPackage();
1158     }
1159 
1160     /**
1161      * Gets the dependencies for which this model element is the source.
1162      * @see ModelElementFacade#getSourceDependencies()
1163      */
1164     public Collection<DependencyFacade> getSourceDependencies()
1165     {
1166         return this.getSuperEJB3AssociationEndFacade().getSourceDependencies();
1167     }
1168 
1169     /**
1170      * If this model element is the context of an activity graph, this represents that activity
1171      * graph.
1172      * @see ModelElementFacade#getStateMachineContext()
1173      */
1174     public StateMachineFacade getStateMachineContext()
1175     {
1176         return this.getSuperEJB3AssociationEndFacade().getStateMachineContext();
1177     }
1178 
1179     /**
1180      * The collection of ALL stereotype names for this model element.
1181      * @see ModelElementFacade#getStereotypeNames()
1182      */
1183     public Collection<String> getStereotypeNames()
1184     {
1185         return this.getSuperEJB3AssociationEndFacade().getStereotypeNames();
1186     }
1187 
1188     /**
1189      * Gets all stereotypes for this model element.
1190      * @see ModelElementFacade#getStereotypes()
1191      */
1192     public Collection<StereotypeFacade> getStereotypes()
1193     {
1194         return this.getSuperEJB3AssociationEndFacade().getStereotypes();
1195     }
1196 
1197     /**
1198      * Return the TaggedValues associated with this model element, under all stereotypes.
1199      * @see ModelElementFacade#getTaggedValues()
1200      */
1201     public Collection<TaggedValueFacade> getTaggedValues()
1202     {
1203         return this.getSuperEJB3AssociationEndFacade().getTaggedValues();
1204     }
1205 
1206     /**
1207      * Gets the dependencies for which this model element is the target.
1208      * @see ModelElementFacade#getTargetDependencies()
1209      */
1210     public Collection<DependencyFacade> getTargetDependencies()
1211     {
1212         return this.getSuperEJB3AssociationEndFacade().getTargetDependencies();
1213     }
1214 
1215     /**
1216      * Get the template parameter for this model element having the parameterName
1217      * @see ModelElementFacade#getTemplateParameter(String parameterName)
1218      */
1219     public Object getTemplateParameter(String parameterName)
1220     {
1221         return this.getSuperEJB3AssociationEndFacade().getTemplateParameter(parameterName);
1222     }
1223 
1224     /**
1225      * Get the template parameters for this model element
1226      * @see ModelElementFacade#getTemplateParameters()
1227      */
1228     public Collection<TemplateParameterFacade> getTemplateParameters()
1229     {
1230         return this.getSuperEJB3AssociationEndFacade().getTemplateParameters();
1231     }
1232 
1233     /**
1234      * The visibility (i.e. public, private, protected or package) of the model element, will
1235      * attempt a lookup for these values in the language mappings (if any).
1236      * @see ModelElementFacade#getVisibility()
1237      */
1238     public String getVisibility()
1239     {
1240         return this.getSuperEJB3AssociationEndFacade().getVisibility();
1241     }
1242 
1243     /**
1244      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1245      * is taken into account when searching for the stereotype), false otherwise.
1246      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1247      */
1248     public boolean hasExactStereotype(String stereotypeName)
1249     {
1250         return this.getSuperEJB3AssociationEndFacade().hasExactStereotype(stereotypeName);
1251     }
1252 
1253     /**
1254      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1255      * pipe, semicolon, or << >>
1256      * @see ModelElementFacade#hasKeyword(String keywordName)
1257      */
1258     public boolean hasKeyword(String keywordName)
1259     {
1260         return this.getSuperEJB3AssociationEndFacade().hasKeyword(keywordName);
1261     }
1262 
1263     /**
1264      * Returns true if the model element has the specified stereotype.  If the stereotype itself
1265      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1266      * one of the stereotype's ancestors has a matching name this method will return true, false
1267      * otherwise.
1268      * For example, if we have a certain stereotype called <<exception>> and a model element has a
1269      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1270      * method with 'stereotypeName' defined as 'exception' the method would return true since
1271      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1272      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1273      * @see ModelElementFacade#hasStereotype(String stereotypeName)
1274      */
1275     public boolean hasStereotype(String stereotypeName)
1276     {
1277         return this.getSuperEJB3AssociationEndFacade().hasStereotype(stereotypeName);
1278     }
1279 
1280     /**
1281      * True if there are target dependencies from this element that are instances of BindingFacade.
1282      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1283      * @see ModelElementFacade#isBindingDependenciesPresent()
1284      */
1285     public boolean isBindingDependenciesPresent()
1286     {
1287         return this.getSuperEJB3AssociationEndFacade().isBindingDependenciesPresent();
1288     }
1289 
1290     /**
1291      * Indicates if any constraints are present on this model element.
1292      * @see ModelElementFacade#isConstraintsPresent()
1293      */
1294     public boolean isConstraintsPresent()
1295     {
1296         return this.getSuperEJB3AssociationEndFacade().isConstraintsPresent();
1297     }
1298 
1299     /**
1300      * Indicates if any documentation is present on this model element.
1301      * @see ModelElementFacade#isDocumentationPresent()
1302      */
1303     public boolean isDocumentationPresent()
1304     {
1305         return this.getSuperEJB3AssociationEndFacade().isDocumentationPresent();
1306     }
1307 
1308     /**
1309      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1310      * @see ModelElementFacade#isReservedWord()
1311      */
1312     public boolean isReservedWord()
1313     {
1314         return this.getSuperEJB3AssociationEndFacade().isReservedWord();
1315     }
1316 
1317     /**
1318      * True is there are template parameters on this model element. For UML2, applies to Class,
1319      * Operation, Property, and Parameter.
1320      * @see ModelElementFacade#isTemplateParametersPresent()
1321      */
1322     public boolean isTemplateParametersPresent()
1323     {
1324         return this.getSuperEJB3AssociationEndFacade().isTemplateParametersPresent();
1325     }
1326 
1327     /**
1328      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1329      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1330      * Enumerations and Interfaces, optionally applies on other model elements.
1331      * @see ModelElementFacade#isValidIdentifierName()
1332      */
1333     public boolean isValidIdentifierName()
1334     {
1335         return this.getSuperEJB3AssociationEndFacade().isValidIdentifierName();
1336     }
1337 
1338     /**
1339      * Searches for the constraint with the specified 'name' on this model element, and if found
1340      * translates it using the specified 'translation' from a translation library discovered by the
1341      * framework.
1342      * @see ModelElementFacade#translateConstraint(String name, String translation)
1343      */
1344     public String translateConstraint(String name, String translation)
1345     {
1346         return this.getSuperEJB3AssociationEndFacade().translateConstraint(name, translation);
1347     }
1348 
1349     /**
1350      * Translates all constraints belonging to this model element with the given 'translation'.
1351      * @see ModelElementFacade#translateConstraints(String translation)
1352      */
1353     public String[] translateConstraints(String translation)
1354     {
1355         return this.getSuperEJB3AssociationEndFacade().translateConstraints(translation);
1356     }
1357 
1358     /**
1359      * Translates the constraints of the specified 'kind' belonging to this model element.
1360      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1361      */
1362     public String[] translateConstraints(String kind, String translation)
1363     {
1364         return this.getSuperEJB3AssociationEndFacade().translateConstraints(kind, translation);
1365     }
1366 
1367     /**
1368      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1369      */
1370     @Override
1371     public void initialize()
1372     {
1373         this.getSuperManageableEntityAssociationEnd().initialize();
1374         this.getSuperEJB3AssociationEndFacade().initialize();
1375     }
1376 
1377     /**
1378      * @return Object getSuperManageableEntityAssociationEnd().getValidationOwner()
1379      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1380      */
1381     @Override
1382     public Object getValidationOwner()
1383     {
1384         Object owner = this.getSuperManageableEntityAssociationEnd().getValidationOwner();
1385         if (owner == null)
1386         {
1387             owner = this.getSuperEJB3AssociationEndFacade().getValidationOwner();
1388         }
1389         return owner;
1390     }
1391 
1392     /**
1393      * @return String getSuperManageableEntityAssociationEnd().getValidationName()
1394      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1395      */
1396     @Override
1397     public String getValidationName()
1398     {
1399         String name = this.getSuperManageableEntityAssociationEnd().getValidationName();
1400         if (name == null)
1401         {
1402             name = this.getSuperEJB3AssociationEndFacade().getValidationName();
1403         }
1404         return name;
1405     }
1406 
1407     /**
1408      * @param validationMessages Collection<ModelValidationMessage>
1409      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1410      */
1411     @Override
1412     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1413     {
1414         this.getSuperManageableEntityAssociationEnd().validateInvariants(validationMessages);
1415         this.getSuperEJB3AssociationEndFacade().validateInvariants(validationMessages);
1416     }
1417 
1418     /**
1419      * The property that stores the name of the metafacade.
1420      */
1421     private static final String NAME_PROPERTY = "name";
1422     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1423 
1424     /**
1425      * @see Object#toString()
1426      */
1427     @Override
1428     public String toString()
1429     {
1430         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1431         toString.append("[");
1432         try
1433         {
1434             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1435         }
1436         catch (final Throwable tryAgain)
1437         {
1438             try
1439             {
1440                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1441             }
1442             catch (final Throwable ignore)
1443             {
1444                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1445             }
1446         }
1447         toString.append("]");
1448         return toString.toString();
1449     }
1450 }