java/sql-java-prihlasovani/src/cz/frantovo/jaas/sql/ParametrizovanýRealm.java
changeset 7 46bb283a674d
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/java/sql-java-prihlasovani/src/cz/frantovo/jaas/sql/ParametrizovanýRealm.java	Tue Feb 07 18:03:31 2012 +0100
     1.3 @@ -0,0 +1,48 @@
     1.4 +package cz.frantovo.jaas.sql;
     1.5 +
     1.6 +import com.sun.appserv.security.AppservRealm;
     1.7 +import com.sun.enterprise.security.auth.realm.BadRealmException;
     1.8 +import com.sun.enterprise.security.auth.realm.NoSuchRealmException;
     1.9 +import java.util.Properties;
    1.10 +
    1.11 +/**
    1.12 + *
    1.13 + * @author Ing. František Kučera (frantovo.cz)
    1.14 + */
    1.15 +public abstract class ParametrizovanýRealm extends AppservRealm {
    1.16 +
    1.17 +	@Override
    1.18 +	protected void init(Properties parametry) throws BadRealmException, NoSuchRealmException {
    1.19 +		super.init(parametry);
    1.20 +		getProperties().putAll(parametry);
    1.21 +		parametrizuj();
    1.22 +	}
    1.23 +
    1.24 +	@Override
    1.25 +	public synchronized void setProperty(String název, String hodnota) {
    1.26 +		super.setProperty(název, hodnota);
    1.27 +		try {
    1.28 +			parametrizuj();
    1.29 +		} catch (BadRealmException e) {
    1.30 +			throw new IllegalArgumentException("Tento parametr nelze nastavit: " + název + " = " + hodnota, e);
    1.31 +		}
    1.32 +	}
    1.33 +
    1.34 +	/**
    1.35 +	 * @param názevParametru který hledáme
    1.36 +	 * @param popis pokud dojde k výjimce, tento popis se v ní objeví
    1.37 +	 * @return hodnota parametru nebo…
    1.38 +	 * @throws BadRealmException … pokud byl parametr nulový nebo po měl oříznutí nulovou délku
    1.39 +	 */
    1.40 +	protected String najdiParametr(String názevParametru, String popis) throws BadRealmException {
    1.41 +		String hodnotaParametru = getProperty(názevParametru);
    1.42 +
    1.43 +		if (hodnotaParametru == null || hodnotaParametru.trim().length() < 1) {
    1.44 +			throw new BadRealmException("Chybí " + popis + " – parametr: " + názevParametru);
    1.45 +		} else {
    1.46 +			return hodnotaParametru;
    1.47 +		}
    1.48 +	}
    1.49 +
    1.50 +	protected abstract void parametrizuj() throws BadRealmException;
    1.51 +}