/* | |
* Licensed to the Apache Software Foundation (ASF) under one or more | |
* contributor license agreements. See the NOTICE file distributed with | |
* this work for additional information regarding copyright ownership. | |
* The ASF licenses this file to You 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.apache.harmony.security.tests.support.acl; | |
import java.security.Principal; | |
import java.security.acl.*; | |
import java.util.Enumeration; | |
import java.util.Vector; | |
/** | |
* Additional class for verification AclEntry interface | |
*/ | |
public class AclEntryImpl implements AclEntry { | |
private Principal user; | |
private Vector permissionSet; | |
private boolean negative; | |
public AclEntryImpl(Principal principal) { | |
user = null; | |
permissionSet = new Vector(10, 10); | |
negative = false; | |
user = principal; | |
} | |
public AclEntryImpl() { | |
user = null; | |
permissionSet = new Vector(10, 10); | |
negative = false; | |
} | |
public boolean setPrincipal(Principal principal) { | |
if(user != null) { | |
return false; | |
} else { | |
user = principal; | |
return true; | |
} | |
} | |
public void setNegativePermissions() { | |
negative = true; | |
} | |
public boolean isNegative() { | |
return negative; | |
} | |
public boolean addPermission(Permission permission) { | |
if(permissionSet.contains(permission)) { | |
return false; | |
} else { | |
permissionSet.addElement(permission); | |
return true; | |
} | |
} | |
public boolean removePermission(Permission permission) { | |
return permissionSet.removeElement(permission); | |
} | |
public boolean checkPermission(Permission permission) { | |
return permissionSet.contains(permission); | |
} | |
public Enumeration permissions() { | |
return permissionSet.elements(); | |
} | |
public String toString() { | |
StringBuffer stringbuffer = new StringBuffer(); | |
if(negative) | |
stringbuffer.append("-"); | |
else | |
stringbuffer.append("+"); | |
if(user instanceof Group) | |
stringbuffer.append("Group."); | |
else | |
stringbuffer.append("User."); | |
stringbuffer.append((new StringBuilder()).append(user).append("=").toString()); | |
Enumeration enumeration = permissions(); | |
do { | |
if(!enumeration.hasMoreElements()) | |
break; | |
Permission permission = (Permission)enumeration.nextElement(); | |
stringbuffer.append(permission); | |
if(enumeration.hasMoreElements()) | |
stringbuffer.append(","); | |
} while(true); | |
return new String(stringbuffer); | |
} | |
public synchronized Object clone() { | |
AclEntryImpl aclentryimpl = new AclEntryImpl(user); | |
aclentryimpl.permissionSet = (Vector)permissionSet.clone(); | |
aclentryimpl.negative = negative; | |
return aclentryimpl; | |
} | |
public Principal getPrincipal() { | |
return user; | |
} | |
} |