[jboss-cvs] JBossAS SVN: r80798 - in projects/ejb3/trunk: security/src/main/java/org/jboss/ejb3/security/bridge and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 11 11:09:03 EST 2008
Author: wolfc
Date: 2008-11-11 11:09:03 -0500 (Tue, 11 Nov 2008)
New Revision: 80798
Added:
projects/ejb3/trunk/security/src/main/java/org/jboss/ejb3/security/bridge/RunAsMetaDataBridge.java
projects/ejb3/trunk/security/src/test/java/org/
projects/ejb3/trunk/security/src/test/java/org/jboss/
projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/
projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/
projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/
projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/runas/
projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/runas/RunAsMetaDataBridgeUnitTest.java
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java
Log:
EJBTHREE-1578: created RunAsMetaDataBridge
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java 2008-11-11 16:08:11 UTC (rev 80797)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/aop/BeanContainer.java 2008-11-11 16:09:03 UTC (rev 80798)
@@ -39,6 +39,7 @@
import org.jboss.ejb3.interceptors.metadata.InterceptorMetaDataBridge;
import org.jboss.ejb3.metadata.MetaDataBridge;
import org.jboss.ejb3.metadata.annotation.AnnotationRepositoryToMetaData;
+import org.jboss.ejb3.security.bridge.RunAsMetaDataBridge;
import org.jboss.ejb3.security.bridge.SecurityDomainMetaDataBridge;
import org.jboss.ejb3.tx.metadata.ApplicationExceptionComponentMetaDataLoaderFactory;
import org.jboss.ejb3.tx.metadata.ApplicationExceptionMetaDataBridge;
@@ -196,6 +197,7 @@
appExceptionBridges.add(new ApplicationExceptionMetaDataBridge());
annotations.addComponentMetaDataLoaderFactory(new ApplicationExceptionComponentMetaDataLoaderFactory(appExceptionBridges));
+ annotations.addMetaDataBridge(new RunAsMetaDataBridge());
//Add a security domain bridge
annotations.addMetaDataBridge(new SecurityDomainMetaDataBridge());
// Ensure that an @Clustered annotation is visible to AOP if the XML says the bean is clustered.
Added: projects/ejb3/trunk/security/src/main/java/org/jboss/ejb3/security/bridge/RunAsMetaDataBridge.java
===================================================================
--- projects/ejb3/trunk/security/src/main/java/org/jboss/ejb3/security/bridge/RunAsMetaDataBridge.java (rev 0)
+++ projects/ejb3/trunk/security/src/main/java/org/jboss/ejb3/security/bridge/RunAsMetaDataBridge.java 2008-11-11 16:09:03 UTC (rev 80798)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.security.bridge;
+
+import java.lang.annotation.Annotation;
+
+import javax.annotation.security.RunAs;
+
+import org.jboss.ejb3.annotation.impl.RunAsImpl;
+import org.jboss.ejb3.metadata.MetaDataBridge;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+import org.jboss.metadata.spi.signature.DeclaredMethodSignature;
+
+/**
+ * Convert
+ * <security-identity>
+ * <run-as>
+ * <role-name>...</role-name>
+ * </run-as>
+ * </security-identity>
+ * to an annotation.
+ *
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class RunAsMetaDataBridge implements MetaDataBridge<JBossEnterpriseBeanMetaData>
+{
+ public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData metaData, ClassLoader classLoader)
+ {
+ if(annotationClass != RunAs.class)
+ return null;
+
+ if(metaData == null)
+ return null;
+
+ SecurityIdentityMetaData securityIdentity = metaData.getSecurityIdentity();
+ if(securityIdentity == null)
+ return null;
+
+ RunAsMetaData runAs = securityIdentity.getRunAs();
+ if(runAs == null)
+ return null;
+
+ // role-name is mandated by the xsd
+ return annotationClass.cast(new RunAsImpl(runAs.getRoleName()));
+ }
+
+ public <A extends Annotation> A retrieveAnnotation(Class<A> annotationClass, JBossEnterpriseBeanMetaData metaData, ClassLoader classLoader, DeclaredMethodSignature method)
+ {
+ // A RunAs can only appear on a class
+ return null;
+ }
+}
Added: projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/runas/RunAsMetaDataBridgeUnitTest.java
===================================================================
--- projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/runas/RunAsMetaDataBridgeUnitTest.java (rev 0)
+++ projects/ejb3/trunk/security/src/test/java/org/jboss/ejb3/security/test/runas/RunAsMetaDataBridgeUnitTest.java 2008-11-11 16:09:03 UTC (rev 80798)
@@ -0,0 +1,98 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.security.test.runas;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import javax.annotation.security.RunAs;
+
+import org.jboss.ejb3.annotation.SecurityDomain;
+import org.jboss.ejb3.security.bridge.RunAsMetaDataBridge;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.javaee.spec.EmptyMetaData;
+import org.jboss.metadata.javaee.spec.RunAsMetaData;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class RunAsMetaDataBridgeUnitTest
+{
+ private static ClassLoader classLoader = null; // laziness
+ private static RunAsMetaDataBridge bridge;
+
+ @BeforeClass
+ public static void beforeClass()
+ {
+ bridge = new RunAsMetaDataBridge();
+ }
+
+ @Test
+ public void testNoSecurityIdentity()
+ {
+ JBossEnterpriseBeanMetaData bean = new JBossSessionBeanMetaData();
+ RunAs runAs = bridge.retrieveAnnotation(RunAs.class, bean, classLoader);
+ assertNull(runAs);
+ }
+
+ @Test
+ public void testOtherAnnotation()
+ {
+ RunAsMetaData runAsMetaData = new RunAsMetaData();
+ runAsMetaData.setRoleName("test");
+ SecurityIdentityMetaData securityIdentity = new SecurityIdentityMetaData();
+ securityIdentity.setRunAs(runAsMetaData);
+ JBossEnterpriseBeanMetaData bean = new JBossSessionBeanMetaData();
+ bean.setSecurityIdentity(securityIdentity);
+ SecurityDomain securityDomain = bridge.retrieveAnnotation(SecurityDomain.class, bean, classLoader);
+ assertNull(securityDomain);
+ }
+
+ @Test
+ public void testRunAs()
+ {
+ RunAsMetaData runAsMetaData = new RunAsMetaData();
+ runAsMetaData.setRoleName("test");
+ SecurityIdentityMetaData securityIdentity = new SecurityIdentityMetaData();
+ securityIdentity.setRunAs(runAsMetaData);
+ JBossEnterpriseBeanMetaData bean = new JBossSessionBeanMetaData();
+ bean.setSecurityIdentity(securityIdentity);
+ RunAs runAs = bridge.retrieveAnnotation(RunAs.class, bean, classLoader);
+ assertEquals("test", runAs.value());
+ }
+
+ @Test
+ public void testUseCallerIdentity()
+ {
+ SecurityIdentityMetaData securityIdentity = new SecurityIdentityMetaData();
+ securityIdentity.setUseCallerIdentity(new EmptyMetaData());
+ JBossEnterpriseBeanMetaData bean = new JBossSessionBeanMetaData();
+ bean.setSecurityIdentity(securityIdentity);
+ RunAs runAs = bridge.retrieveAnnotation(RunAs.class, bean, classLoader);
+ assertNull(runAs);
+ }
+}
More information about the jboss-cvs-commits
mailing list