java/sql-java-prihlasovani/src/cz/frantovo/jaas/sql/ParametrizovanýRealm.java
author František Kučera <franta-hg@frantovo.cz>
Tue, 07 Feb 2012 18:03:31 +0100
changeset 7 46bb283a674d
permissions -rw-r--r--
uživatelé a skupiny v SQL databázi, parametrizace, hellDesk: #11
     1 package cz.frantovo.jaas.sql;
     2 
     3 import com.sun.appserv.security.AppservRealm;
     4 import com.sun.enterprise.security.auth.realm.BadRealmException;
     5 import com.sun.enterprise.security.auth.realm.NoSuchRealmException;
     6 import java.util.Properties;
     7 
     8 /**
     9  *
    10  * @author Ing. František Kučera (frantovo.cz)
    11  */
    12 public abstract class ParametrizovanýRealm extends AppservRealm {
    13 
    14 	@Override
    15 	protected void init(Properties parametry) throws BadRealmException, NoSuchRealmException {
    16 		super.init(parametry);
    17 		getProperties().putAll(parametry);
    18 		parametrizuj();
    19 	}
    20 
    21 	@Override
    22 	public synchronized void setProperty(String název, String hodnota) {
    23 		super.setProperty(název, hodnota);
    24 		try {
    25 			parametrizuj();
    26 		} catch (BadRealmException e) {
    27 			throw new IllegalArgumentException("Tento parametr nelze nastavit: " + název + " = " + hodnota, e);
    28 		}
    29 	}
    30 
    31 	/**
    32 	 * @param názevParametru který hledáme
    33 	 * @param popis pokud dojde k výjimce, tento popis se v ní objeví
    34 	 * @return hodnota parametru nebo…
    35 	 * @throws BadRealmException … pokud byl parametr nulový nebo po měl oříznutí nulovou délku
    36 	 */
    37 	protected String najdiParametr(String názevParametru, String popis) throws BadRealmException {
    38 		String hodnotaParametru = getProperty(názevParametru);
    39 
    40 		if (hodnotaParametru == null || hodnotaParametru.trim().length() < 1) {
    41 			throw new BadRealmException("Chybí " + popis + " – parametr: " + názevParametru);
    42 		} else {
    43 			return hodnotaParametru;
    44 		}
    45 	}
    46 
    47 	protected abstract void parametrizuj() throws BadRealmException;
    48 }