X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2FSvcConfig.java;fp=src%2Fdolda%2Fjsvc%2FSvcConfig.java;h=0000000000000000000000000000000000000000;hb=b5f270350bfadea58c6b14516422df00202e9d46;hp=d200aa3026aae454a0f9c290c8782c78a2440467;hpb=a0b186f8f8342791c1d65ca8f04118b0d73d5bb8;p=jsvc.git diff --git a/src/dolda/jsvc/SvcConfig.java b/src/dolda/jsvc/SvcConfig.java deleted file mode 100644 index d200aa3..0000000 --- a/src/dolda/jsvc/SvcConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -package dolda.jsvc; - -import java.util.*; - -public class SvcConfig { - public static class Param { - private T value; - private final Object id = new Object(); - - public Param(T def) { - this.value = def; - } - - @SuppressWarnings("unchecked") - public T get() { - if(Thread.currentThread() instanceof RequestThread) { - Map props = RequestThread.request().props(); - if(props.containsKey(id)) { - /* This can very well actually be set to something - * of the wrong type, but since the result would, - * obviously, be a ClassCastException either way, - * this way is at least the more convenient. */ - return((T)props.get(id)); - } - } - return(value); - } - } - - public static Responder let(final Responder next, Object... params) { - final Map values = new HashMap(); - if((params.length % 2) != 0) - throw(new IllegalArgumentException("SvcConfig.let takes only an even number of parameters")); - for(int i = 0; i < params.length; i += 2) - values.put((Param)params[i], params[i + 1]); - return(new Responder() { - public void respond(Request req) { - final Map old = new HashMap(); - { - Map props = req.props(); - for(Map.Entry val : values.entrySet()) { - Param p = val.getKey(); - if(props.containsKey(p.id)) - old.put(p, props.get(p.id)); - props.put(p.id, val.getValue()); - } - } - try { - next.respond(req); - } finally { - Map props = req.props(); - for(Map.Entry val : values.entrySet()) { - Param p = val.getKey(); - if(old.containsKey(p)) { - props.put(p.id, old.get(p)); - } else { - props.remove(p.id); - } - } - } - } - }); - } -}