From: Vance K. <va...@us...> - 2006-01-17 04:07:22
|
User: vancek Date: 06/01/16 20:07:16 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3SessionOperationFacadeLogicImpl.java Log: changed getRolesAllowed to used actors for roles, added getNonRunAsRoles method Revision Changes Path 1.5 +77 -16 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3SessionOperationFacadeLogicImpl.java Index: EJB3SessionOperationFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3SessionOperationFacadeLogicImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -w -r1.4 -r1.5 --- EJB3SessionOperationFacadeLogicImpl.java 10 Jan 2006 08:16:32 -0000 1.4 +++ EJB3SessionOperationFacadeLogicImpl.java 17 Jan 2006 04:07:16 -0000 1.5 @@ -1,7 +1,18 @@ package org.andromda.cartridges.ejb3.metafacades; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedHashSet; + import org.andromda.cartridges.ejb3.EJB3Globals; import org.andromda.cartridges.ejb3.EJB3Profile; +import org.andromda.metafacades.uml.DependencyFacade; +import org.andromda.metafacades.uml.Role; +import org.andromda.metafacades.uml.Service; +import org.apache.commons.collections.Closure; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; +import org.apache.commons.collections.Transformer; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; @@ -112,25 +123,23 @@ */ protected String handleGetRolesAllowed() { - String rolesAllowedStr = null; - final String tmpRoles = (String)this.findTaggedValue(EJB3Profile.TAGGEDVALUE_EJB_SECURITY_ROLES_ALLOWED); - if (StringUtils.isNotBlank(tmpRoles)) - { - StringBuffer rolesAllowed = new StringBuffer(); - final String[] roles = StringUtils.split(tmpRoles, ','); - for (int i = 0; i < roles.length; i++) + StringBuffer rolesAllowed = null; + String separator = ""; + + for (final Iterator iter = this.getNonRunAsRoles().iterator(); iter.hasNext(); ) { - if (i > 0) + if (rolesAllowed == null) { - rolesAllowed.append(", "); + rolesAllowed = new StringBuffer(); } + rolesAllowed.append(separator); + Role role = (Role)iter.next(); rolesAllowed.append('"'); - rolesAllowed.append(roles[i]); + rolesAllowed.append(role.getName()); rolesAllowed.append('"'); + separator = ", "; } - rolesAllowedStr = rolesAllowed.toString(); - } - return rolesAllowedStr; + return rolesAllowed != null ? rolesAllowed.toString() : null; } /** @@ -204,4 +213,56 @@ return throwsClause.toString(); } + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationFacadeLogic#handleGetNonRunAsRoles() + */ + protected Collection handleGetNonRunAsRoles() + { + final Collection roles = new LinkedHashSet(); + if (this.getOwner() instanceof EJB3SessionFacade) + { + roles.addAll(((EJB3SessionFacade)this.getOwner()).getNonRunAsRoles()); + } + Collection operationRoles = this.getTargetDependencies(); + CollectionUtils.filter( + operationRoles, + new Predicate() + { + public boolean evaluate(Object object) + { + DependencyFacade dependency = (DependencyFacade)object; + return dependency != null + && dependency.getSourceElement() != null + && Role.class.isAssignableFrom(dependency.getSourceElement().getClass()) + && !dependency.hasStereotype(EJB3Profile.STEREOTYPE_SECURITY_RUNAS); + } + }); + CollectionUtils.transform( + operationRoles, + new Transformer() + { + public Object transform(Object object) + { + return ((DependencyFacade)object).getSourceElement(); + } + }); + roles.addAll(operationRoles); + final Collection allRoles = new LinkedHashSet(roles); + + // add all roles which are specializations of this one + CollectionUtils.forAllDo( + roles, + new Closure() + { + public void execute(Object object) + { + if (object instanceof Role) + { + allRoles.addAll(((Role)object).getAllSpecializations()); + } + } + }); + return allRoles; + } + } \ No newline at end of file |