de.tsl2.nano.serviceaccess.aas.principal.Tenancy Maven / Gradle / Ivy
Show all versions of tsl2.nano.serviceaccess Show documentation
/*
* @(#)SamplePrincipal.java 1.4 00/01/11
*
* Copyright 2000-2002 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* -Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* -Redistribution in binary form must reproduct the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any
* kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
* WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
* EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
* DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
* RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
* ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE
* FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
* SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF
* THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that Software is not designed, licensed or
* intended for use in the design, construction, operation or
* maintenance of any nuclear facility.
*/
package de.tsl2.nano.serviceaccess.aas.principal;
import java.security.Principal;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Default;
import org.simpleframework.xml.DefaultType;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Namespace;
/**
*
* This class implements the Principal
interface and represents a tenancy (german: Mandant).
*
* @see java.security.Principal
* @see javax.security.auth.Subject
*/
@Namespace(reference = "permissions.xsd")
@Default(value = DefaultType.FIELD, required = false)
public class Tenancy implements Principal, java.io.Serializable {
private static final long serialVersionUID = 1L;
/**
* @serial
*/
@Attribute
private String name;
@Element(required=false)
private Object data;
public Tenancy() {
this("", null);
}
/**
* Create a Principal with a tenancy.
*
* @param name the tenancy for this user.
*
* @exception NullPointerException if the name
is null
.
*/
public Tenancy(String name) {
this(name, null);
}
/**
* constructor
* @param name
* @param data
*/
public Tenancy(String name, Object data) {
if (name == null) {
throw new NullPointerException("tenancy-name must not be null!");
}
this.name = name;
this.data = data;
}
/**
* Return the username for this Principal
.
*
* @return the username for this Principal
*/
@Override
public String getName() {
return name;
}
public Object getData() {
return data;
}
/**
* Return a string representation of this Principal
.
*
* @return a string representation of this Principal
.
*/
@Override
public String toString() {
return ("Tenancy: " + name);
}
/**
* Compares the specified Object with this Principal
for equality. Returns true if the given object is
* also a Principal
and the two Principals have the same username.
*
* @param o Object to be compared for equality with this Principal
.
*
* @return true if the specified Object is equal equal to this Principal
.
*/
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (this == o) {
return true;
}
if (!(o instanceof Tenancy)) {
return false;
}
final Tenancy that = (Tenancy) o;
if (this.getName().equals(that.getName())) {
return true;
}
return false;
}
/**
* Return a hash code for this Principal
.
*
* @return a hash code for this Principal
.
*/
@Override
public int hashCode() {
return name.hashCode();
}
}