package de.axone.cache.ng; import java.io.Serializable; import de.axone.cache.ng.CacheNG.Realm; public class RealmImpl<K,O> implements CacheNG.Realm<K,O>, Serializable { private static final long serialVersionUID = 1L; protected final String realm; public RealmImpl( String realm ){ assert realm != null; this.realm = realm; } @Override public String name() { return realm; } @Override public String realm() { return realm; } @Override public String [] config() { return new String[]{ realm }; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ( ( realm == null ) ? 0 : realm.hashCode() ); return result; } @Override public boolean equals( Object obj ) { if( this == obj ) return true; if( obj == null ) return false; if( !( obj instanceof RealmImpl ) ) return false; RealmImpl<?,?> other = (RealmImpl<?,?>) obj; if( realm == null ) { if( other.realm != null ) return false; } else if( !realm.equals( other.realm ) ) return false; return true; } @Override public String toString(){ return name(); } @Override public int compareTo( Realm<?, ?> o ) { String [] A = config(); String [] B = o.config(); for( int i=0; i<Math.min( A.length, B.length ); i++ ){ String a = A[ i ]; String b = B[ i ]; if( a == b ) continue; if( a == null ) return -1; if( b == null ) return 1; int result = a.compareTo( b ); if( result != 0 ) return result; } return 0; } }