001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.cartridges.ejb3.metafacades;
006
007import java.util.Collection;
008import java.util.List;
009import org.andromda.metafacades.uml.Role;
010import org.andromda.metafacades.uml.Service;
011
012/**
013 * Represents a Session EJB.
014 *
015 * Metafacade interface to be used by AndroMDA cartridges.
016 */
017public interface EJB3SessionFacade
018    extends Service
019{
020    /**
021     * Indicates the metafacade type (used for metafacade mappings).
022     *
023     * @return boolean always <code>true</code>
024     */
025    public boolean isEJB3SessionFacadeMetaType();
026
027    /**
028     * Filter out seam component attributes
029     * @param attributes Collection
030     * @return Collection
031     */
032    public Collection filterSeamAttributes(Collection attributes);
033
034    /**
035     * All instanceAttributes for this session EJB. The list includes the instanceAttributes that
036     * are inherited from super classes. The list contains the inherited instanceAttributes first,
037     * followed by the instanceAttributes defined in this class.
038     * @return List
039     */
040    public List getAllInstanceAttributes();
041
042    /**
043     * Returns the comma separated list of attributes.<p/>This method can be used to generate
044     * argument lists for constructors and method calls.
045     * @param attributes Collection
046     * @param includeTypes boolean
047     * @param includeNames boolean
048     * @return String
049     */
050    public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames);
051
052    /**
053     * All "business" operations for this Session EJB.  These are any operations that are NOT
054     * identified as create methods.
055     * @return Collection
056     */
057    public Collection getBusinessOperations();
058
059    /**
060     * Gets all constants for this session EJB. Constants are defined as static read-only attributes
061     * which do NOT have the <<EnvEntry>> stereotype.  If 'follow' is true, then the inheritance
062     * hierarchy will be followed and we'll retrieve all constants from any super types as well.
063     * @param follow boolean
064     * @return Collection
065     */
066    public Collection getConstants(boolean follow);
067
068    /**
069     * Gets create methods for this session EJB.  If 'follow' is set to true, it will follow the
070     * inheritance hierarchy and retrieve those defined on any super types.
071     * @param follow boolean
072     * @return Collection
073     */
074    public Collection getCreateMethods(boolean follow);
075
076    /**
077     * The name of the default exception to be generated for this service.
078     * @return String
079     */
080    public String getDefaultExceptionName();
081
082    /**
083     * Gets all env-entries for the specified session EJB. Env-entries are stored as static
084     * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
085     * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
086     * types as well.
087     * @param follow boolean
088     * @return Collection
089     */
090    public Collection getEnvironmentEntries(boolean follow);
091
092    /**
093     * The fully qualified class name of the default exception.
094     * @return String
095     */
096    public String getFullyQualifiedDefaultExceptionName();
097
098    /**
099     * Returns the fully qualified service base name.
100     * @return String
101     */
102    public String getFullyQualifiedServiceBaseName();
103
104    /**
105     * Returns the fully qualified service bean delegate class name.
106     * @return String
107     */
108    public String getFullyQualifiedServiceDelegateName();
109
110    /**
111     * Returns the fully qualified service bean implementation name.
112     * @return String
113     */
114    public String getFullyQualifiedServiceImplementationName();
115
116    /**
117     * The fully qualified parent business interface name for this session bean.
118     * @return String
119     */
120    public String getFullyQualifiedServiceInterfaceName();
121
122    /**
123     * Returns the fully qualified service bean listener name.
124     * @return String
125     */
126    public String getFullyQualifiedServiceListenerName();
127
128    /**
129     * Returns the fully qualified service bean local interface name.
130     * @return String
131     */
132    public String getFullyQualifiedServiceLocalInterfaceName();
133
134    /**
135     * Returns the fully qualified service bean name.
136     * @return String
137     */
138    public String getFullyQualifiedServiceName();
139
140    /**
141     * Returns the fully qualified service bean remote interface name.
142     * @return String
143     */
144    public String getFullyQualifiedServiceRemoteInterfaceName();
145
146    /**
147     * Returns the fully qualified service test class name
148     * @return String
149     */
150    public String getFullyQualifiedServiceTestName();
151
152    /**
153     * A String representing the name of a home interface for this entity EJB.
154     * @return String
155     */
156    public String getHomeInterfaceName();
157
158    /**
159     * Alll inherited instanceAttributes this session EJB.  The instanceAttributes are grouped by
160     * the class that defines the instanceAttributes, with instanceAttributes from the most removed
161     * super class first.
162     * @return List
163     */
164    public List getInheritedInstanceAttributes();
165
166    /**
167     * Returns the Collection of target elements from the service bean class where  the target class
168     * has a stereotype of Interceptor.
169     * @return Collection
170     */
171    public Collection getInterceptorReferences();
172
173    /**
174     * The JNDI name to which this session EJB local interface is bound.
175     * @return String
176     */
177    public String getJndiNameLocal();
178
179    /**
180     * Returns the JNDI name prefix for this session bean.  This is set using the jndiNamePrefix
181     * namespace property and is commonly the ear file name excluding the extension for the EJB3
182     * cartridge.  This prefix is applied whether the JNDI name is specified or not.
183     * If no manual JNDI name is specified, then the prefix is applied like so:
184     * jndiPrefix/EJBName/Remote
185     * If a manual JNDI name is specified, then the prefix is applied:
186     * jndiPrefix/ManualEJBJNDIName
187     * @return String
188     */
189    public String getJndiNamePrefix();
190
191    /**
192     * The JNDI name to which this session EJB remote interface is bound.
193     * @return String
194     */
195    public String getJndiNameRemote();
196
197    /**
198     * Returns the Collection of dependencies from the service bean class where the target class has
199     * a stereotype of MessageDriven.
200     * @return Collection
201     */
202    public Collection getMessageDrivenReferences();
203
204    /**
205     * Return only the Role object that do not have a Dependency stereotype of RunAs specified.
206     * @return Collection<Role>
207     */
208    public Collection<Role> getNonRunAsRoles();
209
210    /**
211     * Returns the EJB3 container engine (jboss, weblogic).
212     * @return String
213     */
214    public String getPersistenceContainer();
215
216    /**
217     * Returns the Collection of target objects from the service bean class that have a stereotype
218     * of PersistenceContext.
219     * @return Collection
220     */
221    public Collection getPersistenceContextReferences();
222
223    /**
224     * Specifies whether the persistence context for this EntityManager is transaction scoped or
225     * extended.
226     * @return String
227     */
228    public String getPersistenceContextType();
229
230    /**
231     * Returns the persistence context unit name for the injected EntityManger.  This is only
232     * required if multiple persistence units exists.
233     * @return String
234     */
235    public String getPersistenceContextUnitName();
236
237    /**
238     * Returns the Collection of dependencies from the service bean that have stereotype of
239     * ResourceRef and the target has a stereotype of DataSource.
240     * @return Collection
241     */
242    public Collection getResourceDataSourceReferences();
243
244    /**
245     * Returns the Collection of dependencies from the service bean that have stereotype of
246     * ResourceRef and the target has a stereotype of UserTransaction.
247     * @return Collection
248     */
249    public Collection getResourceUserTransactionReferences();
250
251    /**
252     * Returns the comma separated list of roles allowd to execute all operations in this session
253     * bean.  This is defined by actor dependencies on the session bean.
254     * @return String
255     */
256    public String getRolesAllowed();
257
258    /**
259     * Returns the run-as identity for the session bean which is used to establish the identity the
260     * bean will use when making calls.  It does not affect the identity of the callers.
261     * @return String
262     */
263    public String getRunAs();
264
265    /**
266     * Tagged value andromda.seam.component.conversional.ifnotbegunoutcome. Specifies that a
267     * conversation scope component is conversational, meaning that no method of the component can
268     * be called unless a long-running conversation started by this component is active (unless the
269     * method would begin a new long-running conversation).
270     * @return String
271     */
272    public String getSeamComponentConversionalIfNotBegunOutcome();
273
274    /**
275     * Tagged value andromda.seam.component.intercept. Determines when Seam interceptors are active.
276     * The possible values are defined by the InterceptionType enumeration: ALWAYS,
277     * AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER.
278     * When no interception type is explicitly specified, the default depends upon the component
279     * type. For entity beans, the default is NEVER. For session beans, message driven beans and
280     * JavaBeans, the default is ALWAYS.
281     * @return String
282     */
283    public String getSeamComponentIntercept();
284
285    /**
286     * Tagged value andromda.seam.component.jndiname. Specifies the JNDI name that Seam will use to
287     * look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI
288     * pattern specified by org.jboss.seam.core.init.jndiPattern.
289     * @return String
290     */
291    public String getSeamComponentJndiName();
292
293    /**
294     * Returns the Seam component name for the class.
295     * @return String
296     */
297    public String getSeamComponentName();
298
299    /**
300     * Tagged value andromda.seam.component.role.name. Allows a Seam component to be bound to
301     * multiple contexts variables. The Name/Scope annotations define a "default role". Each Role
302     * annotation defines an additional role.
303     * This tagged value specifies the context variable name.
304     * @return Collection
305     */
306    public Collection getSeamComponentRoleNames();
307
308    /**
309     * If multiple roles are specified (since a seam component can be bound to multiple context
310     * variables), then multiple roles are specified in the order the role names are specified. 
311     * This is done by modelling the andromda.seam.component.role.scope tag with a comma separated
312     * list of scopes.
313     * @return Collection
314     */
315    public Collection getSeamComponentRoleScopeTypes();
316
317    /**
318     * Tagged value andromda.seam.component.scope. Defines the default context of the component. 
319     * Possible values are
320     * EVENT
321     * PAGE
322     * CONVERSATION
323     * SESSION
324     * BUSINESS_PROCESS
325     * APPLICATION
326     * STATELESS
327     * If no scope specified, default depends on component type.
328     * @return String
329     */
330    public String getSeamComponentScopeType();
331
332    /**
333     * Returns a string with parameters for the Startup annotation. Supported parameters:
334     * depends ? specifies that the named components must be started first, if they are installed.
335     * Specified by tagged value andromda.seam.component.startup.depends
336     * @return String
337     */
338    public String getSeamComponentStartupParameters();
339
340    /**
341     * Tagged value andromda.seam.component.synchronized.timeout. Specifies that a component is
342     * accessed concurrently by multiple clients, and that Seam should serialize requests. If a
343     * request is not able to obtain its lock on the component in the given timeout period, an
344     * exception will be raised.
345     * @return String
346     */
347    public String getSeamComponentSynchronizedTimeout();
348
349    /**
350     * Returns the security domain value.  Specified using the securityRealm namespace property or
351     * overridden in the andromda.ejb.security.realm tagged value.
352     * @return String
353     */
354    public String getSecurityRealm();
355
356    /**
357     * Returns the service bean base name.
358     * @return String
359     */
360    public String getServiceBaseName();
361
362    /**
363     * Return the service bean delegate class name.
364     * @return String
365     */
366    public String getServiceDelegateName();
367
368    /**
369     * Returns the service bean implementation name.
370     * @return String
371     */
372    public String getServiceImplementationName();
373
374    /**
375     * The parent business interface name for this session bean.
376     * @return String
377     */
378    public String getServiceInterfaceName();
379
380    /**
381     * Returns the service bean callback listener name.
382     * @return String
383     */
384    public String getServiceListenerName();
385
386    /**
387     * Returns the service bean local interface name.
388     * @return String
389     */
390    public String getServiceLocalInterfaceName();
391
392    /**
393     * Returns service bean name.
394     * @return String
395     */
396    public String getServiceName();
397
398    /**
399     * Returns the service bean remote interface name.
400     * @return String
401     */
402    public String getServiceRemoteInterfaceName();
403
404    /**
405     * Returns the service bean test class name
406     * @return String
407     */
408    public String getServiceTestName();
409
410    /**
411     * Returns the service test package name. This simply appends .test to the existing service
412     * class package.
413     * @return String
414     */
415    public String getTestPackageName();
416
417    /**
418     * Returns the transaction demarcation strategy for this bean.  Typically, this will return BEAN
419     * for non default CONTAINER managed beans.  Unless specified, this will return null indicating
420     * CONTAINER transaction demarcation.
421     * @return String
422     */
423    public String getTransactionManagement();
424
425    /**
426     * Gets the transaction type for this service (i.e. REQUIRED, etc)
427     * @return String
428     */
429    public String getTransactionType();
430
431    /**
432     * Returns the name of the type of this Session EJB, either Stateless or Stateful.
433     * @return String
434     */
435    public String getType();
436
437    /**
438     * A string indicating whether the Bean is a local or remotely accessable bean.
439     * @return String
440     */
441    public String getViewType();
442
443    /**
444     * Indicates whether or not a default service exception should be allowed.
445     * @return boolean
446     */
447    public boolean isAllowDefaultServiceException();
448
449    /**
450     * Determine whether clustering has been enabled.  Either set application wide using
451     * enableClustering namespace property or via the andromda_service_clustered tagged value.
452     * @return boolean
453     */
454    public boolean isClusteringEnabled();
455
456    /**
457     * Returns true if NO roles are permitted to execute operations in this bean.  This is specified
458     * in the andromda.ejb.security.denyAll tagged value. Typically, it will be overridden at the
459     * method level using the andromda.ejb.security.rolesAllowed tagged value.
460     * @return boolean
461     */
462    public boolean isDenyAll();
463
464    /**
465     * Determines whether to exclude the invocation of the default interceptors for all business
466     * method in the bean.
467     * @return boolean
468     */
469    public boolean isExcludeDefaultInterceptors();
470
471    /**
472     * Returns true if this session bean has the stereotype Listener.  False otherwise.
473     * @return boolean
474     */
475    public boolean isListenerEnabled();
476
477    /**
478     * Returns true if all roles are permitted to execute all operations in this session bean.  This
479     * is specified in the andromda.ejb.security.permitAll tagged value.  It will override the
480     * andromda.ejb.security.rolesAllowed tagged value.
481     * @return boolean
482     */
483    public boolean isPermitAll();
484
485    /**
486     * Returns true if the persistence container is the JBoss engine.
487     * @return boolean
488     */
489    public boolean isPersistenceContainerJboss();
490
491    /**
492     * Returns true if the persistence container is the Weblogic engine.
493     * @return boolean
494     */
495    public boolean isPersistenceContainerWeblogic();
496
497    /**
498     * Returns true if this session bean has the <<Seam>> stereotype modelled indicating it is a
499     * Seam session bean component.
500     * @return boolean
501     */
502    public boolean isSeamComponent();
503
504    /**
505     * Tagged value andromda.seam.component.readonly. Specifies that a JavaBean component or
506     * component method does not require state replication at the end of the invocation.
507     * @return boolean
508     */
509    public boolean isSeamComponentReadonly();
510
511    /**
512     * Returns true if stereotype <<Startup>> is set. Specifies that an application scope component
513     * is started immediately at initialization time. This is mainly used for certain built-in
514     * components that bootstrap critical infrastructure such as JNDI, datasources, etc.
515     * @return boolean
516     */
517    public boolean isSeamComponentStartup();
518
519    /**
520     * Returns true if stereotype <<Transactional>> is set. Specifies that a JavaBean component
521     * should have a similar transactional behavior to the default behavior of a session bean
522     * component. ie. method invocations should take place in a transaction, and if no transaction
523     * exists when the method is called, a transaction will be started just for that method. This
524     * annotation may be applied at either class or method level.
525     * @return boolean
526     */
527    public boolean isSeamComponentTransactional();
528
529    /**
530     * Returns true if the security realm is specified indicating to generate the security
531     * infrastructure files.
532     * @return boolean
533     */
534    public boolean isSecurityEnabled();
535
536    /**
537     * True/false depending on whether or not this Session EJB is stateful or not.
538     * @return boolean
539     */
540    public boolean isStateful();
541
542    /**
543     * True/false depending on whether or not this Session EJB is stateless or not.
544     * @return boolean
545     */
546    public boolean isStateless();
547
548    /**
549     * Whether or not to allow a synthetic (auto generated) create method.
550     * @return boolean
551     */
552    public boolean isSyntheticCreateMethodAllowed();
553
554    /**
555     * Returns true if the transaction demarcation strategy is bean managedfor this bean.
556     * @return boolean
557     */
558    public boolean isTransactionManagementBean();
559
560    /**
561     * Return true if the view type accessability for this bean is both.
562     * @return boolean
563     */
564    public boolean isViewTypeBoth();
565
566    /**
567     * Return true if the view type accessability for this bean is local or both.
568     * Always generate a local interface is this session bean is a Seam component.
569     * @return boolean
570     */
571    public boolean isViewTypeLocal();
572
573    /**
574     * Return true if the view type accessability for this bean is remote or both.
575     * @return boolean
576     */
577    public boolean isViewTypeRemote();
578
579    /**
580     * Returns true if the bean view type was explicitly set to both view using tagged value or set
581     * as the app wide default.
582     * @return boolean
583     */
584    public boolean isViewTypeStrictlyBoth();
585
586    /**
587     * Returns true if the bean view type was explicitly set to local view using tagged value or set
588     * as the app wide default.
589     * @return boolean
590     */
591    public boolean isViewTypeStrictlyLocal();
592
593    /**
594     * Returns true if the bean view type was explicitly set to remote view using tagged value or
595     * set as the app wide default.
596     * @return boolean
597     */
598    public boolean isViewTypeStrictlyRemote();
599
600    /**
601     * Returns true if the session bean has either one of the following:
602     * 1. The <<WebService>> stereotype is modelled on the bean class;
603     * 2. The <<WebServiceOperation>> stereotype is modelled on at least one business method.
604     * @return boolean
605     */
606    public boolean isWebServiceEnabled();
607
608    /**
609     * Returns true if at least one of the session bean operations is marked with the
610     * WebServiceOperation stereotype.
611     * @return boolean
612     */
613    public boolean isWebServiceOperationExists();
614}