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.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 * TODO: Model Documentation for
32 * org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenOperationFacade
33 * MetafacadeLogic for EJB3MessageDrivenOperationFacade
34 *
35 * @see EJB3MessageDrivenOperationFacade
36 */
37 public abstract class EJB3MessageDrivenOperationFacadeLogic
38 extends MetafacadeBase
39 implements EJB3MessageDrivenOperationFacade
40 {
41 /**
42 * The underlying UML object
43 * @see Object
44 */
45 protected Object metaObject;
46
47 /** Create Metafacade implementation instance using the MetafacadeFactory from the context
48 * @param metaObjectIn
49 * @param context
50 */
51 protected EJB3MessageDrivenOperationFacadeLogic(Object metaObjectIn, String context)
52 {
53 super(metaObjectIn, getContext(context));
54 this.superServiceOperation =
55 (ServiceOperation)
56 MetafacadeFactory.getInstance().createFacadeImpl(
57 "org.andromda.metafacades.uml.ServiceOperation",
58 metaObjectIn,
59 getContext(context));
60 this.metaObject = metaObjectIn;
61 }
62
63 /**
64 * Gets the context for this metafacade logic instance.
65 * @param context String. Set to EJB3MessageDrivenOperationFacade if null
66 * @return context String
67 */
68 private static String getContext(String context)
69 {
70 if (context == null)
71 {
72 context = "org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenOperationFacade";
73 }
74 return context;
75 }
76
77 private ServiceOperation superServiceOperation;
78 private boolean superServiceOperationInitialized = false;
79
80 /**
81 * Gets the ServiceOperation parent instance.
82 * @return this.superServiceOperation ServiceOperation
83 */
84 private ServiceOperation getSuperServiceOperation()
85 {
86 if (!this.superServiceOperationInitialized)
87 {
88 ((MetafacadeBase)this.superServiceOperation).setMetafacadeContext(this.getMetafacadeContext());
89 this.superServiceOperationInitialized = true;
90 }
91 return this.superServiceOperation;
92 }
93
94 /** Reset context only for non-root metafacades
95 * @param context
96 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
97 */
98 @Override
99 public void resetMetafacadeContext(String context)
100 {
101 if (!this.contextRoot) // reset context only for non-root metafacades
102 {
103 context = getContext(context); // to have same value as in original constructor call
104 setMetafacadeContext (context);
105 if (this.superServiceOperationInitialized)
106 {
107 ((MetafacadeBase)this.superServiceOperation).resetMetafacadeContext(context);
108 }
109 }
110 }
111
112 /**
113 * @return boolean true always
114 * @see EJB3MessageDrivenOperationFacade
115 */
116 public boolean isEJB3MessageDrivenOperationFacadeMetaType()
117 {
118 return true;
119 }
120
121 // --------------- attributes ---------------------
122
123 /**
124 * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenOperationFacade#isPostConstruct()
125 * @return boolean
126 */
127 protected abstract boolean handleIsPostConstruct();
128
129 private boolean __postConstruct1a;
130 private boolean __postConstruct1aSet = false;
131
132 /**
133 * Returns true if the associated operation has the <<PostConstruct>> stereotype.
134 * NOTE: The method signature must return void and have no args.
135 * @return (boolean)handleIsPostConstruct()
136 */
137 public final boolean isPostConstruct()
138 {
139 boolean postConstruct1a = this.__postConstruct1a;
140 if (!this.__postConstruct1aSet)
141 {
142 // postConstruct has no pre constraints
143 postConstruct1a = handleIsPostConstruct();
144 // postConstruct has no post constraints
145 this.__postConstruct1a = postConstruct1a;
146 if (isMetafacadePropertyCachingEnabled())
147 {
148 this.__postConstruct1aSet = true;
149 }
150 }
151 return postConstruct1a;
152 }
153
154 /**
155 * @see org.andromda.cartridges.ejb3.metafacades.EJB3MessageDrivenOperationFacade#isPreDestroy()
156 * @return boolean
157 */
158 protected abstract boolean handleIsPreDestroy();
159
160 private boolean __preDestroy2a;
161 private boolean __preDestroy2aSet = false;
162
163 /**
164 * Returns true if the associated operation has the <<PreDestroy>> stereotype.
165 * NOTE: The method signature must return void and have no args.
166 * @return (boolean)handleIsPreDestroy()
167 */
168 public final boolean isPreDestroy()
169 {
170 boolean preDestroy2a = this.__preDestroy2a;
171 if (!this.__preDestroy2aSet)
172 {
173 // preDestroy has no pre constraints
174 preDestroy2a = handleIsPreDestroy();
175 // preDestroy has no post constraints
176 this.__preDestroy2a = preDestroy2a;
177 if (isMetafacadePropertyCachingEnabled())
178 {
179 this.__preDestroy2aSet = true;
180 }
181 }
182 return preDestroy2a;
183 }
184
185 /**
186 * @return true
187 * @see ServiceOperation
188 */
189 public boolean isServiceOperationMetaType()
190 {
191 return true;
192 }
193
194 /**
195 * @return true
196 * @see OperationFacade
197 */
198 public boolean isOperationFacadeMetaType()
199 {
200 return true;
201 }
202
203 /**
204 * @return true
205 * @see ModelElementFacade
206 */
207 public boolean isModelElementFacadeMetaType()
208 {
209 return true;
210 }
211
212 // ----------- delegates to ServiceOperation ------------
213 /**
214 * Copies all tagged values from the given ModelElementFacade to this model element facade.
215 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
216 */
217 public void copyTaggedValues(ModelElementFacade element)
218 {
219 this.getSuperServiceOperation().copyTaggedValues(element);
220 }
221
222 /**
223 * Finds the tagged value with the specified 'tagName'. In case there are more values the first
224 * one found will be returned.
225 * @see ModelElementFacade#findTaggedValue(String tagName)
226 */
227 public Object findTaggedValue(String tagName)
228 {
229 return this.getSuperServiceOperation().findTaggedValue(tagName);
230 }
231
232 /**
233 * Returns all the values for the tagged value with the specified name. The returned collection
234 * will contains only String instances, or will be empty. Never null.
235 * @see ModelElementFacade#findTaggedValues(String tagName)
236 */
237 public Collection<Object> findTaggedValues(String tagName)
238 {
239 return this.getSuperServiceOperation().findTaggedValues(tagName);
240 }
241
242 /**
243 * Returns the fully qualified name of the model element. The fully qualified name includes
244 * complete package qualified name of the underlying model element. The templates parameter will
245 * be replaced by the correct one given the binding relation of the parameter to this element.
246 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
247 */
248 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
249 {
250 return this.getSuperServiceOperation().getBindedFullyQualifiedName(bindedElement);
251 }
252
253 /**
254 * Gets all constraints belonging to the model element.
255 * @see ModelElementFacade#getConstraints()
256 */
257 public Collection<ConstraintFacade> getConstraints()
258 {
259 return this.getSuperServiceOperation().getConstraints();
260 }
261
262 /**
263 * Returns the constraints of the argument kind that have been placed onto this model. Typical
264 * kinds are "inv", "pre" and "post". Other kinds are possible.
265 * @see ModelElementFacade#getConstraints(String kind)
266 */
267 public Collection<ConstraintFacade> getConstraints(String kind)
268 {
269 return this.getSuperServiceOperation().getConstraints(kind);
270 }
271
272 /**
273 * Gets the documentation for the model element, The indent argument is prefixed to each line.
274 * By default this method wraps lines after 64 characters.
275 * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
276 * @see ModelElementFacade#getDocumentation(String indent)
277 */
278 public String getDocumentation(String indent)
279 {
280 return this.getSuperServiceOperation().getDocumentation(indent);
281 }
282
283 /**
284 * This method returns the documentation for this model element, with the lines wrapped after
285 * the specified number of characters, values of less than 1 will indicate no line wrapping is
286 * required. By default paragraphs are returned as HTML.
287 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
288 * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
289 */
290 public String getDocumentation(String indent, int lineLength)
291 {
292 return this.getSuperServiceOperation().getDocumentation(indent, lineLength);
293 }
294
295 /**
296 * This method returns the documentation for this model element, with the lines wrapped after
297 * the specified number of characters, values of less than 1 will indicate no line wrapping is
298 * required. HTML style determines if HTML Escaping is applied.
299 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
300 */
301 public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
302 {
303 return this.getSuperServiceOperation().getDocumentation(indent, lineLength, htmlStyle);
304 }
305
306 /**
307 * The fully qualified name of this model element.
308 * @see ModelElementFacade#getFullyQualifiedName()
309 */
310 public String getFullyQualifiedName()
311 {
312 return this.getSuperServiceOperation().getFullyQualifiedName();
313 }
314
315 /**
316 * Returns the fully qualified name of the model element. The fully qualified name includes
317 * complete package qualified name of the underlying model element. If modelName is true, then
318 * the original name of the model element (the name contained within the model) will be the name
319 * returned, otherwise a name from a language mapping will be returned.
320 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
321 */
322 public String getFullyQualifiedName(boolean modelName)
323 {
324 return this.getSuperServiceOperation().getFullyQualifiedName(modelName);
325 }
326
327 /**
328 * Returns the fully qualified name as a path, the returned value always starts with out a slash
329 * '/'.
330 * @see ModelElementFacade#getFullyQualifiedNamePath()
331 */
332 public String getFullyQualifiedNamePath()
333 {
334 return this.getSuperServiceOperation().getFullyQualifiedNamePath();
335 }
336
337 /**
338 * Gets the unique identifier of the underlying model element.
339 * @see ModelElementFacade#getId()
340 */
341 public String getId()
342 {
343 return this.getSuperServiceOperation().getId();
344 }
345
346 /**
347 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
348 * are not represented by other properties, i.e. native, transient, volatile, synchronized,
349 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
350 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
351 * JDK5 compiler level.
352 * @see ModelElementFacade#getKeywords()
353 */
354 public Collection<String> getKeywords()
355 {
356 return this.getSuperServiceOperation().getKeywords();
357 }
358
359 /**
360 * UML2: Retrieves a localized label for this named element.
361 * @see ModelElementFacade#getLabel()
362 */
363 public String getLabel()
364 {
365 return this.getSuperServiceOperation().getLabel();
366 }
367
368 /**
369 * The language mappings that have been set for this model element.
370 * @see ModelElementFacade#getLanguageMappings()
371 */
372 public TypeMappings getLanguageMappings()
373 {
374 return this.getSuperServiceOperation().getLanguageMappings();
375 }
376
377 /**
378 * Return the model containing this model element (multiple models may be loaded and processed
379 * at the same time).
380 * @see ModelElementFacade#getModel()
381 */
382 public ModelFacade getModel()
383 {
384 return this.getSuperServiceOperation().getModel();
385 }
386
387 /**
388 * The name of the model element.
389 * @see ModelElementFacade#getName()
390 */
391 public String getName()
392 {
393 return this.getSuperServiceOperation().getName();
394 }
395
396 /**
397 * Gets the package to which this model element belongs.
398 * @see ModelElementFacade#getPackage()
399 */
400 public ModelElementFacade getPackage()
401 {
402 return this.getSuperServiceOperation().getPackage();
403 }
404
405 /**
406 * The name of this model element's package.
407 * @see ModelElementFacade#getPackageName()
408 */
409 public String getPackageName()
410 {
411 return this.getSuperServiceOperation().getPackageName();
412 }
413
414 /**
415 * Gets the package name (optionally providing the ability to retrieve the model name and not
416 * the mapped name).
417 * @see ModelElementFacade#getPackageName(boolean modelName)
418 */
419 public String getPackageName(boolean modelName)
420 {
421 return this.getSuperServiceOperation().getPackageName(modelName);
422 }
423
424 /**
425 * Returns the package as a path, the returned value always starts with out a slash '/'.
426 * @see ModelElementFacade#getPackagePath()
427 */
428 public String getPackagePath()
429 {
430 return this.getSuperServiceOperation().getPackagePath();
431 }
432
433 /**
434 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
435 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
436 * the names of the containing namespaces starting at the root of the hierarchy and ending with
437 * the name of the NamedElement itself.
438 * @see ModelElementFacade#getQualifiedName()
439 */
440 public String getQualifiedName()
441 {
442 return this.getSuperServiceOperation().getQualifiedName();
443 }
444
445 /**
446 * Gets the root package for the model element.
447 * @see ModelElementFacade#getRootPackage()
448 */
449 public PackageFacade getRootPackage()
450 {
451 return this.getSuperServiceOperation().getRootPackage();
452 }
453
454 /**
455 * Gets the dependencies for which this model element is the source.
456 * @see ModelElementFacade#getSourceDependencies()
457 */
458 public Collection<DependencyFacade> getSourceDependencies()
459 {
460 return this.getSuperServiceOperation().getSourceDependencies();
461 }
462
463 /**
464 * If this model element is the context of an activity graph, this represents that activity
465 * graph.
466 * @see ModelElementFacade#getStateMachineContext()
467 */
468 public StateMachineFacade getStateMachineContext()
469 {
470 return this.getSuperServiceOperation().getStateMachineContext();
471 }
472
473 /**
474 * The collection of ALL stereotype names for this model element.
475 * @see ModelElementFacade#getStereotypeNames()
476 */
477 public Collection<String> getStereotypeNames()
478 {
479 return this.getSuperServiceOperation().getStereotypeNames();
480 }
481
482 /**
483 * Gets all stereotypes for this model element.
484 * @see ModelElementFacade#getStereotypes()
485 */
486 public Collection<StereotypeFacade> getStereotypes()
487 {
488 return this.getSuperServiceOperation().getStereotypes();
489 }
490
491 /**
492 * Return the TaggedValues associated with this model element, under all stereotypes.
493 * @see ModelElementFacade#getTaggedValues()
494 */
495 public Collection<TaggedValueFacade> getTaggedValues()
496 {
497 return this.getSuperServiceOperation().getTaggedValues();
498 }
499
500 /**
501 * Gets the dependencies for which this model element is the target.
502 * @see ModelElementFacade#getTargetDependencies()
503 */
504 public Collection<DependencyFacade> getTargetDependencies()
505 {
506 return this.getSuperServiceOperation().getTargetDependencies();
507 }
508
509 /**
510 * Get the template parameter for this model element having the parameterName
511 * @see ModelElementFacade#getTemplateParameter(String parameterName)
512 */
513 public Object getTemplateParameter(String parameterName)
514 {
515 return this.getSuperServiceOperation().getTemplateParameter(parameterName);
516 }
517
518 /**
519 * Get the template parameters for this model element
520 * @see ModelElementFacade#getTemplateParameters()
521 */
522 public Collection<TemplateParameterFacade> getTemplateParameters()
523 {
524 return this.getSuperServiceOperation().getTemplateParameters();
525 }
526
527 /**
528 * The visibility (i.e. public, private, protected or package) of the model element, will
529 * attempt a lookup for these values in the language mappings (if any).
530 * @see ModelElementFacade#getVisibility()
531 */
532 public String getVisibility()
533 {
534 return this.getSuperServiceOperation().getVisibility();
535 }
536
537 /**
538 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
539 * is taken into account when searching for the stereotype), false otherwise.
540 * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
541 */
542 public boolean hasExactStereotype(String stereotypeName)
543 {
544 return this.getSuperServiceOperation().hasExactStereotype(stereotypeName);
545 }
546
547 /**
548 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
549 * pipe, semicolon, or << >>
550 * @see ModelElementFacade#hasKeyword(String keywordName)
551 */
552 public boolean hasKeyword(String keywordName)
553 {
554 return this.getSuperServiceOperation().hasKeyword(keywordName);
555 }
556
557 /**
558 * Returns true if the model element has the specified stereotype. If the stereotype itself
559 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
560 * one of the stereotype's ancestors has a matching name this method will return true, false
561 * otherwise.
562 * For example, if we have a certain stereotype called <<exception>> and a model element has a
563 * stereotype called <<applicationException>> which extends <<exception>>, when calling this
564 * method with 'stereotypeName' defined as 'exception' the method would return true since
565 * <<applicationException>> inherits from <<exception>>. If you want to check if the model
566 * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
567 * @see ModelElementFacade#hasStereotype(String stereotypeName)
568 */
569 public boolean hasStereotype(String stereotypeName)
570 {
571 return this.getSuperServiceOperation().hasStereotype(stereotypeName);
572 }
573
574 /**
575 * True if there are target dependencies from this element that are instances of BindingFacade.
576 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
577 * @see ModelElementFacade#isBindingDependenciesPresent()
578 */
579 public boolean isBindingDependenciesPresent()
580 {
581 return this.getSuperServiceOperation().isBindingDependenciesPresent();
582 }
583
584 /**
585 * Indicates if any constraints are present on this model element.
586 * @see ModelElementFacade#isConstraintsPresent()
587 */
588 public boolean isConstraintsPresent()
589 {
590 return this.getSuperServiceOperation().isConstraintsPresent();
591 }
592
593 /**
594 * Indicates if any documentation is present on this model element.
595 * @see ModelElementFacade#isDocumentationPresent()
596 */
597 public boolean isDocumentationPresent()
598 {
599 return this.getSuperServiceOperation().isDocumentationPresent();
600 }
601
602 /**
603 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
604 * @see ModelElementFacade#isReservedWord()
605 */
606 public boolean isReservedWord()
607 {
608 return this.getSuperServiceOperation().isReservedWord();
609 }
610
611 /**
612 * True is there are template parameters on this model element. For UML2, applies to Class,
613 * Operation, Property, and Parameter.
614 * @see ModelElementFacade#isTemplateParametersPresent()
615 */
616 public boolean isTemplateParametersPresent()
617 {
618 return this.getSuperServiceOperation().isTemplateParametersPresent();
619 }
620
621 /**
622 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
623 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
624 * Enumerations and Interfaces, optionally applies on other model elements.
625 * @see ModelElementFacade#isValidIdentifierName()
626 */
627 public boolean isValidIdentifierName()
628 {
629 return this.getSuperServiceOperation().isValidIdentifierName();
630 }
631
632 /**
633 * Searches for the constraint with the specified 'name' on this model element, and if found
634 * translates it using the specified 'translation' from a translation library discovered by the
635 * framework.
636 * @see ModelElementFacade#translateConstraint(String name, String translation)
637 */
638 public String translateConstraint(String name, String translation)
639 {
640 return this.getSuperServiceOperation().translateConstraint(name, translation);
641 }
642
643 /**
644 * Translates all constraints belonging to this model element with the given 'translation'.
645 * @see ModelElementFacade#translateConstraints(String translation)
646 */
647 public String[] translateConstraints(String translation)
648 {
649 return this.getSuperServiceOperation().translateConstraints(translation);
650 }
651
652 /**
653 * Translates the constraints of the specified 'kind' belonging to this model element.
654 * @see ModelElementFacade#translateConstraints(String kind, String translation)
655 */
656 public String[] translateConstraints(String kind, String translation)
657 {
658 return this.getSuperServiceOperation().translateConstraints(kind, translation);
659 }
660
661 /**
662 * Finds the parameter on this operation having the given name, if no parameter is found, null
663 * is returned instead.
664 * @see OperationFacade#findParameter(String name)
665 */
666 public ParameterFacade findParameter(String name)
667 {
668 return this.getSuperServiceOperation().findParameter(name);
669 }
670
671 /**
672 * Searches the given feature for the specified tag.
673 * If the follow boolean is set to true then the search will continue from the class operation
674 * to the class itself and then up the class hierarchy.
675 * @see OperationFacade#findTaggedValue(String name, boolean follow)
676 */
677 public Object findTaggedValue(String name, boolean follow)
678 {
679 return this.getSuperServiceOperation().findTaggedValue(name, follow);
680 }
681
682 /**
683 * A comma separated list of all argument names.
684 * @see OperationFacade#getArgumentNames()
685 */
686 public String getArgumentNames()
687 {
688 return this.getSuperServiceOperation().getArgumentNames();
689 }
690
691 /**
692 * A comma separated list of all types of each argument, in order.
693 * @see OperationFacade#getArgumentTypeNames()
694 */
695 public String getArgumentTypeNames()
696 {
697 return this.getSuperServiceOperation().getArgumentTypeNames();
698 }
699
700 /**
701 * Specification of an argument used to pass information into or out of an invocation of a
702 * behavioral
703 * feature. Parameters are allowed to be treated as connectable elements. Parameters have
704 * support for
705 * streaming, exceptions, and parameter sets.
706 * @see OperationFacade#getArguments()
707 */
708 public Collection<ParameterFacade> getArguments()
709 {
710 return this.getSuperServiceOperation().getArguments();
711 }
712
713 /**
714 * Constructs the operation call with the operation name
715 * @see OperationFacade#getCall()
716 */
717 public String getCall()
718 {
719 return this.getSuperServiceOperation().getCall();
720 }
721
722 /**
723 * Returns the concurrency modifier for this operation (i.e. concurrent, guarded or sequential)
724 * of the model element, will attempt a lookup for these values in the language mappings (if
725 * any).
726 * @see OperationFacade#getConcurrency()
727 */
728 public String getConcurrency()
729 {
730 return this.getSuperServiceOperation().getConcurrency();
731 }
732
733 /**
734 * A comma separated list containing all exceptions that this operation throws. Exceptions are
735 * determined through dependencies that have the target element stereotyped as <<Exception>>.
736 * @see OperationFacade#getExceptionList()
737 */
738 public String getExceptionList()
739 {
740 return this.getSuperServiceOperation().getExceptionList();
741 }
742
743 /**
744 * Returns a comma separated list of exceptions appended to the comma separated list of fully
745 * qualified 'initialException' classes passed in to this method.
746 * @see OperationFacade#getExceptionList(String initialExceptions)
747 */
748 public String getExceptionList(String initialExceptions)
749 {
750 return this.getSuperServiceOperation().getExceptionList(initialExceptions);
751 }
752
753 /**
754 * A collection of all exceptions thrown by this operation.
755 * @see OperationFacade#getExceptions()
756 */
757 public Collection<ModelElementFacade> getExceptions()
758 {
759 return this.getSuperServiceOperation().getExceptions();
760 }
761
762 /**
763 * Return Type with multiplicity taken into account. UML14 does not allow multiplicity *.
764 * @see OperationFacade#getGetterSetterReturnTypeName()
765 */
766 public String getGetterSetterReturnTypeName()
767 {
768 return this.getSuperServiceOperation().getGetterSetterReturnTypeName();
769 }
770
771 /**
772 * the lower value for the multiplicity
773 * -only applicable for UML2
774 * @see OperationFacade#getLower()
775 */
776 public int getLower()
777 {
778 return this.getSuperServiceOperation().getLower();
779 }
780
781 /**
782 * Returns the operation method body determined from UML sequence diagrams or other UML sources.
783 * @see OperationFacade#getMethodBody()
784 */
785 public String getMethodBody()
786 {
787 return this.getSuperServiceOperation().getMethodBody();
788 }
789
790 /**
791 * The operation this operation overrides, null if this operation is not overriding.
792 * @see OperationFacade#getOverriddenOperation()
793 */
794 public OperationFacade getOverriddenOperation()
795 {
796 return this.getSuperServiceOperation().getOverriddenOperation();
797 }
798
799 /**
800 * Gets the owner of this operation
801 * @see OperationFacade#getOwner()
802 */
803 public ClassifierFacade getOwner()
804 {
805 return this.getSuperServiceOperation().getOwner();
806 }
807
808 /**
809 * Return all parameters for the operation, including the return parameter.
810 * @see OperationFacade#getParameters()
811 */
812 public Collection<ParameterFacade> getParameters()
813 {
814 return this.getSuperServiceOperation().getParameters();
815 }
816
817 /**
818 * The name of the operation that handles postcondition constraints.
819 * @see OperationFacade#getPostconditionName()
820 */
821 public String getPostconditionName()
822 {
823 return this.getSuperServiceOperation().getPostconditionName();
824 }
825
826 /**
827 * The postcondition constraints belonging to this operation.
828 * @see OperationFacade#getPostconditions()
829 */
830 public Collection<ConstraintFacade> getPostconditions()
831 {
832 return this.getSuperServiceOperation().getPostconditions();
833 }
834
835 /**
836 * The call to the precondition operation.
837 * @see OperationFacade#getPreconditionCall()
838 */
839 public String getPreconditionCall()
840 {
841 return this.getSuperServiceOperation().getPreconditionCall();
842 }
843
844 /**
845 * The name of the operation that handles precondition constraints.
846 * @see OperationFacade#getPreconditionName()
847 */
848 public String getPreconditionName()
849 {
850 return this.getSuperServiceOperation().getPreconditionName();
851 }
852
853 /**
854 * The signature of the precondition operation.
855 * @see OperationFacade#getPreconditionSignature()
856 */
857 public String getPreconditionSignature()
858 {
859 return this.getSuperServiceOperation().getPreconditionSignature();
860 }
861
862 /**
863 * The precondition constraints belonging to this operation.
864 * @see OperationFacade#getPreconditions()
865 */
866 public Collection<ConstraintFacade> getPreconditions()
867 {
868 return this.getSuperServiceOperation().getPreconditions();
869 }
870
871 /**
872 * (UML2 Only). Get the actual return parameter (which may have stereotypes etc).
873 * @see OperationFacade#getReturnParameter()
874 */
875 public ParameterFacade getReturnParameter()
876 {
877 return this.getSuperServiceOperation().getReturnParameter();
878 }
879
880 /**
881 * The operation return type parameter.
882 * @see OperationFacade#getReturnType()
883 */
884 public ClassifierFacade getReturnType()
885 {
886 return this.getSuperServiceOperation().getReturnType();
887 }
888
889 /**
890 * Return the operation signature, including public/protested abstract returnType name plus
891 * argument type and name
892 * @see OperationFacade#getSignature()
893 */
894 public String getSignature()
895 {
896 return this.getSuperServiceOperation().getSignature();
897 }
898
899 /**
900 * Returns the signature of the operation and optionally appends the argument names (if
901 * withArgumentNames is true), otherwise returns the signature with just the types alone in the
902 * signature.
903 * @see OperationFacade#getSignature(boolean withArgumentNames)
904 */
905 public String getSignature(boolean withArgumentNames)
906 {
907 return this.getSuperServiceOperation().getSignature(withArgumentNames);
908 }
909
910 /**
911 * Returns the signature of the operation and optionally appends the given 'argumentModifier' to
912 * each argument.
913 * @see OperationFacade#getSignature(String argumentModifier)
914 */
915 public String getSignature(String argumentModifier)
916 {
917 return this.getSuperServiceOperation().getSignature(argumentModifier);
918 }
919
920 /**
921 * A comma-separated parameter list (type and name of each parameter) of an operation.
922 * @see OperationFacade#getTypedArgumentList()
923 */
924 public String getTypedArgumentList()
925 {
926 return this.getSuperServiceOperation().getTypedArgumentList();
927 }
928
929 /**
930 * A comma-separated parameter list (type and name of each parameter) of an operation with an
931 * optional modifier (i.e final) before each parameter.
932 * @see OperationFacade#getTypedArgumentList(String modifier)
933 */
934 public String getTypedArgumentList(String modifier)
935 {
936 return this.getSuperServiceOperation().getTypedArgumentList(modifier);
937 }
938
939 /**
940 * the upper value for the multiplicity (will be -1 for *)
941 * - only applicable for UML2
942 * @see OperationFacade#getUpper()
943 */
944 public int getUpper()
945 {
946 return this.getSuperServiceOperation().getUpper();
947 }
948
949 /**
950 * True is the operation is abstract.
951 * @see OperationFacade#isAbstract()
952 */
953 public boolean isAbstract()
954 {
955 return this.getSuperServiceOperation().isAbstract();
956 }
957
958 /**
959 * True if the operation has (i.e. throws any exceptions) false otherwise.
960 * @see OperationFacade#isExceptionsPresent()
961 */
962 public boolean isExceptionsPresent()
963 {
964 return this.getSuperServiceOperation().isExceptionsPresent();
965 }
966
967 /**
968 * IsLeaf property in the operation. If true, operation is final, cannot be extended or
969 * implemented by a descendant. Default=false.
970 * @see OperationFacade#isLeaf()
971 */
972 public boolean isLeaf()
973 {
974 return this.getSuperServiceOperation().isLeaf();
975 }
976
977 /**
978 * UML2 only. If the return type parameter multiplicity>1 OR the operation multiplicity>1.
979 * Default=false.
980 * @see OperationFacade#isMany()
981 */
982 public boolean isMany()
983 {
984 return this.getSuperServiceOperation().isMany();
985 }
986
987 /**
988 * UML2 only: If isMany (Collection type returned), is the type unique within the collection.
989 * Unique+Ordered determines CollectionType implementation of return result. Default=false.
990 * @see OperationFacade#isOrdered()
991 */
992 public boolean isOrdered()
993 {
994 return this.getSuperServiceOperation().isOrdered();
995 }
996
997 /**
998 * True if this operation overrides an operation defined in an ancestor class. An operation
999 * overrides when the names of the operations as well as the types of the arguments are equal.
1000 * The return type may be different and is, as well as any exceptions, ignored.
1001 * @see OperationFacade#isOverriding()
1002 */
1003 public boolean isOverriding()
1004 {
1005 return this.getSuperServiceOperation().isOverriding();
1006 }
1007
1008 /**
1009 * Whether any postcondition constraints are present on this operation.
1010 * @see OperationFacade#isPostconditionsPresent()
1011 */
1012 public boolean isPostconditionsPresent()
1013 {
1014 return this.getSuperServiceOperation().isPostconditionsPresent();
1015 }
1016
1017 /**
1018 * Whether any precondition constraints are present on this operation.
1019 * @see OperationFacade#isPreconditionsPresent()
1020 */
1021 public boolean isPreconditionsPresent()
1022 {
1023 return this.getSuperServiceOperation().isPreconditionsPresent();
1024 }
1025
1026 /**
1027 * Indicates whether or not this operation is a query operation.
1028 * @see OperationFacade#isQuery()
1029 */
1030 public boolean isQuery()
1031 {
1032 return this.getSuperServiceOperation().isQuery();
1033 }
1034
1035 /**
1036 * True/false depending on whether or not the operation has a return type or not (i.e. a return
1037 * type of something other than void).
1038 * @see OperationFacade#isReturnTypePresent()
1039 */
1040 public boolean isReturnTypePresent()
1041 {
1042 return this.getSuperServiceOperation().isReturnTypePresent();
1043 }
1044
1045 /**
1046 * True is the operation is static (only a single instance can be instantiated).
1047 * @see OperationFacade#isStatic()
1048 */
1049 public boolean isStatic()
1050 {
1051 return this.getSuperServiceOperation().isStatic();
1052 }
1053
1054 /**
1055 * UML2 only: for Collection return type, is the type unique within the collection.
1056 * Unique+Ordered determines the returned CollectionType. Default=false.
1057 * @see OperationFacade#isUnique()
1058 */
1059 public boolean isUnique()
1060 {
1061 return this.getSuperServiceOperation().isUnique();
1062 }
1063
1064 /**
1065 * The destination for any incoming messages.
1066 * @see ServiceOperation#getIncomingDestination()
1067 */
1068 public Destination getIncomingDestination()
1069 {
1070 return this.getSuperServiceOperation().getIncomingDestination();
1071 }
1072
1073 /**
1074 * The destination for any outgoing messages.
1075 * @see ServiceOperation#getOutgoingDestination()
1076 */
1077 public Destination getOutgoingDestination()
1078 {
1079 return this.getSuperServiceOperation().getOutgoingDestination();
1080 }
1081
1082 /**
1083 * The users of the service operation, these are the actor's that can access this operation.
1084 * @see ServiceOperation#getRoles()
1085 */
1086 public Collection<Role> getRoles()
1087 {
1088 return this.getSuperServiceOperation().getRoles();
1089 }
1090
1091 /**
1092 * The service which owns the service operation.
1093 * @see ServiceOperation#getService()
1094 */
1095 public Service getService()
1096 {
1097 return this.getSuperServiceOperation().getService();
1098 }
1099
1100 /**
1101 * Whether or not this operation represents an "incoming" message operation (i.e. it receives
1102 * messages from Queues or Topics).
1103 * @see ServiceOperation#isIncomingMessageOperation()
1104 */
1105 public boolean isIncomingMessageOperation()
1106 {
1107 return this.getSuperServiceOperation().isIncomingMessageOperation();
1108 }
1109
1110 /**
1111 * Whether or not this is operation accepts incoming or outgoing messages.
1112 * @see ServiceOperation#isMessageOperation()
1113 */
1114 public boolean isMessageOperation()
1115 {
1116 return this.getSuperServiceOperation().isMessageOperation();
1117 }
1118
1119 /**
1120 * Whether or not this service operation represents an "outgoing" messaging operation (i.e. it
1121 * sends messages to Queues or Topics).
1122 * @see ServiceOperation#isOutgoingMessageOperation()
1123 */
1124 public boolean isOutgoingMessageOperation()
1125 {
1126 return this.getSuperServiceOperation().isOutgoingMessageOperation();
1127 }
1128
1129 /**
1130 * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1131 */
1132 @Override
1133 public void initialize()
1134 {
1135 this.getSuperServiceOperation().initialize();
1136 }
1137
1138 /**
1139 * @return Object getSuperServiceOperation().getValidationOwner()
1140 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1141 */
1142 @Override
1143 public Object getValidationOwner()
1144 {
1145 Object owner = this.getSuperServiceOperation().getValidationOwner();
1146 return owner;
1147 }
1148
1149 /**
1150 * @return String getSuperServiceOperation().getValidationName()
1151 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1152 */
1153 @Override
1154 public String getValidationName()
1155 {
1156 String name = this.getSuperServiceOperation().getValidationName();
1157 return name;
1158 }
1159
1160 /**
1161 * @param validationMessages Collection<ModelValidationMessage>
1162 * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1163 */
1164 @Override
1165 public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1166 {
1167 this.getSuperServiceOperation().validateInvariants(validationMessages);
1168 }
1169
1170 /**
1171 * The property that stores the name of the metafacade.
1172 */
1173 private static final String NAME_PROPERTY = "name";
1174 private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1175
1176 /**
1177 * @see Object#toString()
1178 */
1179 @Override
1180 public String toString()
1181 {
1182 final StringBuilder toString = new StringBuilder(this.getClass().getName());
1183 toString.append("[");
1184 try
1185 {
1186 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1187 }
1188 catch (final Throwable tryAgain)
1189 {
1190 try
1191 {
1192 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1193 }
1194 catch (final Throwable ignore)
1195 {
1196 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1197 }
1198 }
1199 toString.append("]");
1200 return toString.toString();
1201 }
1202 }