[jboss-dev-forums] [Design of Security on JBoss] - Re: Security Injection in AS5

sguilhen@redhat.com do-not-reply at jboss.com
Thu May 1 17:24:25 EDT 2008


Thanks Scott, the start/stop methods worked just fine.

I'm facing a problem with the security deployment now. I've written a test case to test the metadata factory and it is failing when the deployment annotations are processed.

Relevant code snippets:

1- ApplicationPolicyFactoryTestCase:

  | public class ApplicationPolicyFactoryTestCase extends MicrocontainerTest
  | {
  | 
  |    /**
  |     * 
  |     * @param name
  |     */
  |    public ApplicationPolicyFactoryTestCase(String name)
  |    {
  |       super(name);
  |    }
  | 
  |    @Override
  |    protected void setUp() throws Exception
  |    {
  |         SingletonSchemaResolverFactory.getInstance().addJaxbSchema(
  |              "urn:jboss:security-beans:1.0",     "org.jboss.security.microcontainer.beans.metadata.SecurityDeployment");
  |       super.setUp();
  |    }
  |    ....
  | }
  | 

It calls the addJaxbSchema before deploying the test configuration file (later when I get this working I'll add the namespace directly in the SingletonSchemaResolverFactory).

2-ApplicationPolicyFactoryTestCase.xml

  | ?xml version="1.0" encoding="UTF-8"?>
  | 
  | <deployment xmlns="urn:jboss:bean-deployer:2.0">
  | 
  |    <application-policy xmlns="urn:jboss:security-beans:1.0" name="TestPolicy">
  |       <authentication>
  |          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required"/>
  |       </authentication>
  |    </application-policy>
  | </deployment>
  | 

3- The SecurityDeployment (Similar to the AOPDeployment):


  | @JBossXmlSchema(namespace = "urn:jboss:security-beans:1.0", elementFormDefault = XmlNsForm.QUALIFIED)
  | @XmlRootElement(name = "policy")
  | @XmlType(propOrder = {"annotations", "classLoader", "beanFactories", "create", "start", "stop", "destroy", "aliases"})
  | public class SecurityDeployment extends AbstractKernelDeployment
  | {
  | 
  |    private static final long serialVersionUID = 1L;
  | 
  |    @Override
  |    @XmlAnyElement
  |    @XmlElements({@XmlElement(name = "application-policy", type = ApplicationPolicyBeanMetaDataFactory.class)})
  |    public void setBeanFactories(List<BeanMetaDataFactory> beanFactories)
  |    {
  |       super.setBeanFactories(beanFactories);
  |    }
  | }
  | 

When I try to run the ApplicationPolicyFactoryTestCase, the setup() method fails when deploying the ApplicationPolicyFactoryTestCase.xml with the following error:


  | org.jboss.xb.binding.JBossXBException: Failed to parse source: file:/opt/workspace/Security-JBossSX/security-mc-int/target/test-classes/org/jboss/test/security/microcontainer/beans/ApplicationPolicyFactoryTestCase.xml at 5,79
  |         at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:177)
  |         at org.jboss.xb.binding.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:139)
  |         at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.deploy(BasicXMLDeployer.java:147)
  |         at org.jboss.test.kernel.junit.MicrocontainerTestDelegate.deploy(MicrocontainerTestDelegate.java:294)
  |         at org.jboss.test.kernel.junit.MicrocontainerTestDelegate.deploy(MicrocontainerTestDelegate.java:438)
  |         at org.jboss.test.kernel.junit.MicrocontainerTestDelegate.setUp(MicrocontainerTestDelegate.java:83)
  |         at org.jboss.test.AbstractTestSetup.setUp(AbstractTestSetup.java:63)
  |         at org.jboss.test.AbstractTestCaseWithSetup.setUp(AbstractTestCaseWithSetup.java:103)
  |         at org.jboss.test.kernel.junit.MicrocontainerTest.setUp(MicrocontainerTest.java:82)
  |         at org.jboss.test.security.microcontainer.beans.ApplicationPolicyBeansTestCase.setUp(ApplicationPolicyBeansTestCase.java:59)
  |         at junit.framework.TestCase.runBare(TestCase.java:125)
  |         at junit.framework.TestResult$1.protect(TestResult.java:106)
  |         at junit.framework.TestResult.runProtected(TestResult.java:124)
  |         at junit.framework.TestResult.run(TestResult.java:109)
  |         .....
  | Caused by: java.lang.RuntimeException: The type of the attribute whenRequired must be simple or complex with a value adapter: org.jboss.xb.binding.sunday.unmarshalling.TypeBinding at 19113f8[null]
  | at org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData.whenRequiredState
  | at org.jboss.beans.metadata.plugins.AbstractConstructorMetaData.factory
  | at org.jboss.beans.metadata.plugins.AbstractBeanMetaData.constructor
  | at org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData.classLoader
  | at org.jboss.security.microcontainer.beans.metadata.SecurityDeployment.classLoader
  | at org.jboss.security.microcontainer.beans.metadata.SecurityDeployment
  | 

This happens during the @XmlType annotation processing and I really don't know what I should do to avoid this problem. Any thoughts/ideas?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4148212#4148212

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4148212



More information about the jboss-dev-forums mailing list