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.spring.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.ClassifierFacade;
13  import org.andromda.metafacades.uml.ConstraintFacade;
14  import org.andromda.metafacades.uml.DependencyFacade;
15  import org.andromda.metafacades.uml.Destination;
16  import org.andromda.metafacades.uml.ModelElementFacade;
17  import org.andromda.metafacades.uml.ModelFacade;
18  import org.andromda.metafacades.uml.OperationFacade;
19  import org.andromda.metafacades.uml.PackageFacade;
20  import org.andromda.metafacades.uml.ParameterFacade;
21  import org.andromda.metafacades.uml.Role;
22  import org.andromda.metafacades.uml.Service;
23  import org.andromda.metafacades.uml.ServiceOperation;
24  import org.andromda.metafacades.uml.StateMachineFacade;
25  import org.andromda.metafacades.uml.StereotypeFacade;
26  import org.andromda.metafacades.uml.TaggedValueFacade;
27  import org.andromda.metafacades.uml.TemplateParameterFacade;
28  import org.andromda.metafacades.uml.TypeMappings;
29  
30  /**
31   * Represents an operation for a SpringService.
32   * MetafacadeLogic for SpringServiceOperation
33   *
34   * @see SpringServiceOperation
35   */
36  public abstract class SpringServiceOperationLogic
37      extends MetafacadeBase
38      implements SpringServiceOperation
39  {
40      /**
41       * The underlying UML object
42       * @see Object
43       */
44      protected Object metaObject;
45  
46      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
47       * @param metaObjectIn
48       * @param context
49       */
50      protected SpringServiceOperationLogic(Object metaObjectIn, String context)
51      {
52          super(metaObjectIn, getContext(context));
53          this.superServiceOperation =
54             (ServiceOperation)
55              MetafacadeFactory.getInstance().createFacadeImpl(
56                      "org.andromda.metafacades.uml.ServiceOperation",
57                      metaObjectIn,
58                      getContext(context));
59          this.metaObject = metaObjectIn;
60      }
61  
62      /**
63       * Gets the context for this metafacade logic instance.
64       * @param context String. Set to SpringServiceOperation if null
65       * @return context String
66       */
67      private static String getContext(String context)
68      {
69          if (context == null)
70          {
71              context = "org.andromda.cartridges.spring.metafacades.SpringServiceOperation";
72          }
73          return context;
74      }
75  
76      private ServiceOperation superServiceOperation;
77      private boolean superServiceOperationInitialized = false;
78  
79      /**
80       * Gets the ServiceOperation parent instance.
81       * @return this.superServiceOperation ServiceOperation
82       */
83      private ServiceOperation getSuperServiceOperation()
84      {
85          if (!this.superServiceOperationInitialized)
86          {
87              ((MetafacadeBase)this.superServiceOperation).setMetafacadeContext(this.getMetafacadeContext());
88              this.superServiceOperationInitialized = true;
89          }
90          return this.superServiceOperation;
91      }
92  
93      /** Reset context only for non-root metafacades
94       * @param context
95       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
96       */
97      @Override
98      public void resetMetafacadeContext(String context)
99      {
100         if (!this.contextRoot) // reset context only for non-root metafacades
101         {
102             context = getContext(context);  // to have same value as in original constructor call
103             setMetafacadeContext (context);
104             if (this.superServiceOperationInitialized)
105             {
106                 ((MetafacadeBase)this.superServiceOperation).resetMetafacadeContext(context);
107             }
108         }
109     }
110 
111     /**
112      * @return boolean true always
113      * @see SpringServiceOperation
114      */
115     public boolean isSpringServiceOperationMetaType()
116     {
117         return true;
118     }
119 
120     // --------------- attributes ---------------------
121 
122    /**
123     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#isWebserviceExposed()
124     * @return boolean
125     */
126     protected abstract boolean handleIsWebserviceExposed();
127 
128     private boolean __webserviceExposed1a;
129     private boolean __webserviceExposed1aSet = false;
130 
131     /**
132      * Returns true/false depending on whether or not this SpringServiceOperation should be exposed
133      * in a webservice.
134      * @return (boolean)handleIsWebserviceExposed()
135      */
136     public final boolean isWebserviceExposed()
137     {
138         boolean webserviceExposed1a = this.__webserviceExposed1a;
139         if (!this.__webserviceExposed1aSet)
140         {
141             // webserviceExposed has no pre constraints
142             webserviceExposed1a = handleIsWebserviceExposed();
143             // webserviceExposed has no post constraints
144             this.__webserviceExposed1a = webserviceExposed1a;
145             if (isMetafacadePropertyCachingEnabled())
146             {
147                 this.__webserviceExposed1aSet = true;
148             }
149         }
150         return webserviceExposed1a;
151     }
152 
153    /**
154     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getImplementationName()
155     * @return String
156     */
157     protected abstract String handleGetImplementationName();
158 
159     private String __implementationName2a;
160     private boolean __implementationName2aSet = false;
161 
162     /**
163      * The name of the the operation used within the service implementation.
164      * @return (String)handleGetImplementationName()
165      */
166     public final String getImplementationName()
167     {
168         String implementationName2a = this.__implementationName2a;
169         if (!this.__implementationName2aSet)
170         {
171             // implementationName has no pre constraints
172             implementationName2a = handleGetImplementationName();
173             // implementationName has no post constraints
174             this.__implementationName2a = implementationName2a;
175             if (isMetafacadePropertyCachingEnabled())
176             {
177                 this.__implementationName2aSet = true;
178             }
179         }
180         return implementationName2a;
181     }
182 
183    /**
184     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getImplementationSignature()
185     * @return String
186     */
187     protected abstract String handleGetImplementationSignature();
188 
189     private String __implementationSignature3a;
190     private boolean __implementationSignature3aSet = false;
191 
192     /**
193      * The signature for the implementation operation.
194      * @return (String)handleGetImplementationSignature()
195      */
196     public final String getImplementationSignature()
197     {
198         String implementationSignature3a = this.__implementationSignature3a;
199         if (!this.__implementationSignature3aSet)
200         {
201             // implementationSignature has no pre constraints
202             implementationSignature3a = handleGetImplementationSignature();
203             // implementationSignature has no post constraints
204             this.__implementationSignature3a = implementationSignature3a;
205             if (isMetafacadePropertyCachingEnabled())
206             {
207                 this.__implementationSignature3aSet = true;
208             }
209         }
210         return implementationSignature3a;
211     }
212 
213    /**
214     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getImplementationCall()
215     * @return String
216     */
217     protected abstract String handleGetImplementationCall();
218 
219     private String __implementationCall4a;
220     private boolean __implementationCall4aSet = false;
221 
222     /**
223      * The method call for the implementation operation.
224      * @return (String)handleGetImplementationCall()
225      */
226     public final String getImplementationCall()
227     {
228         String implementationCall4a = this.__implementationCall4a;
229         if (!this.__implementationCall4aSet)
230         {
231             // implementationCall has no pre constraints
232             implementationCall4a = handleGetImplementationCall();
233             // implementationCall has no post constraints
234             this.__implementationCall4a = implementationCall4a;
235             if (isMetafacadePropertyCachingEnabled())
236             {
237                 this.__implementationCall4aSet = true;
238             }
239         }
240         return implementationCall4a;
241     }
242 
243    /**
244     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getEjbTransactionType()
245     * @return String
246     */
247     protected abstract String handleGetEjbTransactionType();
248 
249     private String __ejbTransactionType5a;
250     private boolean __ejbTransactionType5aSet = false;
251 
252     /**
253      * The transaction type for EJB service operations (this is used when Session EJBs wrap the
254      * spring services).
255      * @return (String)handleGetEjbTransactionType()
256      */
257     public final String getEjbTransactionType()
258     {
259         String ejbTransactionType5a = this.__ejbTransactionType5a;
260         if (!this.__ejbTransactionType5aSet)
261         {
262             // ejbTransactionType has no pre constraints
263             ejbTransactionType5a = handleGetEjbTransactionType();
264             // ejbTransactionType has no post constraints
265             this.__ejbTransactionType5a = ejbTransactionType5a;
266             if (isMetafacadePropertyCachingEnabled())
267             {
268                 this.__ejbTransactionType5aSet = true;
269             }
270         }
271         return ejbTransactionType5a;
272     }
273 
274    /**
275     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getTransactionType()
276     * @return String
277     */
278     protected abstract String handleGetTransactionType();
279 
280     private String __transactionType6a;
281     private boolean __transactionType6aSet = false;
282 
283     /**
284      * Stores the Spring transaction type for an operation.
285      * @return (String)handleGetTransactionType()
286      */
287     public final String getTransactionType()
288     {
289         String transactionType6a = this.__transactionType6a;
290         if (!this.__transactionType6aSet)
291         {
292             // transactionType has no pre constraints
293             transactionType6a = handleGetTransactionType();
294             // transactionType has no post constraints
295             this.__transactionType6a = transactionType6a;
296             if (isMetafacadePropertyCachingEnabled())
297             {
298                 this.__transactionType6aSet = true;
299             }
300         }
301         return transactionType6a;
302     }
303 
304    /**
305     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getThrowsClause()
306     * @return String
307     */
308     protected abstract String handleGetThrowsClause();
309 
310     private String __throwsClause7a;
311     private boolean __throwsClause7aSet = false;
312 
313     /**
314      * Gets the throws clause for this service or null if the operation doesn't have any exceptions.
315      * @return (String)handleGetThrowsClause()
316      */
317     public final String getThrowsClause()
318     {
319         String throwsClause7a = this.__throwsClause7a;
320         if (!this.__throwsClause7aSet)
321         {
322             // throwsClause has no pre constraints
323             throwsClause7a = handleGetThrowsClause();
324             // throwsClause has no post constraints
325             this.__throwsClause7a = throwsClause7a;
326             if (isMetafacadePropertyCachingEnabled())
327             {
328                 this.__throwsClause7aSet = true;
329             }
330         }
331         return throwsClause7a;
332     }
333 
334    /**
335     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getOutgoingMessageImplementationCall()
336     * @return String
337     */
338     protected abstract String handleGetOutgoingMessageImplementationCall();
339 
340     private String __outgoingMessageImplementationCall8a;
341     private boolean __outgoingMessageImplementationCall8aSet = false;
342 
343     /**
344      * The outgoing JMS method implementation call.
345      * @return (String)handleGetOutgoingMessageImplementationCall()
346      */
347     public final String getOutgoingMessageImplementationCall()
348     {
349         String outgoingMessageImplementationCall8a = this.__outgoingMessageImplementationCall8a;
350         if (!this.__outgoingMessageImplementationCall8aSet)
351         {
352             // outgoingMessageImplementationCall has no pre constraints
353             outgoingMessageImplementationCall8a = handleGetOutgoingMessageImplementationCall();
354             // outgoingMessageImplementationCall has no post constraints
355             this.__outgoingMessageImplementationCall8a = outgoingMessageImplementationCall8a;
356             if (isMetafacadePropertyCachingEnabled())
357             {
358                 this.__outgoingMessageImplementationCall8aSet = true;
359             }
360         }
361         return outgoingMessageImplementationCall8a;
362     }
363 
364    /**
365     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getOutgoingMessageImplementationSignature()
366     * @return String
367     */
368     protected abstract String handleGetOutgoingMessageImplementationSignature();
369 
370     private String __outgoingMessageImplementationSignature9a;
371     private boolean __outgoingMessageImplementationSignature9aSet = false;
372 
373     /**
374      * The outgoing JMS implementation method signature.
375      * @return (String)handleGetOutgoingMessageImplementationSignature()
376      */
377     public final String getOutgoingMessageImplementationSignature()
378     {
379         String outgoingMessageImplementationSignature9a = this.__outgoingMessageImplementationSignature9a;
380         if (!this.__outgoingMessageImplementationSignature9aSet)
381         {
382             // outgoingMessageImplementationSignature has no pre constraints
383             outgoingMessageImplementationSignature9a = handleGetOutgoingMessageImplementationSignature();
384             // outgoingMessageImplementationSignature has no post constraints
385             this.__outgoingMessageImplementationSignature9a = outgoingMessageImplementationSignature9a;
386             if (isMetafacadePropertyCachingEnabled())
387             {
388                 this.__outgoingMessageImplementationSignature9aSet = true;
389             }
390         }
391         return outgoingMessageImplementationSignature9a;
392     }
393 
394    /**
395     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getIncomingMessageImplementationSignature()
396     * @return String
397     */
398     protected abstract String handleGetIncomingMessageImplementationSignature();
399 
400     private String __incomingMessageImplementationSignature10a;
401     private boolean __incomingMessageImplementationSignature10aSet = false;
402 
403     /**
404      * The incoming JMS implementation method signature.
405      * @return (String)handleGetIncomingMessageImplementationSignature()
406      */
407     public final String getIncomingMessageImplementationSignature()
408     {
409         String incomingMessageImplementationSignature10a = this.__incomingMessageImplementationSignature10a;
410         if (!this.__incomingMessageImplementationSignature10aSet)
411         {
412             // incomingMessageImplementationSignature has no pre constraints
413             incomingMessageImplementationSignature10a = handleGetIncomingMessageImplementationSignature();
414             // incomingMessageImplementationSignature has no post constraints
415             this.__incomingMessageImplementationSignature10a = incomingMessageImplementationSignature10a;
416             if (isMetafacadePropertyCachingEnabled())
417             {
418                 this.__incomingMessageImplementationSignature10aSet = true;
419             }
420         }
421         return incomingMessageImplementationSignature10a;
422     }
423 
424    /**
425     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getIncomingMessageImplementationCall()
426     * @return String
427     */
428     protected abstract String handleGetIncomingMessageImplementationCall();
429 
430     private String __incomingMessageImplementationCall11a;
431     private boolean __incomingMessageImplementationCall11aSet = false;
432 
433     /**
434      * The incoming JMS method implementation call.
435      * @return (String)handleGetIncomingMessageImplementationCall()
436      */
437     public final String getIncomingMessageImplementationCall()
438     {
439         String incomingMessageImplementationCall11a = this.__incomingMessageImplementationCall11a;
440         if (!this.__incomingMessageImplementationCall11aSet)
441         {
442             // incomingMessageImplementationCall has no pre constraints
443             incomingMessageImplementationCall11a = handleGetIncomingMessageImplementationCall();
444             // incomingMessageImplementationCall has no post constraints
445             this.__incomingMessageImplementationCall11a = incomingMessageImplementationCall11a;
446             if (isMetafacadePropertyCachingEnabled())
447             {
448                 this.__incomingMessageImplementationCall11aSet = true;
449             }
450         }
451         return incomingMessageImplementationCall11a;
452     }
453 
454    /**
455     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getImplementationReturnTypeName()
456     * @return String
457     */
458     protected abstract String handleGetImplementationReturnTypeName();
459 
460     private String __implementationReturnTypeName12a;
461     private boolean __implementationReturnTypeName12aSet = false;
462 
463     /**
464      * The fully qualified name of the implementation return type.
465      * @return (String)handleGetImplementationReturnTypeName()
466      */
467     public final String getImplementationReturnTypeName()
468     {
469         String implementationReturnTypeName12a = this.__implementationReturnTypeName12a;
470         if (!this.__implementationReturnTypeName12aSet)
471         {
472             // implementationReturnTypeName has no pre constraints
473             implementationReturnTypeName12a = handleGetImplementationReturnTypeName();
474             // implementationReturnTypeName has no post constraints
475             this.__implementationReturnTypeName12a = implementationReturnTypeName12a;
476             if (isMetafacadePropertyCachingEnabled())
477             {
478                 this.__implementationReturnTypeName12aSet = true;
479             }
480         }
481         return implementationReturnTypeName12a;
482     }
483 
484    /**
485     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getMessageListenerName()
486     * @return String
487     */
488     protected abstract String handleGetMessageListenerName();
489 
490     private String __messageListenerName13a;
491     private boolean __messageListenerName13aSet = false;
492 
493     /**
494      * Returns the name of the listener that accepts incoming messages for this operation.
495      * @return (String)handleGetMessageListenerName()
496      */
497     public final String getMessageListenerName()
498     {
499         String messageListenerName13a = this.__messageListenerName13a;
500         if (!this.__messageListenerName13aSet)
501         {
502             // messageListenerName has no pre constraints
503             messageListenerName13a = handleGetMessageListenerName();
504             // messageListenerName has no post constraints
505             this.__messageListenerName13a = messageListenerName13a;
506             if (isMetafacadePropertyCachingEnabled())
507             {
508                 this.__messageListenerName13aSet = true;
509             }
510         }
511         return messageListenerName13a;
512     }
513 
514    /**
515     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getFullyQualifiedMessageListenerName()
516     * @return String
517     */
518     protected abstract String handleGetFullyQualifiedMessageListenerName();
519 
520     private String __fullyQualifiedMessageListenerName14a;
521     private boolean __fullyQualifiedMessageListenerName14aSet = false;
522 
523     /**
524      * The fully qualified name of the listener that accepts incoming messages for this operation.
525      * @return (String)handleGetFullyQualifiedMessageListenerName()
526      */
527     public final String getFullyQualifiedMessageListenerName()
528     {
529         String fullyQualifiedMessageListenerName14a = this.__fullyQualifiedMessageListenerName14a;
530         if (!this.__fullyQualifiedMessageListenerName14aSet)
531         {
532             // fullyQualifiedMessageListenerName has no pre constraints
533             fullyQualifiedMessageListenerName14a = handleGetFullyQualifiedMessageListenerName();
534             // fullyQualifiedMessageListenerName has no post constraints
535             this.__fullyQualifiedMessageListenerName14a = fullyQualifiedMessageListenerName14a;
536             if (isMetafacadePropertyCachingEnabled())
537             {
538                 this.__fullyQualifiedMessageListenerName14aSet = true;
539             }
540         }
541         return fullyQualifiedMessageListenerName14a;
542     }
543 
544    /**
545     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getMessageListenerBeanName()
546     * @return String
547     */
548     protected abstract String handleGetMessageListenerBeanName();
549 
550     private String __messageListenerBeanName15a;
551     private boolean __messageListenerBeanName15aSet = false;
552 
553     /**
554      * The bean name of the message listener.
555      * @return (String)handleGetMessageListenerBeanName()
556      */
557     public final String getMessageListenerBeanName()
558     {
559         String messageListenerBeanName15a = this.__messageListenerBeanName15a;
560         if (!this.__messageListenerBeanName15aSet)
561         {
562             // messageListenerBeanName has no pre constraints
563             messageListenerBeanName15a = handleGetMessageListenerBeanName();
564             // messageListenerBeanName has no post constraints
565             this.__messageListenerBeanName15a = messageListenerBeanName15a;
566             if (isMetafacadePropertyCachingEnabled())
567             {
568                 this.__messageListenerBeanName15aSet = true;
569             }
570         }
571         return messageListenerBeanName15a;
572     }
573 
574    /**
575     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getMessageListenerContainerReferenceName()
576     * @return String
577     */
578     protected abstract String handleGetMessageListenerContainerReferenceName();
579 
580     private String __messageListenerContainerReferenceName16a;
581     private boolean __messageListenerContainerReferenceName16aSet = false;
582 
583     /**
584      * The bean name for the message listener container reference.
585      * @return (String)handleGetMessageListenerContainerReferenceName()
586      */
587     public final String getMessageListenerContainerReferenceName()
588     {
589         String messageListenerContainerReferenceName16a = this.__messageListenerContainerReferenceName16a;
590         if (!this.__messageListenerContainerReferenceName16aSet)
591         {
592             // messageListenerContainerReferenceName has no pre constraints
593             messageListenerContainerReferenceName16a = handleGetMessageListenerContainerReferenceName();
594             // messageListenerContainerReferenceName has no post constraints
595             this.__messageListenerContainerReferenceName16a = messageListenerContainerReferenceName16a;
596             if (isMetafacadePropertyCachingEnabled())
597             {
598                 this.__messageListenerContainerReferenceName16aSet = true;
599             }
600         }
601         return messageListenerContainerReferenceName16a;
602     }
603 
604    /**
605     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getMessageListenerContainerBeanName()
606     * @return String
607     */
608     protected abstract String handleGetMessageListenerContainerBeanName();
609 
610     private String __messageListenerContainerBeanName17a;
611     private boolean __messageListenerContainerBeanName17aSet = false;
612 
613     /**
614      * The bean name of the message listener container.
615      * @return (String)handleGetMessageListenerContainerBeanName()
616      */
617     public final String getMessageListenerContainerBeanName()
618     {
619         String messageListenerContainerBeanName17a = this.__messageListenerContainerBeanName17a;
620         if (!this.__messageListenerContainerBeanName17aSet)
621         {
622             // messageListenerContainerBeanName has no pre constraints
623             messageListenerContainerBeanName17a = handleGetMessageListenerContainerBeanName();
624             // messageListenerContainerBeanName has no post constraints
625             this.__messageListenerContainerBeanName17a = messageListenerContainerBeanName17a;
626             if (isMetafacadePropertyCachingEnabled())
627             {
628                 this.__messageListenerContainerBeanName17aSet = true;
629             }
630         }
631         return messageListenerContainerBeanName17a;
632     }
633 
634    /**
635     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#isOptimizeAcknowledge()
636     * @return boolean
637     */
638     protected abstract boolean handleIsOptimizeAcknowledge();
639 
640     private boolean __optimizeAcknowledge18a;
641     private boolean __optimizeAcknowledge18aSet = false;
642 
643     /**
644      * Tthis flag includes whether or not the "optimizeAcknowledge" is true/false for a messaging
645      * destination (aka JMS topic/queue); when receiving a message through an ActiveMQ connection,
646      * @return (boolean)handleIsOptimizeAcknowledge()
647      */
648     public final boolean isOptimizeAcknowledge()
649     {
650         boolean optimizeAcknowledge18a = this.__optimizeAcknowledge18a;
651         if (!this.__optimizeAcknowledge18aSet)
652         {
653             // optimizeAcknowledge has no pre constraints
654             optimizeAcknowledge18a = handleIsOptimizeAcknowledge();
655             // optimizeAcknowledge has no post constraints
656             this.__optimizeAcknowledge18a = optimizeAcknowledge18a;
657             if (isMetafacadePropertyCachingEnabled())
658             {
659                 this.__optimizeAcknowledge18aSet = true;
660             }
661         }
662         return optimizeAcknowledge18a;
663     }
664 
665    /**
666     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#getSessionAcknowledgeMode()
667     * @return String
668     */
669     protected abstract String handleGetSessionAcknowledgeMode();
670 
671     private String __sessionAcknowledgeMode19a;
672     private boolean __sessionAcknowledgeMode19aSet = false;
673 
674     /**
675      * Indicates the "session acknowledge mode" for the JMS session when this operation acts as a
676      * message receiver from the messaging destination (aka JMS topic/queue).
677      * @return (String)handleGetSessionAcknowledgeMode()
678      */
679     public final String getSessionAcknowledgeMode()
680     {
681         String sessionAcknowledgeMode19a = this.__sessionAcknowledgeMode19a;
682         if (!this.__sessionAcknowledgeMode19aSet)
683         {
684             // sessionAcknowledgeMode has no pre constraints
685             sessionAcknowledgeMode19a = handleGetSessionAcknowledgeMode();
686             // sessionAcknowledgeMode has no post constraints
687             this.__sessionAcknowledgeMode19a = sessionAcknowledgeMode19a;
688             if (isMetafacadePropertyCachingEnabled())
689             {
690                 this.__sessionAcknowledgeMode19aSet = true;
691             }
692         }
693         return sessionAcknowledgeMode19a;
694     }
695 
696    /**
697     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#isNullMessageConverterRequired()
698     * @return boolean
699     */
700     protected abstract boolean handleIsNullMessageConverterRequired();
701 
702     private boolean __nullMessageConverterRequired20a;
703     private boolean __nullMessageConverterRequired20aSet = false;
704 
705     /**
706      * This flag tells if the MessageConverter associated to the MessageListenerAdapter handling
707      * incoming message should be set to null.
708      * @return (boolean)handleIsNullMessageConverterRequired()
709      */
710     public final boolean isNullMessageConverterRequired()
711     {
712         boolean nullMessageConverterRequired20a = this.__nullMessageConverterRequired20a;
713         if (!this.__nullMessageConverterRequired20aSet)
714         {
715             // nullMessageConverterRequired has no pre constraints
716             nullMessageConverterRequired20a = handleIsNullMessageConverterRequired();
717             // nullMessageConverterRequired has no post constraints
718             this.__nullMessageConverterRequired20a = nullMessageConverterRequired20a;
719             if (isMetafacadePropertyCachingEnabled())
720             {
721                 this.__nullMessageConverterRequired20aSet = true;
722             }
723         }
724         return nullMessageConverterRequired20a;
725     }
726 
727    /**
728     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#isInitMethod()
729     * @return boolean
730     */
731     protected abstract boolean handleIsInitMethod();
732 
733     private boolean __initMethod21a;
734     private boolean __initMethod21aSet = false;
735 
736     /**
737      * Returns true/false depending on whether or not this SpringServiceOperation should be an
738      * init-method
739      * @return (boolean)handleIsInitMethod()
740      */
741     public final boolean isInitMethod()
742     {
743         boolean initMethod21a = this.__initMethod21a;
744         if (!this.__initMethod21aSet)
745         {
746             // initMethod has no pre constraints
747             initMethod21a = handleIsInitMethod();
748             // initMethod has no post constraints
749             this.__initMethod21a = initMethod21a;
750             if (isMetafacadePropertyCachingEnabled())
751             {
752                 this.__initMethod21aSet = true;
753             }
754         }
755         return initMethod21a;
756     }
757 
758    /**
759     * @see org.andromda.cartridges.spring.metafacades.SpringServiceOperation#isDestroyMethod()
760     * @return boolean
761     */
762     protected abstract boolean handleIsDestroyMethod();
763 
764     private boolean __destroyMethod22a;
765     private boolean __destroyMethod22aSet = false;
766 
767     /**
768      * Returns true/false depending on whether or not this SpringServiceOperation should be an
769      * destroy-method
770      * @return (boolean)handleIsDestroyMethod()
771      */
772     public final boolean isDestroyMethod()
773     {
774         boolean destroyMethod22a = this.__destroyMethod22a;
775         if (!this.__destroyMethod22aSet)
776         {
777             // destroyMethod has no pre constraints
778             destroyMethod22a = handleIsDestroyMethod();
779             // destroyMethod has no post constraints
780             this.__destroyMethod22a = destroyMethod22a;
781             if (isMetafacadePropertyCachingEnabled())
782             {
783                 this.__destroyMethod22aSet = true;
784             }
785         }
786         return destroyMethod22a;
787     }
788 
789     // ---------------- business methods ----------------------
790 
791     /**
792      * Method to be implemented in descendants
793      * Retrieves the throws clause allowing a comma separated list of exceptions to be passed in and
794      * appended to the list.
795      * @param initialExceptions
796      * @return String
797      */
798     protected abstract String handleGetThrowsClause(String initialExceptions);
799 
800     /**
801      * Retrieves the throws clause allowing a comma separated list of exceptions to be passed in and
802      * appended to the list.
803      * @param initialExceptions String
804      * A comma separated list of initial exceptions to add to the list.
805      * @return handleGetThrowsClause(initialExceptions)
806      */
807     public String getThrowsClause(String initialExceptions)
808     {
809         // getThrowsClause has no pre constraints
810         String returnValue = handleGetThrowsClause(initialExceptions);
811         // getThrowsClause has no post constraints
812         return returnValue;
813     }
814 
815     // ------------- associations ------------------
816 
817     /**
818      * @return true
819      * @see ServiceOperation
820      */
821     public boolean isServiceOperationMetaType()
822     {
823         return true;
824     }
825 
826     /**
827      * @return true
828      * @see OperationFacade
829      */
830     public boolean isOperationFacadeMetaType()
831     {
832         return true;
833     }
834 
835     /**
836      * @return true
837      * @see ModelElementFacade
838      */
839     public boolean isModelElementFacadeMetaType()
840     {
841         return true;
842     }
843 
844     // ----------- delegates to ServiceOperation ------------
845     /**
846      * Copies all tagged values from the given ModelElementFacade to this model element facade.
847      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
848      */
849     public void copyTaggedValues(ModelElementFacade element)
850     {
851         this.getSuperServiceOperation().copyTaggedValues(element);
852     }
853 
854     /**
855      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
856      * one found will be returned.
857      * @see ModelElementFacade#findTaggedValue(String tagName)
858      */
859     public Object findTaggedValue(String tagName)
860     {
861         return this.getSuperServiceOperation().findTaggedValue(tagName);
862     }
863 
864     /**
865      * Returns all the values for the tagged value with the specified name. The returned collection
866      * will contains only String instances, or will be empty. Never null.
867      * @see ModelElementFacade#findTaggedValues(String tagName)
868      */
869     public Collection<Object> findTaggedValues(String tagName)
870     {
871         return this.getSuperServiceOperation().findTaggedValues(tagName);
872     }
873 
874     /**
875      * Returns the fully qualified name of the model element. The fully qualified name includes
876      * complete package qualified name of the underlying model element. The templates parameter will
877      * be replaced by the correct one given the binding relation of the parameter to this element.
878      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
879      */
880     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
881     {
882         return this.getSuperServiceOperation().getBindedFullyQualifiedName(bindedElement);
883     }
884 
885     /**
886      * Gets all constraints belonging to the model element.
887      * @see ModelElementFacade#getConstraints()
888      */
889     public Collection<ConstraintFacade> getConstraints()
890     {
891         return this.getSuperServiceOperation().getConstraints();
892     }
893 
894     /**
895      * Returns the constraints of the argument kind that have been placed onto this model. Typical
896      * kinds are "inv", "pre" and "post". Other kinds are possible.
897      * @see ModelElementFacade#getConstraints(String kind)
898      */
899     public Collection<ConstraintFacade> getConstraints(String kind)
900     {
901         return this.getSuperServiceOperation().getConstraints(kind);
902     }
903 
904     /**
905      * Gets the documentation for the model element, The indent argument is prefixed to each line.
906      * By default this method wraps lines after 64 characters.
907      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
908      * @see ModelElementFacade#getDocumentation(String indent)
909      */
910     public String getDocumentation(String indent)
911     {
912         return this.getSuperServiceOperation().getDocumentation(indent);
913     }
914 
915     /**
916      * This method returns the documentation for this model element, with the lines wrapped after
917      * the specified number of characters, values of less than 1 will indicate no line wrapping is
918      * required. By default paragraphs are returned as HTML.
919      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
920      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
921      */
922     public String getDocumentation(String indent, int lineLength)
923     {
924         return this.getSuperServiceOperation().getDocumentation(indent, lineLength);
925     }
926 
927     /**
928      * This method returns the documentation for this model element, with the lines wrapped after
929      * the specified number of characters, values of less than 1 will indicate no line wrapping is
930      * required. HTML style determines if HTML Escaping is applied.
931      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
932      */
933     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
934     {
935         return this.getSuperServiceOperation().getDocumentation(indent, lineLength, htmlStyle);
936     }
937 
938     /**
939      * The fully qualified name of this model element.
940      * @see ModelElementFacade#getFullyQualifiedName()
941      */
942     public String getFullyQualifiedName()
943     {
944         return this.getSuperServiceOperation().getFullyQualifiedName();
945     }
946 
947     /**
948      * Returns the fully qualified name of the model element. The fully qualified name includes
949      * complete package qualified name of the underlying model element.  If modelName is true, then
950      * the original name of the model element (the name contained within the model) will be the name
951      * returned, otherwise a name from a language mapping will be returned.
952      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
953      */
954     public String getFullyQualifiedName(boolean modelName)
955     {
956         return this.getSuperServiceOperation().getFullyQualifiedName(modelName);
957     }
958 
959     /**
960      * Returns the fully qualified name as a path, the returned value always starts with out a slash
961      * '/'.
962      * @see ModelElementFacade#getFullyQualifiedNamePath()
963      */
964     public String getFullyQualifiedNamePath()
965     {
966         return this.getSuperServiceOperation().getFullyQualifiedNamePath();
967     }
968 
969     /**
970      * Gets the unique identifier of the underlying model element.
971      * @see ModelElementFacade#getId()
972      */
973     public String getId()
974     {
975         return this.getSuperServiceOperation().getId();
976     }
977 
978     /**
979      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
980      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
981      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
982      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
983      * JDK5 compiler level.
984      * @see ModelElementFacade#getKeywords()
985      */
986     public Collection<String> getKeywords()
987     {
988         return this.getSuperServiceOperation().getKeywords();
989     }
990 
991     /**
992      * UML2: Retrieves a localized label for this named element.
993      * @see ModelElementFacade#getLabel()
994      */
995     public String getLabel()
996     {
997         return this.getSuperServiceOperation().getLabel();
998     }
999 
1000     /**
1001      * The language mappings that have been set for this model element.
1002      * @see ModelElementFacade#getLanguageMappings()
1003      */
1004     public TypeMappings getLanguageMappings()
1005     {
1006         return this.getSuperServiceOperation().getLanguageMappings();
1007     }
1008 
1009     /**
1010      * Return the model containing this model element (multiple models may be loaded and processed
1011      * at the same time).
1012      * @see ModelElementFacade#getModel()
1013      */
1014     public ModelFacade getModel()
1015     {
1016         return this.getSuperServiceOperation().getModel();
1017     }
1018 
1019     /**
1020      * The name of the model element.
1021      * @see ModelElementFacade#getName()
1022      */
1023     public String getName()
1024     {
1025         return this.getSuperServiceOperation().getName();
1026     }
1027 
1028     /**
1029      * Gets the package to which this model element belongs.
1030      * @see ModelElementFacade#getPackage()
1031      */
1032     public ModelElementFacade getPackage()
1033     {
1034         return this.getSuperServiceOperation().getPackage();
1035     }
1036 
1037     /**
1038      * The name of this model element's package.
1039      * @see ModelElementFacade#getPackageName()
1040      */
1041     public String getPackageName()
1042     {
1043         return this.getSuperServiceOperation().getPackageName();
1044     }
1045 
1046     /**
1047      * Gets the package name (optionally providing the ability to retrieve the model name and not
1048      * the mapped name).
1049      * @see ModelElementFacade#getPackageName(boolean modelName)
1050      */
1051     public String getPackageName(boolean modelName)
1052     {
1053         return this.getSuperServiceOperation().getPackageName(modelName);
1054     }
1055 
1056     /**
1057      * Returns the package as a path, the returned value always starts with out a slash '/'.
1058      * @see ModelElementFacade#getPackagePath()
1059      */
1060     public String getPackagePath()
1061     {
1062         return this.getSuperServiceOperation().getPackagePath();
1063     }
1064 
1065     /**
1066      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1067      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1068      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1069      * the name of the NamedElement itself.
1070      * @see ModelElementFacade#getQualifiedName()
1071      */
1072     public String getQualifiedName()
1073     {
1074         return this.getSuperServiceOperation().getQualifiedName();
1075     }
1076 
1077     /**
1078      * Gets the root package for the model element.
1079      * @see ModelElementFacade#getRootPackage()
1080      */
1081     public PackageFacade getRootPackage()
1082     {
1083         return this.getSuperServiceOperation().getRootPackage();
1084     }
1085 
1086     /**
1087      * Gets the dependencies for which this model element is the source.
1088      * @see ModelElementFacade#getSourceDependencies()
1089      */
1090     public Collection<DependencyFacade> getSourceDependencies()
1091     {
1092         return this.getSuperServiceOperation().getSourceDependencies();
1093     }
1094 
1095     /**
1096      * If this model element is the context of an activity graph, this represents that activity
1097      * graph.
1098      * @see ModelElementFacade#getStateMachineContext()
1099      */
1100     public StateMachineFacade getStateMachineContext()
1101     {
1102         return this.getSuperServiceOperation().getStateMachineContext();
1103     }
1104 
1105     /**
1106      * The collection of ALL stereotype names for this model element.
1107      * @see ModelElementFacade#getStereotypeNames()
1108      */
1109     public Collection<String> getStereotypeNames()
1110     {
1111         return this.getSuperServiceOperation().getStereotypeNames();
1112     }
1113 
1114     /**
1115      * Gets all stereotypes for this model element.
1116      * @see ModelElementFacade#getStereotypes()
1117      */
1118     public Collection<StereotypeFacade> getStereotypes()
1119     {
1120         return this.getSuperServiceOperation().getStereotypes();
1121     }
1122 
1123     /**
1124      * Return the TaggedValues associated with this model element, under all stereotypes.
1125      * @see ModelElementFacade#getTaggedValues()
1126      */
1127     public Collection<TaggedValueFacade> getTaggedValues()
1128     {
1129         return this.getSuperServiceOperation().getTaggedValues();
1130     }
1131 
1132     /**
1133      * Gets the dependencies for which this model element is the target.
1134      * @see ModelElementFacade#getTargetDependencies()
1135      */
1136     public Collection<DependencyFacade> getTargetDependencies()
1137     {
1138         return this.getSuperServiceOperation().getTargetDependencies();
1139     }
1140 
1141     /**
1142      * Get the template parameter for this model element having the parameterName
1143      * @see ModelElementFacade#getTemplateParameter(String parameterName)
1144      */
1145     public Object getTemplateParameter(String parameterName)
1146     {
1147         return this.getSuperServiceOperation().getTemplateParameter(parameterName);
1148     }
1149 
1150     /**
1151      * Get the template parameters for this model element
1152      * @see ModelElementFacade#getTemplateParameters()
1153      */
1154     public Collection<TemplateParameterFacade> getTemplateParameters()
1155     {
1156         return this.getSuperServiceOperation().getTemplateParameters();
1157     }
1158 
1159     /**
1160      * The visibility (i.e. public, private, protected or package) of the model element, will
1161      * attempt a lookup for these values in the language mappings (if any).
1162      * @see ModelElementFacade#getVisibility()
1163      */
1164     public String getVisibility()
1165     {
1166         return this.getSuperServiceOperation().getVisibility();
1167     }
1168 
1169     /**
1170      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1171      * is taken into account when searching for the stereotype), false otherwise.
1172      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1173      */
1174     public boolean hasExactStereotype(String stereotypeName)
1175     {
1176         return this.getSuperServiceOperation().hasExactStereotype(stereotypeName);
1177     }
1178 
1179     /**
1180      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1181      * pipe, semicolon, or << >>
1182      * @see ModelElementFacade#hasKeyword(String keywordName)
1183      */
1184     public boolean hasKeyword(String keywordName)
1185     {
1186         return this.getSuperServiceOperation().hasKeyword(keywordName);
1187     }
1188 
1189     /**
1190      * Returns true if the model element has the specified stereotype.  If the stereotype itself
1191      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1192      * one of the stereotype's ancestors has a matching name this method will return true, false
1193      * otherwise.
1194      * For example, if we have a certain stereotype called <<exception>> and a model element has a
1195      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1196      * method with 'stereotypeName' defined as 'exception' the method would return true since
1197      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1198      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1199      * @see ModelElementFacade#hasStereotype(String stereotypeName)
1200      */
1201     public boolean hasStereotype(String stereotypeName)
1202     {
1203         return this.getSuperServiceOperation().hasStereotype(stereotypeName);
1204     }
1205 
1206     /**
1207      * True if there are target dependencies from this element that are instances of BindingFacade.
1208      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1209      * @see ModelElementFacade#isBindingDependenciesPresent()
1210      */
1211     public boolean isBindingDependenciesPresent()
1212     {
1213         return this.getSuperServiceOperation().isBindingDependenciesPresent();
1214     }
1215 
1216     /**
1217      * Indicates if any constraints are present on this model element.
1218      * @see ModelElementFacade#isConstraintsPresent()
1219      */
1220     public boolean isConstraintsPresent()
1221     {
1222         return this.getSuperServiceOperation().isConstraintsPresent();
1223     }
1224 
1225     /**
1226      * Indicates if any documentation is present on this model element.
1227      * @see ModelElementFacade#isDocumentationPresent()
1228      */
1229     public boolean isDocumentationPresent()
1230     {
1231         return this.getSuperServiceOperation().isDocumentationPresent();
1232     }
1233 
1234     /**
1235      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1236      * @see ModelElementFacade#isReservedWord()
1237      */
1238     public boolean isReservedWord()
1239     {
1240         return this.getSuperServiceOperation().isReservedWord();
1241     }
1242 
1243     /**
1244      * True is there are template parameters on this model element. For UML2, applies to Class,
1245      * Operation, Property, and Parameter.
1246      * @see ModelElementFacade#isTemplateParametersPresent()
1247      */
1248     public boolean isTemplateParametersPresent()
1249     {
1250         return this.getSuperServiceOperation().isTemplateParametersPresent();
1251     }
1252 
1253     /**
1254      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1255      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1256      * Enumerations and Interfaces, optionally applies on other model elements.
1257      * @see ModelElementFacade#isValidIdentifierName()
1258      */
1259     public boolean isValidIdentifierName()
1260     {
1261         return this.getSuperServiceOperation().isValidIdentifierName();
1262     }
1263 
1264     /**
1265      * Searches for the constraint with the specified 'name' on this model element, and if found
1266      * translates it using the specified 'translation' from a translation library discovered by the
1267      * framework.
1268      * @see ModelElementFacade#translateConstraint(String name, String translation)
1269      */
1270     public String translateConstraint(String name, String translation)
1271     {
1272         return this.getSuperServiceOperation().translateConstraint(name, translation);
1273     }
1274 
1275     /**
1276      * Translates all constraints belonging to this model element with the given 'translation'.
1277      * @see ModelElementFacade#translateConstraints(String translation)
1278      */
1279     public String[] translateConstraints(String translation)
1280     {
1281         return this.getSuperServiceOperation().translateConstraints(translation);
1282     }
1283 
1284     /**
1285      * Translates the constraints of the specified 'kind' belonging to this model element.
1286      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1287      */
1288     public String[] translateConstraints(String kind, String translation)
1289     {
1290         return this.getSuperServiceOperation().translateConstraints(kind, translation);
1291     }
1292 
1293     /**
1294      * Finds the parameter on this operation having the given name, if no parameter is found, null
1295      * is returned instead.
1296      * @see OperationFacade#findParameter(String name)
1297      */
1298     public ParameterFacade findParameter(String name)
1299     {
1300         return this.getSuperServiceOperation().findParameter(name);
1301     }
1302 
1303     /**
1304      * Searches the given feature for the specified tag.
1305      * If the follow boolean is set to true then the search will continue from the class operation
1306      * to the class itself and then up the class hierarchy.
1307      * @see OperationFacade#findTaggedValue(String name, boolean follow)
1308      */
1309     public Object findTaggedValue(String name, boolean follow)
1310     {
1311         return this.getSuperServiceOperation().findTaggedValue(name, follow);
1312     }
1313 
1314     /**
1315      * A comma separated list of all argument names.
1316      * @see OperationFacade#getArgumentNames()
1317      */
1318     public String getArgumentNames()
1319     {
1320         return this.getSuperServiceOperation().getArgumentNames();
1321     }
1322 
1323     /**
1324      * A comma separated list of all types of each argument, in order.
1325      * @see OperationFacade#getArgumentTypeNames()
1326      */
1327     public String getArgumentTypeNames()
1328     {
1329         return this.getSuperServiceOperation().getArgumentTypeNames();
1330     }
1331 
1332     /**
1333      * Specification of an argument used to pass information into or out of an invocation of a
1334      * behavioral
1335      * feature. Parameters are allowed to be treated as connectable elements. Parameters have
1336      * support for
1337      * streaming, exceptions, and parameter sets.
1338      * @see OperationFacade#getArguments()
1339      */
1340     public Collection<ParameterFacade> getArguments()
1341     {
1342         return this.getSuperServiceOperation().getArguments();
1343     }
1344 
1345     /**
1346      * Constructs the operation call with the operation name
1347      * @see OperationFacade#getCall()
1348      */
1349     public String getCall()
1350     {
1351         return this.getSuperServiceOperation().getCall();
1352     }
1353 
1354     /**
1355      * Returns the concurrency modifier for this operation (i.e. concurrent, guarded or sequential)
1356      * of the model element, will attempt a lookup for these values in the language mappings (if
1357      * any).
1358      * @see OperationFacade#getConcurrency()
1359      */
1360     public String getConcurrency()
1361     {
1362         return this.getSuperServiceOperation().getConcurrency();
1363     }
1364 
1365     /**
1366      * A comma separated list containing all exceptions that this operation throws.  Exceptions are
1367      * determined through dependencies that have the target element stereotyped as <<Exception>>.
1368      * @see OperationFacade#getExceptionList()
1369      */
1370     public String getExceptionList()
1371     {
1372         return this.getSuperServiceOperation().getExceptionList();
1373     }
1374 
1375     /**
1376      * Returns a comma separated list of exceptions appended to the comma separated list of fully
1377      * qualified 'initialException' classes passed in to this method.
1378      * @see OperationFacade#getExceptionList(String initialExceptions)
1379      */
1380     public String getExceptionList(String initialExceptions)
1381     {
1382         return this.getSuperServiceOperation().getExceptionList(initialExceptions);
1383     }
1384 
1385     /**
1386      * A collection of all exceptions thrown by this operation.
1387      * @see OperationFacade#getExceptions()
1388      */
1389     public Collection<ModelElementFacade> getExceptions()
1390     {
1391         return this.getSuperServiceOperation().getExceptions();
1392     }
1393 
1394     /**
1395      * Return Type with multiplicity taken into account. UML14 does not allow multiplicity *.
1396      * @see OperationFacade#getGetterSetterReturnTypeName()
1397      */
1398     public String getGetterSetterReturnTypeName()
1399     {
1400         return this.getSuperServiceOperation().getGetterSetterReturnTypeName();
1401     }
1402 
1403     /**
1404      * the lower value for the multiplicity
1405      * -only applicable for UML2
1406      * @see OperationFacade#getLower()
1407      */
1408     public int getLower()
1409     {
1410         return this.getSuperServiceOperation().getLower();
1411     }
1412 
1413     /**
1414      * Returns the operation method body determined from UML sequence diagrams or other UML sources.
1415      * @see OperationFacade#getMethodBody()
1416      */
1417     public String getMethodBody()
1418     {
1419         return this.getSuperServiceOperation().getMethodBody();
1420     }
1421 
1422     /**
1423      * The operation this operation overrides, null if this operation is not overriding.
1424      * @see OperationFacade#getOverriddenOperation()
1425      */
1426     public OperationFacade getOverriddenOperation()
1427     {
1428         return this.getSuperServiceOperation().getOverriddenOperation();
1429     }
1430 
1431     /**
1432      * Gets the owner of this operation
1433      * @see OperationFacade#getOwner()
1434      */
1435     public ClassifierFacade getOwner()
1436     {
1437         return this.getSuperServiceOperation().getOwner();
1438     }
1439 
1440     /**
1441      * Return all parameters for the operation, including the return parameter.
1442      * @see OperationFacade#getParameters()
1443      */
1444     public Collection<ParameterFacade> getParameters()
1445     {
1446         return this.getSuperServiceOperation().getParameters();
1447     }
1448 
1449     /**
1450      * The name of the operation that handles postcondition constraints.
1451      * @see OperationFacade#getPostconditionName()
1452      */
1453     public String getPostconditionName()
1454     {
1455         return this.getSuperServiceOperation().getPostconditionName();
1456     }
1457 
1458     /**
1459      * The postcondition constraints belonging to this operation.
1460      * @see OperationFacade#getPostconditions()
1461      */
1462     public Collection<ConstraintFacade> getPostconditions()
1463     {
1464         return this.getSuperServiceOperation().getPostconditions();
1465     }
1466 
1467     /**
1468      * The call to the precondition operation.
1469      * @see OperationFacade#getPreconditionCall()
1470      */
1471     public String getPreconditionCall()
1472     {
1473         return this.getSuperServiceOperation().getPreconditionCall();
1474     }
1475 
1476     /**
1477      * The name of the operation that handles precondition constraints.
1478      * @see OperationFacade#getPreconditionName()
1479      */
1480     public String getPreconditionName()
1481     {
1482         return this.getSuperServiceOperation().getPreconditionName();
1483     }
1484 
1485     /**
1486      * The signature of the precondition operation.
1487      * @see OperationFacade#getPreconditionSignature()
1488      */
1489     public String getPreconditionSignature()
1490     {
1491         return this.getSuperServiceOperation().getPreconditionSignature();
1492     }
1493 
1494     /**
1495      * The precondition constraints belonging to this operation.
1496      * @see OperationFacade#getPreconditions()
1497      */
1498     public Collection<ConstraintFacade> getPreconditions()
1499     {
1500         return this.getSuperServiceOperation().getPreconditions();
1501     }
1502 
1503     /**
1504      * (UML2 Only). Get the actual return parameter (which may have stereotypes etc).
1505      * @see OperationFacade#getReturnParameter()
1506      */
1507     public ParameterFacade getReturnParameter()
1508     {
1509         return this.getSuperServiceOperation().getReturnParameter();
1510     }
1511 
1512     /**
1513      * The operation return type parameter.
1514      * @see OperationFacade#getReturnType()
1515      */
1516     public ClassifierFacade getReturnType()
1517     {
1518         return this.getSuperServiceOperation().getReturnType();
1519     }
1520 
1521     /**
1522      * Return the operation signature, including public/protested abstract returnType name plus
1523      * argument type and name
1524      * @see OperationFacade#getSignature()
1525      */
1526     public String getSignature()
1527     {
1528         return this.getSuperServiceOperation().getSignature();
1529     }
1530 
1531     /**
1532      * Returns the signature of the operation and optionally appends the argument names (if
1533      * withArgumentNames is true), otherwise returns the signature with just the types alone in the
1534      * signature.
1535      * @see OperationFacade#getSignature(boolean withArgumentNames)
1536      */
1537     public String getSignature(boolean withArgumentNames)
1538     {
1539         return this.getSuperServiceOperation().getSignature(withArgumentNames);
1540     }
1541 
1542     /**
1543      * Returns the signature of the operation and optionally appends the given 'argumentModifier' to
1544      * each argument.
1545      * @see OperationFacade#getSignature(String argumentModifier)
1546      */
1547     public String getSignature(String argumentModifier)
1548     {
1549         return this.getSuperServiceOperation().getSignature(argumentModifier);
1550     }
1551 
1552     /**
1553      * A comma-separated parameter list  (type and name of each parameter) of an operation.
1554      * @see OperationFacade#getTypedArgumentList()
1555      */
1556     public String getTypedArgumentList()
1557     {
1558         return this.getSuperServiceOperation().getTypedArgumentList();
1559     }
1560 
1561     /**
1562      * A comma-separated parameter list  (type and name of each parameter) of an operation with an
1563      * optional modifier (i.e final) before each parameter.
1564      * @see OperationFacade#getTypedArgumentList(String modifier)
1565      */
1566     public String getTypedArgumentList(String modifier)
1567     {
1568         return this.getSuperServiceOperation().getTypedArgumentList(modifier);
1569     }
1570 
1571     /**
1572      * the upper value for the multiplicity (will be -1 for *)
1573      * - only applicable for UML2
1574      * @see OperationFacade#getUpper()
1575      */
1576     public int getUpper()
1577     {
1578         return this.getSuperServiceOperation().getUpper();
1579     }
1580 
1581     /**
1582      * True is the operation is abstract.
1583      * @see OperationFacade#isAbstract()
1584      */
1585     public boolean isAbstract()
1586     {
1587         return this.getSuperServiceOperation().isAbstract();
1588     }
1589 
1590     /**
1591      * True if the operation has (i.e. throws any exceptions) false otherwise.
1592      * @see OperationFacade#isExceptionsPresent()
1593      */
1594     public boolean isExceptionsPresent()
1595     {
1596         return this.getSuperServiceOperation().isExceptionsPresent();
1597     }
1598 
1599     /**
1600      * IsLeaf property in the operation. If true, operation is final, cannot be extended or
1601      * implemented by a descendant. Default=false.
1602      * @see OperationFacade#isLeaf()
1603      */
1604     public boolean isLeaf()
1605     {
1606         return this.getSuperServiceOperation().isLeaf();
1607     }
1608 
1609     /**
1610      * UML2 only. If the return type parameter multiplicity>1 OR the operation multiplicity>1.
1611      * Default=false.
1612      * @see OperationFacade#isMany()
1613      */
1614     public boolean isMany()
1615     {
1616         return this.getSuperServiceOperation().isMany();
1617     }
1618 
1619     /**
1620      * UML2 only: If isMany (Collection type returned), is the type unique within the collection. 
1621      * Unique+Ordered determines CollectionType implementation of return result. Default=false.
1622      * @see OperationFacade#isOrdered()
1623      */
1624     public boolean isOrdered()
1625     {
1626         return this.getSuperServiceOperation().isOrdered();
1627     }
1628 
1629     /**
1630      * True if this operation overrides an operation defined in an ancestor class. An operation
1631      * overrides when the names of the operations as well as the types of the arguments are equal.
1632      * The return type may be different and is, as well as any exceptions, ignored.
1633      * @see OperationFacade#isOverriding()
1634      */
1635     public boolean isOverriding()
1636     {
1637         return this.getSuperServiceOperation().isOverriding();
1638     }
1639 
1640     /**
1641      * Whether any postcondition constraints are present on this operation.
1642      * @see OperationFacade#isPostconditionsPresent()
1643      */
1644     public boolean isPostconditionsPresent()
1645     {
1646         return this.getSuperServiceOperation().isPostconditionsPresent();
1647     }
1648 
1649     /**
1650      * Whether any precondition constraints are present on this operation.
1651      * @see OperationFacade#isPreconditionsPresent()
1652      */
1653     public boolean isPreconditionsPresent()
1654     {
1655         return this.getSuperServiceOperation().isPreconditionsPresent();
1656     }
1657 
1658     /**
1659      * Indicates whether or not this operation is a query operation.
1660      * @see OperationFacade#isQuery()
1661      */
1662     public boolean isQuery()
1663     {
1664         return this.getSuperServiceOperation().isQuery();
1665     }
1666 
1667     /**
1668      * True/false depending on whether or not the operation has a return type or not (i.e. a return
1669      * type of something other than void).
1670      * @see OperationFacade#isReturnTypePresent()
1671      */
1672     public boolean isReturnTypePresent()
1673     {
1674         return this.getSuperServiceOperation().isReturnTypePresent();
1675     }
1676 
1677     /**
1678      * True is the operation is static (only a single instance can be instantiated).
1679      * @see OperationFacade#isStatic()
1680      */
1681     public boolean isStatic()
1682     {
1683         return this.getSuperServiceOperation().isStatic();
1684     }
1685 
1686     /**
1687      * UML2 only: for Collection return type, is the type unique within the collection.
1688      * Unique+Ordered determines the returned CollectionType. Default=false.
1689      * @see OperationFacade#isUnique()
1690      */
1691     public boolean isUnique()
1692     {
1693         return this.getSuperServiceOperation().isUnique();
1694     }
1695 
1696     /**
1697      * The destination for any incoming messages.
1698      * @see ServiceOperation#getIncomingDestination()
1699      */
1700     public Destination getIncomingDestination()
1701     {
1702         return this.getSuperServiceOperation().getIncomingDestination();
1703     }
1704 
1705     /**
1706      * The destination for any outgoing messages.
1707      * @see ServiceOperation#getOutgoingDestination()
1708      */
1709     public Destination getOutgoingDestination()
1710     {
1711         return this.getSuperServiceOperation().getOutgoingDestination();
1712     }
1713 
1714     /**
1715      * The users of the service operation, these are the actor's that can access this operation.
1716      * @see ServiceOperation#getRoles()
1717      */
1718     public Collection<Role> getRoles()
1719     {
1720         return this.getSuperServiceOperation().getRoles();
1721     }
1722 
1723     /**
1724      * The service which owns the service operation.
1725      * @see ServiceOperation#getService()
1726      */
1727     public Service getService()
1728     {
1729         return this.getSuperServiceOperation().getService();
1730     }
1731 
1732     /**
1733      * Whether or not this operation represents an "incoming" message operation (i.e. it receives
1734      * messages from Queues or Topics).
1735      * @see ServiceOperation#isIncomingMessageOperation()
1736      */
1737     public boolean isIncomingMessageOperation()
1738     {
1739         return this.getSuperServiceOperation().isIncomingMessageOperation();
1740     }
1741 
1742     /**
1743      * Whether or not this is operation accepts incoming or outgoing messages.
1744      * @see ServiceOperation#isMessageOperation()
1745      */
1746     public boolean isMessageOperation()
1747     {
1748         return this.getSuperServiceOperation().isMessageOperation();
1749     }
1750 
1751     /**
1752      * Whether or not this service operation represents an "outgoing" messaging operation (i.e. it
1753      * sends messages to Queues or Topics).
1754      * @see ServiceOperation#isOutgoingMessageOperation()
1755      */
1756     public boolean isOutgoingMessageOperation()
1757     {
1758         return this.getSuperServiceOperation().isOutgoingMessageOperation();
1759     }
1760 
1761     /**
1762      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1763      */
1764     @Override
1765     public void initialize()
1766     {
1767         this.getSuperServiceOperation().initialize();
1768     }
1769 
1770     /**
1771      * @return Object getSuperServiceOperation().getValidationOwner()
1772      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1773      */
1774     @Override
1775     public Object getValidationOwner()
1776     {
1777         Object owner = this.getSuperServiceOperation().getValidationOwner();
1778         return owner;
1779     }
1780 
1781     /**
1782      * @return String getSuperServiceOperation().getValidationName()
1783      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1784      */
1785     @Override
1786     public String getValidationName()
1787     {
1788         String name = this.getSuperServiceOperation().getValidationName();
1789         return name;
1790     }
1791 
1792     /**
1793      * @param validationMessages Collection<ModelValidationMessage>
1794      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1795      */
1796     @Override
1797     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1798     {
1799         this.getSuperServiceOperation().validateInvariants(validationMessages);
1800     }
1801 
1802     /**
1803      * The property that stores the name of the metafacade.
1804      */
1805     private static final String NAME_PROPERTY = "name";
1806     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1807 
1808     /**
1809      * @see Object#toString()
1810      */
1811     @Override
1812     public String toString()
1813     {
1814         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1815         toString.append("[");
1816         try
1817         {
1818             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1819         }
1820         catch (final Throwable tryAgain)
1821         {
1822             try
1823             {
1824                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1825             }
1826             catch (final Throwable ignore)
1827             {
1828                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1829             }
1830         }
1831         toString.append("]");
1832         return toString.toString();
1833     }
1834 }