/*************************************************************************
/* ProtectionDomain.java -- A security domain
/*
/* Copyright (c) 1998 Free Software Foundation, Inc.
/* Written by Aaron M. Renn (arenn@urbanophile.com)
/*
/* This library is free software; you can redistribute it and/or modify
/* it under the terms of the GNU Library General Public License as published
/* by the Free Software Foundation, either version 2 of the License, or
/* (at your option) any later verion.
/*
/* This library 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 Library General Public License for more details.
/*
/* You should have received a copy of the GNU Library General Public License
/* along with this library; if not, write to the Free Software Foundation
/* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA
/*************************************************************************/
package java.security;
/**
* This class represents a group of classes, along with the permissions
* they are granted. The classes are identified by a CodeSource.
* Thus, any class loaded from the specified CodeSource is
* treated as part of this domain. The set of permissions is represented
* by a PermissionCollection.
*
* Every class in the system will belong to one and only one
* ProtectionDomain.
*
* @version 0.0
*
* @author Aaron M. Renn (arenn@urbanophile.com)
*/
public class ProtectionDomain
{
/*************************************************************************/
/*
* Class Variables
*/
private static final String linesep = System.getProperty("line.separator");
/*************************************************************************/
/*
* Instance Variables
*/
/**
* This is the CodeSource for this protection domain
*/
private CodeSource code_source;
/**
* This is the set of permissions granted to this domain
*/
private PermissionCollection perms;
/*************************************************************************/
/*
* Constructors
*/
/**
* This method initializes a new instance of ProtectionDomain
* representing the specified CodeSource and permission set.
*
* @param code_source The CodeSource for this domain
* @param perms The permission set for this domain
*/
public
ProtectionDomain(CodeSource code_source, PermissionCollection perms)
{
this.code_source = code_source;
this.perms = perms;
}
/*************************************************************************/
/*
* Instance Methods
*/
/**
* This method returns the CodeSource for this domain.
*
* @return This domain's CodeSource.
*/
public final CodeSource
getCodeSource()
{
return(code_source);
}
/*************************************************************************/
/**
* This method returns the set of permissions granted to this domain.
*
* @return The permission set for this domain
*/
public final PermissionCollection
getPermissions()
{
return(perms);
}
/*************************************************************************/
/**
* This method tests whether or not the specified Permission is
* implied by the set of permissions granted to this domain.
*
* @param perm The Permission to test.
*
* @return true if the specified Permission is implied for this domain, false otherwise.
*/
public boolean
implies(Permission perm)
{
PermissionCollection pc = getPermissions();
if (pc == null)
return(false);
return(pc.implies(perm));
}
/*************************************************************************/
/**
* This method returns a String representation of this
* object. It will print the CodeSource and
* permission set associated with this domain.
*
* @return A String representation of this object.
*/
public String
toString()
{
StringBuffer sb = new StringBuffer("");
sb.append(super.toString() + " (" + linesep);
sb.append(code_source.toString());
sb.append(perms.toString());
sb.append(")" + linesep);
return(sb.toString());
}
} // class ProtectionDomain