All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java.org.jboss.security.acl.config.ACLEntryHolder Maven / Gradle / Ivy

/*
 * 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.security.acl.config;

import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.QName;

import org.jboss.logging.Logger;
import org.jboss.security.acl.ACLEntry;
import org.jboss.security.acl.ACLEntryImpl;
import org.jboss.security.acl.BasicACLPermission;
import org.jboss.security.acl.CompositeACLPermission;
import org.jboss.security.identity.Identity;
import org.jboss.security.identity.plugins.IdentityFactory;
import org.jboss.xb.binding.GenericValueContainer;

/**
 * 

* A container for creating {@code ACLEntry} objects when a jboss-acl configuration is parsed by JBoss XB. *

* * @author Stefan Guilhen */ public class ACLEntryHolder implements GenericValueContainer { private static Logger logger = Logger.getLogger(ACLEntryHolder.class); private Identity identity; private CompositeACLPermission permission; /* * (non-Javadoc) * * @see org.jboss.xb.binding.GenericValueContainer#addChild(javax.xml.namespace.QName, java.lang.Object) */ public void addChild(QName name, Object value) { logger.debug("addChild: name=" + name + ", value=" + value); if ("identity-name".equals(name.getLocalPart())) { String identityName = (String) value; this.identity = this.getIdentityFromString(identityName); } else if ("permissions".equals(name.getLocalPart())) { String permissions = (String) value; this.permission = this.getPermissionsFromString(permissions); } } /* * (non-Javadoc) * * @see org.jboss.xb.binding.GenericValueContainer#instantiate() */ public Object instantiate() { return new ACLEntryImpl(this.permission, this.identity); } /* * (non-Javadoc) * * @see org.jboss.xb.binding.GenericValueContainer#getTargetClass() */ public Class getTargetClass() { return ACLEntry.class; } /** *

* Creates an {@code Identity} object from the specified {@code identityName} parameter. *

* * @param identityName a {@code String} that represents the identity to be built. * @return the constructed {@code Identity} instance, or {@code null} if the {@code Identity} object cannot be built. */ private Identity getIdentityFromString(String identityName) { try { return IdentityFactory.createIdentity(identityName); } catch (Exception e) { logger.debug("Exception caught while constructing Identity object", e); return null; } } /** *

* Creates a {@code CompositeACLPermission} from the specified {@code permissionString} parameter. *

* * @param permissionString a {@code String} containing the permissions assigned to the identity, separated by a comma * (e.g. {@code CREATE,READ,UPDATE}). * @return the constructed {@code CompositeACLPermission} object. */ private CompositeACLPermission getPermissionsFromString(String permissionString) { List permissions = new ArrayList(); if (permissionString != null) { // extract each permission from the permission string. String[] elements = permissionString.split(","); for (String element : elements) { try { permissions.add(BasicACLPermission.valueOf(element)); } catch (RuntimeException re) { logger.debug("No BasicACLPermission named " + element + " found", re); } } } return new CompositeACLPermission(permissions.toArray(new BasicACLPermission[permissions.size()])); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy