001package org.andromda.cartridges.ejb3.metafacades; 002 003import java.text.MessageFormat; 004import java.util.Collection; 005import java.util.Iterator; 006import java.util.LinkedHashSet; 007import java.util.List; 008import org.andromda.cartridges.ejb3.EJB3Globals; 009import org.andromda.cartridges.ejb3.EJB3Profile; 010import org.andromda.metafacades.uml.DependencyFacade; 011import org.andromda.metafacades.uml.ModelElementFacade; 012import org.andromda.metafacades.uml.OperationFacade; 013import org.andromda.metafacades.uml.Role; 014import org.andromda.metafacades.uml.UMLProfile; 015import org.apache.commons.collections.Closure; 016import org.apache.commons.collections.CollectionUtils; 017import org.apache.commons.collections.Predicate; 018import org.apache.commons.collections.Transformer; 019import org.apache.commons.lang.BooleanUtils; 020import org.apache.commons.lang.ObjectUtils; 021import org.apache.commons.lang.StringUtils; 022 023/** 024 * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3SessionFacade. 025 * 026 * @see EJB3SessionFacade 027 */ 028public class EJB3SessionFacadeLogicImpl 029extends EJB3SessionFacadeLogic 030{ 031 private static final long serialVersionUID = 34L; 032 /** 033 * The property which stores the pattern defining the service bean name. 034 */ 035 public static final String SERVICE_NAME_PATTERN = "serviceNamePattern"; 036 037 /** 038 * The property which stores the pattern defining the service bean parent interface name. 039 */ 040 public static final String SERVICE_INTERFACE_NAME_PATTERN = "serviceInterfaceNamePattern"; 041 042 /** 043 * The property which stores the pattern defining the service bean local interface name. 044 */ 045 public static final String SERVICE_LOCAL_INTERFACE_NAME_PATTERN = "serviceLocalInterfaceNamePattern"; 046 047 /** 048 * The property which stores the pattern defining the service bean remote interface name. 049 */ 050 private static final String SERVICE_REMOTE_INTERFACE_NAME_PATTERN = "serviceRemoteInterfaceNamePattern"; 051 052 /** 053 * The property which stores the pattern defining the service bean listener callback name. 054 */ 055 private static final String SERVICE_LISTENER_NAME_PATTERN = "serviceListenerNamePattern"; 056 057 /** 058 * The property which stores the pattern defining the service bean implementation name. 059 */ 060 private static final String SERVICE_IMPLEMENTATION_NAME_PATTERN = "serviceImplementationNamePattern"; 061 062 /** 063 * The property which stores the pattern defining the service bean delegate class name. 064 */ 065 private static final String SERVICE_DELEGATE_NAME_PATTERN = "serviceDelegateNamePattern"; 066 067 /** 068 * The property which stores the pattern defining the service bean base class name. 069 */ 070 private static final String SERVICE_BASE_NAME_PATTERN = "serviceBaseNamePattern"; 071 072 /** 073 * The property which stores the pattern defining the service bean test class name 074 */ 075 private static final String SERVICE_TEST_NAME_PATTERN = "serviceTestNamePattern"; 076 077 /** 078 * The property which stores the pattern defining the service test package 079 */ 080 private static final String SERVICE_TEST_PACKAGE_NAME_PATTERN = "serviceTestPackageNamePattern"; 081 082 /** 083 * The property which stores the pattern defining the default service bean 084 * exception class name. 085 */ 086 private static final String SERVICE_DEFAULT_EXCEPTION_NAME_PATTERN = "defaultServiceExceptionNamePattern"; 087 088 /** 089 * The property that stores the persistence container name. 090 */ 091 public static final String PERSISTENCE_CONTAINER = "persistenceContainerName"; 092 /** 093 * The property that stores the deployment Platform name. 094 */ 095 public static final String DEPLOYMENT_PLATFORM = "deploymentPlatform"; 096 097 /** 098 * The property which stores the persistence context unit name associated with the default 099 * Entity Manager. 100 */ 101 private static final String PERSISTENCE_CONTEXT_UNIT_NAME = "persistenceContextUnitName"; 102 103 /** 104 * The default view type accessibility for the session bean. 105 */ 106 public static final String SERVICE_DEFAULT_VIEW_TYPE = "serviceViewType"; 107 108 /** 109 * The property that stores whether default service exceptions are permitted. 110 */ 111 public static final String ALLOW_DEFAULT_SERVICE_EXCEPTION = "allowDefaultServiceException"; 112 113 /** 114 * The property that stores the JNDI name prefix. 115 */ 116 public static final String SERVICE_JNDI_NAME_PREFIX = "jndiNamePrefix"; 117 118 /** 119 * The property that determines application wide clustering 120 */ 121 public static final String SERVICE_ENABLE_CLUSTERING = "enableClustering"; 122 123 /** 124 * The property that sets whether EJB 3.0 JSR 181 webservices is enabled 125 */ 126 private static final String PROPERTY_WEBSERVICE_ENABLED = "webServiceEnabled"; 127 128 // ---------------- constructor ------------------------------- 129 130 /** 131 * @param metaObject 132 * @param context 133 */ 134 public EJB3SessionFacadeLogicImpl(final Object metaObject, final String context) 135 { 136 super (metaObject, context); 137 } 138 139 // ---------------- methods ------------------------------- 140 141 /** 142 * @see EJB3SessionFacade#isSyntheticCreateMethodAllowed() 143 */ 144 @Override 145 protected boolean handleIsSyntheticCreateMethodAllowed() 146 { 147 return EJB3MetafacadeUtils.allowSyntheticCreateMethod(this); 148 } 149 150 /** 151 * @return operations 152 * @see EJB3SessionFacade#getBusinessOperations() 153 */ 154 protected Collection handleGetBusinessOperations() 155 { 156 Collection operations = super.getOperations(); 157 CollectionUtils.filter( 158 operations, 159 new Predicate() 160 { 161 public boolean evaluate(Object object) 162 { 163 boolean businessOperation = false; 164 if (EJB3SessionOperationFacade.class.isAssignableFrom(object.getClass())) 165 { 166 businessOperation = ((EJB3SessionOperationFacade)object).isBusinessOperation(); 167 } 168 return businessOperation; 169 } 170 }); 171 return operations; 172 } 173 174 /** 175 * @return EJB3MetafacadeUtils.getAllInstanceAttributes(this) 176 * @see EJB3SessionFacade#getAllInstanceAttributes() 177 */ 178 protected List handleGetAllInstanceAttributes() 179 { 180 return EJB3MetafacadeUtils.getAllInstanceAttributes(this); 181 182 // Don't use the Metafacade util method since we want to invoke the implementation of 183 // getInstanceAttributes from EJB3SessionFacade 184 185// List attributes = this.getInheritedInstanceAttributes(); 186// attributes.addAll(this.getInstanceAttributes()); 187// return attributes; 188 } 189 190 /** 191 * @return EJB3MetafacadeUtils.getInheritedInstanceAttributes(this) 192 * @see EJB3SessionFacade#getInheritedInstanceAttributes() 193 */ 194 protected List handleGetInheritedInstanceAttributes() 195 { 196 return EJB3MetafacadeUtils.getInheritedInstanceAttributes(this); 197 198 // Don't use the Metafacade util method since we want to invoke the implementation of 199 // getInstanceAttributes from EJB3SessionFacade 200 201// EJB3SessionFacade current = (EJB3SessionFacade)this.getSuperClass(); 202// if (current == null) 203// { 204// return new ArrayList(); 205// } 206// List attributes = current.getInheritedInstanceAttributes(); 207// 208// if (current.getInstanceAttributes() != null) 209// { 210// attributes.addAll(current.getInstanceAttributes()); 211// } 212// return attributes; 213 } 214 215 /** 216 * @see EJB3SessionFacadeLogic#handleFilterSeamAttributes(Collection) 217 */ 218 protected Collection handleFilterSeamAttributes(Collection attributes) 219 { 220 CollectionUtils.filter( 221 attributes, 222 new Predicate() 223 { 224 public boolean evaluate(Object object) 225 { 226 boolean isSeamAttribute = false; 227 if (((EJB3SessionAttributeFacade)object).isSeamAttribute()) 228 { 229 isSeamAttribute = true; 230 } 231 return !isSeamAttribute; 232 } 233 }); 234 return attributes; 235 } 236 237 /** 238 * @see EJB3SessionFacadeLogic#handleGetJndiNameRemote() 239 */ 240 @Override 241 protected String handleGetJndiNameRemote() 242 { 243 String jndiName = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SESSION_JNDI_NAME_REMOTE); 244 if (StringUtils.isNotBlank(jndiName)) 245 { 246 jndiName = this.getJndiNamePrefix() + "/" + jndiName; 247 } 248 return jndiName; 249 } 250 251 /** 252 * @see EJB3SessionFacadeLogic#handleGetJndiNameLocal() 253 */ 254 @Override 255 protected String handleGetJndiNameLocal() 256 { 257 String jndiName = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SESSION_JNDI_NAME_Local); 258 if (StringUtils.isNotBlank(jndiName)) 259 { 260 jndiName = this.getJndiNamePrefix() + "/" + jndiName; 261 } 262 return jndiName; 263 } 264 265 /** 266 * @see EJB3SessionFacadeLogic#handleGetJndiNamePrefix() 267 */ 268 @Override 269 protected String handleGetJndiNamePrefix() 270 { 271 return this.isConfiguredProperty(SERVICE_JNDI_NAME_PREFIX) ? 272 ObjectUtils.toString(this.getConfiguredProperty(SERVICE_JNDI_NAME_PREFIX)) : null; 273 } 274 275 /** 276 * @see EJB3SessionFacade#isStateful() 277 */ 278 @Override 279 protected boolean handleIsStateful() 280 { 281 boolean isStateful = false; 282 String sessionType = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SESSION_TYPE); 283 if (StringUtils.isBlank(sessionType)) 284 { 285 isStateful = !isStateless(); 286 } 287 else 288 { 289 isStateful = sessionType.equalsIgnoreCase(EJB3Globals.SERVICE_TYPE_STATEFUL); 290 } 291 return isStateful; 292 } 293 294 /** 295 * @see EJB3SessionFacade#isStateless() 296 */ 297 @Override 298 protected boolean handleIsStateless() 299 { 300 boolean isStateless = false; 301 String sessionType = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SESSION_TYPE); 302 if (StringUtils.isBlank(sessionType)) 303 { 304 isStateless = 305 this.getAllInstanceAttributes() == null || 306 this.filterSeamAttributes(this.getAllInstanceAttributes()).isEmpty(); 307 } 308 else 309 { 310 isStateless = sessionType.equalsIgnoreCase(EJB3Globals.SERVICE_TYPE_STATELESS); 311 } 312 return isStateless; 313 } 314 315 /** 316 * @see EJB3SessionFacade#getType() 317 */ 318 @Override 319 protected String handleGetType() 320 { 321 String sessionType = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SESSION_TYPE); 322 if (StringUtils.isBlank(sessionType)) 323 { 324 sessionType = "Stateful"; 325 if (this.isStateless()) 326 { 327 sessionType = "Stateless"; 328 } 329 } 330 return sessionType; 331 } 332 333 /** 334 * @see EJB3SessionFacade#getViewType() 335 */ 336 @Override 337 protected String handleGetViewType() 338 { 339 String viewType = EJB3MetafacadeUtils.getViewType(this, 340 String.valueOf(this.getConfiguredProperty(SERVICE_DEFAULT_VIEW_TYPE))); 341 342 /** 343 * Check all session bean operations. 344 * If session view type is remote, check for operations with view type local and return both. 345 * If session view type is local, check for operations with view type remote and return both. 346 * Otherwise session view type is both, return both. 347 * 348 * NOTE: do not invoke viewType on EJB3SessionOperationFacade to avoid cyclic dependency and throwing 349 * StackOverFlowError. 350 */ 351 if (viewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_LOCAL)) 352 { 353 boolean operationWithRemoteViewExists = 354 CollectionUtils.exists( 355 this.getBusinessOperations(), 356 new Predicate() 357 { 358 public boolean evaluate(Object object) 359 { 360 EJB3SessionOperationFacade operation = (EJB3SessionOperationFacade)object; 361 String operationViewType = 362 String.valueOf(operation.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_VIEWTYPE)); 363 if (operationViewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_REMOTE) || 364 operationViewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_BOTH)) 365 { 366 return true; 367 } 368 else 369 { 370 return false; 371 } 372 } 373 }); 374 viewType = (operationWithRemoteViewExists ? EJB3Globals.VIEW_TYPE_BOTH : viewType); 375 } 376 else if (viewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_REMOTE)) 377 { 378 boolean operationWithLocalViewExists = 379 CollectionUtils.exists( 380 this.getBusinessOperations(), 381 new Predicate() 382 { 383 public boolean evaluate(Object object) 384 { 385 EJB3SessionOperationFacade operation = (EJB3SessionOperationFacade)object; 386 String operationViewType = 387 String.valueOf(operation.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_VIEWTYPE)); 388 if (operationViewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_LOCAL) || 389 operationViewType.equalsIgnoreCase(EJB3Globals.VIEW_TYPE_BOTH)) 390 { 391 return true; 392 } 393 else 394 { 395 return false; 396 } 397 } 398 }); 399 viewType = (operationWithLocalViewExists ? EJB3Globals.VIEW_TYPE_BOTH : viewType); 400 } 401 return viewType; 402 } 403 404 /** 405 * @see EJB3SessionFacadeLogic#handleIsViewTypeLocal() 406 */ 407 @Override 408 protected boolean handleIsViewTypeLocal() 409 { 410 boolean isLocal = false; 411 if (this.getViewType().equalsIgnoreCase(EJB3Globals.VIEW_TYPE_LOCAL) || this.isViewTypeBoth() || 412 this.isSeamComponent()) 413 { 414 isLocal = true; 415 } 416 return isLocal; 417 } 418 419 /** 420 * @see EJB3SessionFacadeLogic#handleIsViewTypeRemote() 421 */ 422 @Override 423 protected boolean handleIsViewTypeRemote() 424 { 425 boolean isRemote = false; 426 if (this.getViewType().equalsIgnoreCase(EJB3Globals.VIEW_TYPE_REMOTE) || this.isViewTypeBoth()) 427 { 428 isRemote = true; 429 } 430 return isRemote; 431 } 432 433 /** 434 * @see EJB3SessionFacadeLogic#handleIsViewTypeBoth() 435 */ 436 @Override 437 protected boolean handleIsViewTypeBoth() 438 { 439 boolean isBoth = false; 440 if (this.getViewType().equalsIgnoreCase(EJB3Globals.VIEW_TYPE_BOTH)) 441 { 442 isBoth = true; 443 } 444 return isBoth; 445 } 446 447 /** 448 * @see EJB3SessionFacadeLogic#handleIsViewTypeStrictlyLocal() 449 */ 450 @Override 451 protected boolean handleIsViewTypeStrictlyLocal() 452 { 453 454 boolean isViewTypeStrictlyLocal = false; 455 String viewType = EJB3MetafacadeUtils.getViewType(this, 456 String.valueOf(this.getConfiguredProperty(SERVICE_DEFAULT_VIEW_TYPE))); 457 if (StringUtils.equalsIgnoreCase(viewType, EJB3Globals.VIEW_TYPE_LOCAL) || 458 StringUtils.equalsIgnoreCase(viewType, EJB3Globals.VIEW_TYPE_BOTH)) 459 { 460 isViewTypeStrictlyLocal = true; 461 } 462 return isViewTypeStrictlyLocal; 463 } 464 465 /** 466 * @see EJB3SessionFacadeLogic#handleIsViewTypeStrictlyRemote() 467 */ 468 @Override 469 protected boolean handleIsViewTypeStrictlyRemote() 470 { 471 boolean isViewTypeStrictlyRemote = false; 472 String viewType = EJB3MetafacadeUtils.getViewType(this, 473 String.valueOf(this.getConfiguredProperty(SERVICE_DEFAULT_VIEW_TYPE))); 474 if (StringUtils.equalsIgnoreCase(viewType, EJB3Globals.VIEW_TYPE_REMOTE) || 475 StringUtils.equalsIgnoreCase(viewType, EJB3Globals.VIEW_TYPE_BOTH)) 476 { 477 isViewTypeStrictlyRemote = true; 478 } 479 return isViewTypeStrictlyRemote; 480 } 481 482 /** 483 * @see EJB3SessionFacadeLogic#handleIsViewTypeStrictlyBoth() 484 */ 485 @Override 486 protected boolean handleIsViewTypeStrictlyBoth() 487 { 488 boolean isViewTypeStrictlyBoth = false; 489 String viewType = EJB3MetafacadeUtils.getViewType(this, 490 String.valueOf(this.getConfiguredProperty(SERVICE_DEFAULT_VIEW_TYPE))); 491 if (StringUtils.equalsIgnoreCase(viewType, EJB3Globals.VIEW_TYPE_BOTH)) 492 { 493 isViewTypeStrictlyBoth = true; 494 } 495 return isViewTypeStrictlyBoth; 496 } 497 498 /** 499 * @see EJB3SessionFacade#getHomeInterfaceName() 500 */ 501 @Override 502 protected String handleGetHomeInterfaceName() 503 { 504 return EJB3MetafacadeUtils.getHomeInterfaceName(this); 505 } 506 507 /** 508 * @see EJB3SessionFacade#getTransactionType() 509 */ 510 @Override 511 protected String handleGetTransactionType() 512 { 513 return EJB3MetafacadeUtils.getTransactionType(this, null); 514 } 515 516 /** 517 * @param follow 518 * @return EJB3MetafacadeUtils.getCreateMethods(this, follow) 519 * @see EJB3SessionFacade#getCreateMethods(boolean) 520 */ 521 protected Collection handleGetCreateMethods(boolean follow) 522 { 523 return EJB3MetafacadeUtils.getCreateMethods(this, follow); 524 } 525 526 /** 527 * @param follow 528 * @return EJB3MetafacadeUtils.getEnvironmentEntries(this, follow) 529 * @see EJB3SessionFacade#getEnvironmentEntries(boolean) 530 */ 531 protected Collection handleGetEnvironmentEntries(boolean follow) 532 { 533 return EJB3MetafacadeUtils.getEnvironmentEntries(this, follow); 534 } 535 536 /** 537 * @param follow 538 * @return EJB3MetafacadeUtils.getConstants(this, follow) 539 * @see EJB3SessionFacade#getConstants(boolean) 540 */ 541 protected Collection handleGetConstants(boolean follow) 542 { 543 return EJB3MetafacadeUtils.getConstants(this, follow); 544 } 545 546 /** 547 * @see EJB3SessionFacade#getTestPackageName 548 */ 549 @Override 550 protected String handleGetTestPackageName() 551 { 552 String namespacePattern = String.valueOf(this.getConfiguredProperty(SERVICE_TEST_PACKAGE_NAME_PATTERN)); 553 return MessageFormat.format( 554 namespacePattern, 555 this.getPackageName()); 556 } 557 558 /** 559 * @see EJB3SessionFacadeLogic#handleGetServiceName() 560 */ 561 @Override 562 protected String handleGetServiceName() 563 { 564 String serviceNamePattern = (String)this.getConfiguredProperty(SERVICE_NAME_PATTERN); 565 566 return MessageFormat.format( 567 serviceNamePattern, 568 StringUtils.trimToEmpty(this.getName())); 569 } 570 571 /** 572 * @see EJB3SessionFacadeLogic#handleGetServiceInterfaceName() 573 */ 574 @Override 575 protected String handleGetServiceInterfaceName() 576 { 577 String serviceInterfaceNamePattern = 578 (String)this.getConfiguredProperty(SERVICE_INTERFACE_NAME_PATTERN); 579 580 return MessageFormat.format( 581 serviceInterfaceNamePattern, 582 StringUtils.trimToEmpty(this.getName())); 583 } 584 585 /** 586 * @see EJB3SessionFacadeLogic#handleGetServiceLocalInterfaceName() 587 */ 588 @Override 589 protected String handleGetServiceLocalInterfaceName() 590 { 591 String serviceLocalInterfaceNamePattern = 592 (String)this.getConfiguredProperty(SERVICE_LOCAL_INTERFACE_NAME_PATTERN); 593 594 return MessageFormat.format( 595 serviceLocalInterfaceNamePattern, 596 StringUtils.trimToEmpty(this.getName())); 597 } 598 599 /** 600 * @see EJB3SessionFacadeLogic#handleGetServiceRemoteInterfaceName() 601 */ 602 @Override 603 protected String handleGetServiceRemoteInterfaceName() 604 { 605 String serviceRemoteInterfaceNamePattern = 606 (String)this.getConfiguredProperty(SERVICE_REMOTE_INTERFACE_NAME_PATTERN); 607 608 return MessageFormat.format( 609 serviceRemoteInterfaceNamePattern, 610 StringUtils.trimToEmpty(this.getName())); 611 } 612 613 /** 614 * @see EJB3SessionFacadeLogic#handleGetServiceImplementationName() 615 */ 616 @Override 617 protected String handleGetServiceImplementationName() 618 { 619 String serviceImplementationNamePattern = 620 (String)this.getConfiguredProperty(SERVICE_IMPLEMENTATION_NAME_PATTERN); 621 622 return MessageFormat.format( 623 serviceImplementationNamePattern, 624 StringUtils.trimToEmpty(this.getName())); 625 } 626 627 /** 628 * @see EJB3SessionFacadeLogic#handleGetServiceListenerName() 629 */ 630 @Override 631 protected String handleGetServiceListenerName() 632 { 633 String serviceListenerNamePattern = 634 (String)this.getConfiguredProperty(SERVICE_LISTENER_NAME_PATTERN); 635 636 return MessageFormat.format( 637 serviceListenerNamePattern, 638 StringUtils.trimToEmpty(this.getName())); 639 } 640 641 642 /** 643 * @see EJB3SessionFacadeLogic#handleGetServiceDelegateName() 644 */ 645 @Override 646 protected String handleGetServiceDelegateName() 647 { 648 String serviceDelegateNamePattern = 649 (String)this.getConfiguredProperty(SERVICE_DELEGATE_NAME_PATTERN); 650 651 return MessageFormat.format( 652 serviceDelegateNamePattern, 653 StringUtils.trimToEmpty(this.getName())); 654 } 655 656 /** 657 * @see EJB3SessionFacadeLogic#handleGetServiceBaseName() 658 */ 659 @Override 660 protected String handleGetServiceBaseName() 661 { 662 String serviceBaseNamePattern = 663 (String)this.getConfiguredProperty(SERVICE_BASE_NAME_PATTERN); 664 665 return MessageFormat.format( 666 serviceBaseNamePattern, 667 StringUtils.trimToEmpty(this.getName())); 668 } 669 670 /** 671 * @see EJB3SessionFacadeLogic#handleGetServiceTestName() 672 */ 673 @Override 674 protected String handleGetServiceTestName() 675 { 676 String serviceTestNamePattern = 677 (String)this.getConfiguredProperty(SERVICE_TEST_NAME_PATTERN); 678 679 return MessageFormat.format( 680 serviceTestNamePattern, 681 StringUtils.trimToEmpty(this.getName())); 682 } 683 684 /** 685 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceName() 686 */ 687 @Override 688 protected String handleGetFullyQualifiedServiceName() 689 { 690 return EJB3MetafacadeUtils.getFullyQualifiedName( 691 this.getPackageName(), 692 this.getServiceName(), 693 null); 694 } 695 696 /** 697 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceImplementationName() 698 */ 699 @Override 700 protected String handleGetFullyQualifiedServiceImplementationName() 701 { 702 return EJB3MetafacadeUtils.getFullyQualifiedName( 703 this.getPackageName(), 704 this.getServiceImplementationName(), 705 null); 706 } 707 708 /** 709 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceListenerName() 710 */ 711 @Override 712 protected String handleGetFullyQualifiedServiceListenerName() 713 { 714 return EJB3MetafacadeUtils.getFullyQualifiedName( 715 this.getPackageName(), 716 this.getServiceListenerName(), 717 null); 718 } 719 720 /** 721 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceInterfaceName() 722 */ 723 @Override 724 protected String handleGetFullyQualifiedServiceInterfaceName() 725 { 726 return EJB3MetafacadeUtils.getFullyQualifiedName( 727 this.getPackageName(), 728 this.getServiceInterfaceName(), 729 null); 730 } 731 732 /** 733 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceLocalInterfaceName() 734 */ 735 @Override 736 protected String handleGetFullyQualifiedServiceLocalInterfaceName() 737 { 738 return EJB3MetafacadeUtils.getFullyQualifiedName( 739 this.getPackageName(), 740 this.getServiceLocalInterfaceName(), 741 null); 742 } 743 744 /** 745 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceRemoteInterfaceName() 746 */ 747 @Override 748 protected String handleGetFullyQualifiedServiceRemoteInterfaceName() 749 { 750 return EJB3MetafacadeUtils.getFullyQualifiedName( 751 this.getPackageName(), 752 this.getServiceRemoteInterfaceName(), 753 null); 754 } 755 756 757 /** 758 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceDelegateName() 759 */ 760 @Override 761 protected String handleGetFullyQualifiedServiceDelegateName() 762 { 763 return EJB3MetafacadeUtils.getFullyQualifiedName( 764 this.getPackageName(), 765 this.getServiceDelegateName(), 766 null); 767 } 768 769 /** 770 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceBaseName() 771 */ 772 @Override 773 protected String handleGetFullyQualifiedServiceBaseName() 774 { 775 return EJB3MetafacadeUtils.getFullyQualifiedName( 776 this.getPackageName(), 777 this.getServiceBaseName(), 778 null); 779 } 780 781 /** 782 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedServiceTestName() 783 */ 784 @Override 785 protected String handleGetFullyQualifiedServiceTestName() 786 { 787 return EJB3MetafacadeUtils.getFullyQualifiedName( 788 this.getTestPackageName(), 789 this.getServiceTestName(), 790 null); 791 } 792 793 /** 794 * @see EJB3SessionFacadeLogic#handleGetPersistenceContextUnitName() 795 */ 796 @Override 797 protected String handleGetPersistenceContextUnitName() 798 { 799 String unitName = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_PERSISTENCE_CONTEXT_UNIT_NAME); 800 if (StringUtils.isBlank(unitName)) 801 { 802 unitName = StringUtils.trimToEmpty( 803 ObjectUtils.toString(this.getConfiguredProperty(PERSISTENCE_CONTEXT_UNIT_NAME))); 804 } 805 return unitName; 806 } 807 808 /** 809 * @see EJB3SessionFacadeLogic#handleGetPersistenceContextType() 810 */ 811 @Override 812 protected String handleGetPersistenceContextType() 813 { 814 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_PERSISTENCE_CONTEXT_TYPE); 815 } 816 817 /** 818 * @see EJB3SessionFacadeLogic#handleGetPersistenceContextReferences() 819 */ 820 protected Collection handleGetPersistenceContextReferences() 821 { 822 Collection<DependencyFacade> references = this.getSourceDependencies(); 823 CollectionUtils.filter( 824 references, 825 new Predicate() 826 { 827 public boolean evaluate(Object object) 828 { 829 ModelElementFacade targetElement = ((DependencyFacade)object).getTargetElement(); 830 return (targetElement != null 831 && targetElement.hasStereotype(EJB3Profile.STEREOTYPE_PERSISTENCE_CONTEXT)); 832 } 833 }); 834 CollectionUtils.transform( 835 references, 836 new Transformer() 837 { 838 public Object transform(final Object object) 839 { 840 return ((DependencyFacade)object).getTargetElement(); 841 } 842 }); 843 return references; 844 } 845 846 /** 847 * @see EJB3SessionFacadeLogic#getServiceReferences() 848 * 849 * Returns the Collection of DependencyFacades where the target is a Service ONLY. 850 */ 851 public Collection<DependencyFacade> getServiceReferences() 852 { 853 Collection<DependencyFacade> references = super.getServiceReferences(); 854 CollectionUtils.filter( 855 references, 856 new Predicate() 857 { 858 public boolean evaluate(Object object) 859 { 860 ModelElementFacade targetElement = ((DependencyFacade)object).getTargetElement(); 861 return targetElement.hasStereotype(EJB3Profile.STEREOTYPE_SERVICE); 862 } 863 }); 864 return references; 865 } 866 867 /** 868 * @see EJB3SessionFacadeLogic#handleGetAttributesAsList(Collection, boolean, boolean) 869 */ 870 @Override 871 protected String handleGetAttributesAsList( 872 Collection attributes, 873 boolean includeTypes, 874 boolean includeNames) 875 { 876 if (!includeNames && !includeTypes || attributes == null) 877 { 878 return ""; 879 } 880 881 StringBuilder sb = new StringBuilder(); 882 String separator = ""; 883 884 for (final Iterator it = attributes.iterator(); it.hasNext();) 885 { 886 EJB3SessionAttributeFacade attr = (EJB3SessionAttributeFacade)it.next(); 887 sb.append(separator); 888 separator = ", "; 889 if (includeTypes) 890 { 891 sb.append(attr.getGetterSetterTypeName()); 892 sb.append(" "); 893 } 894 if (includeNames) 895 { 896 sb.append(attr.getName()); 897 } 898 } 899 return sb.toString(); 900 } 901 902 /** 903 * @see EJB3SessionFacadeLogic#handleGetPersistenceContainer() 904 */ 905 @Override 906 protected String handleGetPersistenceContainer() 907 { 908 return StringUtils.trimToEmpty( 909 ObjectUtils.toString(this.getConfiguredProperty(DEPLOYMENT_PLATFORM))); 910 } 911 912 /** 913 * @see EJB3SessionFacadeLogic#handleIsPersistenceContainerJboss() 914 */ 915 @Override 916 protected boolean handleIsPersistenceContainerJboss() 917 { 918 return getPersistenceContainer().equalsIgnoreCase(EJB3Globals.PERSISTENCE_CONTAINER_JBOSS); 919 } 920 921 /** 922 * @see EJB3SessionFacadeLogic#handleIsPersistenceContainerWeblogic() 923 */ 924 @Override 925 protected boolean handleIsPersistenceContainerWeblogic() 926 { 927 return getPersistenceContainer().equalsIgnoreCase(EJB3Globals.PERSISTENCE_CONTAINER_WEBLOGIC); 928 } 929 930 /** 931 * @see EJB3SessionFacadeLogic#handleGetRolesAllowed() 932 */ 933 @Override 934 protected String handleGetRolesAllowed() 935 { 936 StringBuilder rolesAllowed = null; 937 String separator = ""; 938 939 for (final Iterator iter = this.getNonRunAsRoles().iterator(); iter.hasNext(); ) 940 { 941 if (rolesAllowed == null) 942 { 943 rolesAllowed = new StringBuilder(); 944 } 945 rolesAllowed.append(separator); 946 Role role = (Role)iter.next(); 947 rolesAllowed.append('"'); 948 rolesAllowed.append(role.getName()); 949 rolesAllowed.append('"'); 950 separator = ", "; 951 } 952 return rolesAllowed != null ? rolesAllowed.toString() : null; 953 } 954 955 /** 956 * @see EJB3SessionFacadeLogic#handleIsPermitAll() 957 */ 958 @Override 959 protected boolean handleIsPermitAll() 960 { 961 boolean permitAll = false; 962 String permitAllStr = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SECURITY_PERMIT_ALL); 963 if (StringUtils.isNotBlank(permitAllStr)) 964 { 965 permitAll = BooleanUtils.toBoolean(permitAllStr); 966 } 967 return permitAll; 968 } 969 970 /** 971 * @see EJB3SessionFacadeLogic#handleIsDenyAll() 972 */ 973 @Override 974 protected boolean handleIsDenyAll() 975 { 976 boolean denyAll = false; 977 String denyAllStr = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SECURITY_DENY_ALL); 978 if (StringUtils.isNotBlank(denyAllStr)) 979 { 980 denyAll = BooleanUtils.toBoolean(denyAllStr); 981 } 982 return denyAll; 983 } 984 985 /** 986 * @see EJB3SessionFacadeLogic#handleGetSecurityRealm() 987 */ 988 @Override 989 protected String handleGetSecurityRealm() 990 { 991 String securityRealm = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SECURITY_REALM); 992 if (StringUtils.isBlank(securityRealm)) 993 { 994 securityRealm = StringUtils.trimToEmpty( 995 ObjectUtils.toString(this.getConfiguredProperty(EJB3Globals.SECURITY_REALM))); 996 } 997 return securityRealm; 998 } 999 1000 /** 1001 * @see EJB3SessionFacadeLogic#handleIsSecurityEnabled() 1002 */ 1003 @Override 1004 protected boolean handleIsSecurityEnabled() 1005 { 1006 return StringUtils.isNotBlank(this.getSecurityRealm()); 1007 } 1008 1009 /** 1010 * @see EJB3SessionFacadeLogic#handleGetRunAs() 1011 */ 1012 @Override 1013 protected String handleGetRunAs() 1014 { 1015 String runAsRole = null; 1016 DependencyFacade dependency = (DependencyFacade)CollectionUtils.find( 1017 this.getTargetDependencies(), 1018 new Predicate() 1019 { 1020 public boolean evaluate(final Object object) 1021 { 1022 DependencyFacade dependency = (DependencyFacade)object; 1023 return dependency != null 1024 && dependency.getSourceElement() != null 1025 && dependency.getSourceElement() instanceof Role 1026 && dependency.hasStereotype(EJB3Profile.STEREOTYPE_SECURITY_RUNAS); 1027 } 1028 }); 1029 if (dependency != null) 1030 { 1031 Role role = (Role)dependency.getSourceElement(); 1032 runAsRole = role.getName(); 1033 } 1034 return runAsRole; 1035 } 1036 1037 /** 1038 * @see EJB3SessionFacadeLogic#handleGetTransactionManagement() 1039 */ 1040 @Override 1041 protected String handleGetTransactionManagement() 1042 { 1043 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_TRANSACTION_MANAGEMENT); 1044 } 1045 1046 /** 1047 * @see EJB3SessionFacadeLogic#handleIsTransactionManagementBean() 1048 */ 1049 @Override 1050 protected boolean handleIsTransactionManagementBean() 1051 { 1052 return StringUtils.equalsIgnoreCase(getTransactionManagement(), EJB3Globals.TRANSACTION_MANAGEMENT_BEAN); 1053 } 1054 1055 /** 1056 * @see EJB3SessionFacadeLogic#handleGetResourceUserTransactionReferences() 1057 */ 1058 protected Collection handleGetResourceUserTransactionReferences() 1059 { 1060 Collection references = this.getSourceDependencies(); 1061 CollectionUtils.filter( 1062 references, 1063 new Predicate() 1064 { 1065 public boolean evaluate(Object object) 1066 { 1067 DependencyFacade dependency = (DependencyFacade)object; 1068 ModelElementFacade targetElement = dependency.getTargetElement(); 1069 return (targetElement != null 1070 && EJB3SessionFacade.class.isAssignableFrom(targetElement.getClass()) 1071 && dependency.hasStereotype(EJB3Profile.STEREOTYPE_RESOURCE_REF) 1072 && targetElement.hasStereotype(EJB3Profile.STEREOTYPE_USER_TRANSACTION)); 1073 } 1074 }); 1075 return references; 1076 } 1077 1078 /** 1079 * @see EJB3SessionFacadeLogic#handleGetResourceDataSourceReferences() 1080 */ 1081 protected Collection<DependencyFacade> handleGetResourceDataSourceReferences() 1082 { 1083 Collection<DependencyFacade> references = this.getSourceDependencies(); 1084 CollectionUtils.filter( 1085 references, 1086 new Predicate() 1087 { 1088 public boolean evaluate(Object object) 1089 { 1090 DependencyFacade dependency = (DependencyFacade)object; 1091 ModelElementFacade targetElement = dependency.getTargetElement(); 1092 return (targetElement != null 1093 && EJB3SessionFacade.class.isAssignableFrom(targetElement.getClass()) 1094 && dependency.hasStereotype(EJB3Profile.STEREOTYPE_RESOURCE_REF) 1095 && targetElement.hasStereotype(EJB3Profile.STEREOTYPE_DATA_SOURCE)); 1096 } 1097 }); 1098 return references; 1099 } 1100 1101 /** 1102 * @see EJB3SessionFacadeLogic#handleGetMessageDrivenReferences() 1103 */ 1104 protected Collection handleGetMessageDrivenReferences() 1105 { 1106 Collection references = this.getSourceDependencies(); 1107 CollectionUtils.filter(references, new Predicate() 1108 { 1109 public boolean evaluate(Object object) 1110 { 1111 DependencyFacade dependency = (DependencyFacade)object; 1112 ModelElementFacade targetElement = dependency.getTargetElement(); 1113 return (targetElement != null 1114 && targetElement.hasStereotype(EJB3Profile.STEREOTYPE_MESSAGE_DRIVEN)); 1115 } 1116 }); 1117 return references; 1118 } 1119 1120 /** 1121 * @see EJB3SessionFacadeLogic#handleGetInterceptorReferences() 1122 */ 1123 protected Collection<DependencyFacade> handleGetInterceptorReferences() 1124 { 1125 Collection<DependencyFacade> references = this.getSourceDependencies(); 1126 CollectionUtils.filter( 1127 references, 1128 new Predicate() 1129 { 1130 public boolean evaluate(Object object) 1131 { 1132 DependencyFacade dependency = (DependencyFacade)object; 1133 ModelElementFacade targetElement = dependency.getTargetElement(); 1134 return (targetElement != null && 1135 targetElement.hasStereotype(EJB3Profile.STEREOTYPE_INTERCEPTOR)); 1136 } 1137 }); 1138 CollectionUtils.transform( 1139 references, 1140 new Transformer() 1141 { 1142 public Object transform(final Object object) 1143 { 1144 return ((DependencyFacade)object).getTargetElement(); 1145 } 1146 }); 1147 final Collection<DependencyFacade> interceptors = new LinkedHashSet<DependencyFacade>(references); 1148 CollectionUtils.forAllDo( 1149 references, 1150 new Closure() 1151 { 1152 public void execute(Object object) 1153 { 1154 if (object instanceof EJB3InterceptorFacade) 1155 { 1156 interceptors.addAll(((EJB3InterceptorFacade)object).getInterceptorReferences()); 1157 } 1158 } 1159 }); 1160 return interceptors; 1161 } 1162 1163 /** 1164 * @see EJB3SessionFacadeLogic#handleGetNonRunAsRoles() 1165 */ 1166 protected Collection handleGetNonRunAsRoles() 1167 { 1168 Collection roles = this.getTargetDependencies(); 1169 CollectionUtils.filter( 1170 roles, 1171 new Predicate() 1172 { 1173 public boolean evaluate(final Object object) 1174 { 1175 DependencyFacade dependency = (DependencyFacade)object; 1176 return dependency != null 1177 && dependency.getSourceElement() != null 1178 && dependency.getSourceElement() instanceof Role 1179 && !dependency.hasStereotype(EJB3Profile.STEREOTYPE_SECURITY_RUNAS); 1180 } 1181 }); 1182 CollectionUtils.transform( 1183 roles, 1184 new Transformer() 1185 { 1186 public Object transform(final Object object) 1187 { 1188 return ((DependencyFacade)object).getSourceElement(); 1189 } 1190 }); 1191 final Collection allRoles = new LinkedHashSet(roles); 1192 // add all roles which are generalizations of this one 1193 CollectionUtils.forAllDo( 1194 roles, 1195 new Closure() 1196 { 1197 public void execute(final Object object) 1198 { 1199 allRoles.addAll(((Role)object).getAllSpecializations()); 1200 } 1201 }); 1202 return allRoles; 1203 } 1204 1205 /** 1206 * @see EJB3SessionFacadeLogic#handleGetDefaultExceptionName() 1207 */ 1208 @Override 1209 protected String handleGetDefaultExceptionName() 1210 { 1211 String defaultExceptionNamePattern = 1212 (String)this.getConfiguredProperty(SERVICE_DEFAULT_EXCEPTION_NAME_PATTERN); 1213 1214 return MessageFormat.format( 1215 defaultExceptionNamePattern, 1216 StringUtils.trimToEmpty(this.getName())); 1217 } 1218 1219 /** 1220 * @see EJB3SessionFacadeLogic#handleGetFullyQualifiedDefaultExceptionName() 1221 */ 1222 @Override 1223 protected String handleGetFullyQualifiedDefaultExceptionName() 1224 { 1225 StringBuilder fullyQualifiedName = new StringBuilder("RuntimeException"); 1226 if (this.isAllowDefaultServiceException()) 1227 { 1228 fullyQualifiedName = new StringBuilder(); 1229 if (StringUtils.isNotBlank(this.getPackageName())) 1230 { 1231 fullyQualifiedName.append(this.getPackageName()); 1232 fullyQualifiedName.append('.'); 1233 } 1234 fullyQualifiedName.append(this.getDefaultExceptionName()); 1235 } 1236 return fullyQualifiedName.toString(); 1237 } 1238 1239 /** 1240 * @see EJB3SessionFacadeLogic#handleIsAllowDefaultServiceException() 1241 */ 1242 @Override 1243 protected boolean handleIsAllowDefaultServiceException() 1244 { 1245 return Boolean.valueOf( 1246 String.valueOf(this.getConfiguredProperty(ALLOW_DEFAULT_SERVICE_EXCEPTION))).booleanValue(); 1247 } 1248 1249 /** 1250 * @see EJB3SessionFacadeLogic#handleIsListenerEnabled() 1251 */ 1252 @Override 1253 protected boolean handleIsListenerEnabled() 1254 { 1255 return this.hasStereotype(EJB3Profile.STEREOTYPE_LISTENER); 1256 } 1257 1258 /** 1259 * @see EJB3SessionFacadeLogic#handleIsExcludeDefaultInterceptors() 1260 */ 1261 @Override 1262 protected boolean handleIsExcludeDefaultInterceptors() 1263 { 1264 boolean excludeDefault = false; 1265 String excludeDefaultStr = 1266 (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SERVICE_INTERCEPTOR_EXCLUDE_DEFAULT); 1267 if (excludeDefaultStr != null) 1268 { 1269 excludeDefault = BooleanUtils.toBoolean(excludeDefaultStr); 1270 } 1271 return excludeDefault; 1272 } 1273 1274 /** 1275 * @see EJB3SessionFacadeLogic#handleIsClusteringEnabled() 1276 */ 1277 @Override 1278 protected boolean handleIsClusteringEnabled() 1279 { 1280 return BooleanUtils.toBoolean(String.valueOf(this.getConfiguredProperty(SERVICE_ENABLE_CLUSTERING))); 1281 } 1282 1283 /** 1284 * @see EJB3SessionFacadeLogic#handleIsWebServiceEnabled() 1285 */ 1286 @Override 1287 protected boolean handleIsWebServiceEnabled() 1288 { 1289 return (this.hasStereotype(UMLProfile.STEREOTYPE_WEBSERVICE) || this.isWebServiceOperationExists()) && 1290 BooleanUtils.toBoolean(String.valueOf(this.getConfiguredProperty(PROPERTY_WEBSERVICE_ENABLED))); 1291 } 1292 1293 /** 1294 * @see EJB3SessionFacadeLogic#handleIsWebServiceOperationExists() 1295 */ 1296 @Override 1297 protected boolean handleIsWebServiceOperationExists() 1298 { 1299 return CollectionUtils.find( 1300 this.getOperations(), 1301 new Predicate() 1302 { 1303 public boolean evaluate(final Object object) 1304 { 1305 boolean isWebService = false; 1306 final OperationFacade operation = (OperationFacade)object; 1307 if (operation.hasStereotype(UMLProfile.STEREOTYPE_WEBSERVICE_OPERATION)) 1308 { 1309 isWebService = true; 1310 } 1311 return isWebService; 1312 } 1313 }) != null; 1314 } 1315 1316 /** 1317 * @see EJB3SessionFacadeLogic#handleIsSeamComponent() 1318 */ 1319 @Override 1320 protected boolean handleIsSeamComponent() 1321 { 1322 return EJB3MetafacadeUtils.isSeamComponent(this); 1323 } 1324 1325 /** 1326 * @see EJB3SessionFacadeLogic#handleGetSeamComponentScopeType() 1327 */ 1328 @Override 1329 protected String handleGetSeamComponentScopeType() 1330 { 1331 return EJB3MetafacadeUtils.getSeamComponentScopeType(this, this.isStateless()); 1332 } 1333 1334 /** 1335 * @see EJB3SessionFacadeLogic#handleGetSeamComponentName() 1336 */ 1337 @Override 1338 protected String handleGetSeamComponentName() 1339 { 1340 return EJB3MetafacadeUtils.getSeamComponentName(this); 1341 } 1342 1343 /** 1344 * @see EJB3SessionFacadeLogic#handleGetSeamComponentConversionalIfNotBegunOutcome() 1345 */ 1346 @Override 1347 protected String handleGetSeamComponentConversionalIfNotBegunOutcome() 1348 { 1349 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_CONVERSIONAL_IFNOTBEGUNOUTCOME); 1350 } 1351 1352 /** 1353 * @see EJB3SessionFacadeLogic#handleGetSeamComponentIntercept() 1354 */ 1355 @Override 1356 protected String handleGetSeamComponentIntercept() 1357 { 1358 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_INTERCEPT); 1359 } 1360 1361 /** 1362 * @see EJB3SessionFacadeLogic#handleGetSeamComponentJndiName() 1363 */ 1364 @Override 1365 protected String handleGetSeamComponentJndiName() 1366 { 1367 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_JNDI_NAME); 1368 } 1369 1370 /** 1371 * @see EJB3SessionFacadeLogic#handleGetSeamComponentRoleNames() 1372 */ 1373 protected Collection handleGetSeamComponentRoleNames() 1374 { 1375 return this.findTaggedValues(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_ROLE_NAME); 1376 } 1377 1378 /** 1379 * @see EJB3SessionFacadeLogic#handleGetSeamComponentRoleScopeTypes() 1380 */ 1381 protected Collection handleGetSeamComponentRoleScopeTypes() 1382 { 1383 return this.findTaggedValues(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_ROLE_SCOPE_TYPE); 1384 } 1385 1386 /** 1387 * @see EJB3SessionFacadeLogic#handleGetSeamComponentStartupParameters() 1388 */ 1389 @Override 1390 protected String handleGetSeamComponentStartupParameters() 1391 { 1392 Collection depends = this.findTaggedValues(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_STARTUP_DEPENDS); 1393 if(depends.isEmpty()) 1394 { 1395 return null; 1396 } 1397 else 1398 { 1399 StringBuilder buf = new StringBuilder(); 1400 buf.append("(depends = {"); 1401 Iterator it = depends.iterator(); 1402 while(it.hasNext()) 1403 { 1404 String dependency = (String) it.next(); 1405 buf.append("\""); 1406 buf.append(dependency); 1407 buf.append("\""); 1408 if(it.hasNext()) 1409 { 1410 buf.append(", "); 1411 } 1412 } 1413 buf.append("})"); 1414 return buf.toString(); 1415 } 1416 } 1417 1418 /** 1419 * @see EJB3SessionFacadeLogic#handleGetSeamComponentSynchronizedTimeout() 1420 */ 1421 @Override 1422 protected String handleGetSeamComponentSynchronizedTimeout() 1423 { 1424 return (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_SYNCHRONIZED_TIMEOUT); 1425 } 1426 1427 /** 1428 * @see EJB3SessionFacadeLogic#handleIsSeamComponentReadonly() 1429 */ 1430 @Override 1431 protected boolean handleIsSeamComponentReadonly() 1432 { 1433 return BooleanUtils.toBoolean((String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_SEAM_COMPONENT_READONLY)); 1434 } 1435 1436 /** 1437 * @see EJB3SessionFacadeLogic#handleIsSeamComponentStartup() 1438 */ 1439 @Override 1440 protected boolean handleIsSeamComponentStartup() 1441 { 1442 return this.hasStereotype(EJB3Profile.STEREOTYPE_SEAM_COMPONENT_STARTUP); 1443 } 1444 1445 /** 1446 * @see EJB3SessionFacadeLogic#handleIsSeamComponentTransactional() 1447 */ 1448 @Override 1449 protected boolean handleIsSeamComponentTransactional() 1450 { 1451 return this.hasStereotype(EJB3Profile.STEREOTYPE_SEAM_TRANSACTION_TRANSACTIONAL); 1452 } 1453}