/* * Copyright 2005-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wamblee.security.authorization; import java.util.ArrayList; import java.util.Map; import java.util.TreeMap; /** * Operation registry implementation. This implementation ignores the * distinction between different types of resources and simply assumes that * every operation is applicable to every type of resource. * * @author Erik Brakkee */ public class DefaultOperationRegistry implements OperationRegistry { private Map operations; /** * Creates a new DefaultOperationRegistry object. * */ public DefaultOperationRegistry(Operation[] aOperations) { operations = new TreeMap(); for (Operation operation : aOperations) { operations.put(operation.getName(), operation); } } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.OperationRegistry#getOperations(java * .lang.Class) */ public Operation[] getOperations(Class aResourceClass) { return operations.values().toArray(new Operation[0]); } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.OperationRegistry#encode(org.wamblee * .security.authorization.Operation[]) */ public String encode(Operation[] aOperations) { StringBuffer buffer = new StringBuffer(); for (Operation operation : aOperations) { if (buffer.length() > 0) { buffer.append(','); } buffer.append(operation.getName()); } return buffer.toString(); } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.OperationRegistry#decode(java.lang * .Class, java.lang.String) */ public Operation[] decode(Class aResourceClass, String aOperationsString) { return decode(aOperationsString); } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.OperationRegistry#decode(java.lang * .String) */ public Operation[] decode(String aOperationsString) { if (aOperationsString.length() == 0) { return new Operation[0]; } String[] names = aOperationsString.split(","); ArrayList result = new ArrayList(); for (String name : names) { Operation operation = operations.get(name); if (operation == null) { throw new IllegalArgumentException("Unknown operation '" + name + "'"); } result.add(operation); } return result.toArray(new Operation[0]); } }