From 990e50c61d1b92dbd0e063fe6811783c2d479e42 Mon Sep 17 00:00:00 2001 From: clemenso Date: Tue, 28 Oct 2008 10:56:44 +0000 Subject: ProcessingContext removed old background imgs git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@125 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../egiz/bku/binding/BindingProcessorManager.java | 172 +++++++++++---------- .../bku/binding/BindingProcessorManagerImpl.java | 153 +++++++++++------- .../at/gv/egiz/bku/binding/ProcessingContext.java | 39 +++++ 3 files changed, 219 insertions(+), 145 deletions(-) create mode 100644 bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java (limited to 'bkucommon/src') diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java index aaf81e51..9cad95a4 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java @@ -14,92 +14,94 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package at.gv.egiz.bku.binding; - +package at.gv.egiz.bku.binding; + import java.net.MalformedURLException; -import java.util.Locale; -import java.util.Set; - -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.stal.STALFactory; - -/** - * Central player that handles the protocol binding. - * - * @author wbauer - * - */ -public interface BindingProcessorManager { - - /** - * FactoryMethod creating a new BindingProcessor object. - * The created binding processor must be passed to the process method to execute. - * - * @param urlString - * the source url - * @param aSessionId - * optional an external sessionId (e.g. http session) could be - * provided. This parameter may be null. - * @param locale the locale used for user interaction, may be null - */ - public BindingProcessor createBindingProcessor(String urlString, - String aSessionId, Locale locale) throws MalformedURLException; - - /** - * FactoryMethod creating a new BindingProcessor object. - * The created binding processor must be passed to the process method to execute. - * - * @param protcol - * the source url - * @param aSessionId - * optional an external sessionId (e.g. http session) could be - * provided. This parameter may be null. - */ - public BindingProcessor createBindingProcessor(String urlString, - String aSessionId) throws MalformedURLException; - - - /** - * Gets the binding processor with a certain id. The binding processor must be passed to the - * process method before it is managed and thus returned by this method. - * @param aId must not be null - * @return null if the binding processor was not "processed" before. - */ - public BindingProcessor getBindingProcessor(Id aId); - - /** - * Sets the STAL factory that is used for creating STAL objects that are used by BindingProcessor objects. - * For each new BindingProcessor a new STAL object is created. - * @param aStalFactory the factory to be used. Must not be null. - */ - public void setSTALFactory(STALFactory aStalFactory); - - /** - * Sets the invoker to be used. - * @param invoker - */ - public void setSLCommandInvoker(SLCommandInvoker invoker); - - /** - * Schedules the provided binding processor for processing and immediately returns. - * - * @param aBindingProcessor - */ - public void process(BindingProcessor aBindingProcessor); - - /** - * Removes a formerly added (by calling the process method) binding processor. - * @param bindingProcessor must not be null - */ - public void removeBindingProcessor(Id sessionId); - - /** - * A set of all managed binding processors. - * @return - */ - public Set getManagedIds(); - +import java.util.Locale; +import java.util.Set; + +import at.gv.egiz.bku.slcommands.SLCommandInvoker; +import at.gv.egiz.stal.STALFactory; + +/** + * Central player that handles the protocol binding. + * + * @author wbauer + * + */ +public interface BindingProcessorManager { + + /** + * FactoryMethod creating a new BindingProcessor object. + * The created binding processor must be passed to the process method to execute. + * + * @param urlString + * the source url + * @param aSessionId + * optional an external sessionId (e.g. http session) could be + * provided. This parameter may be null. + * @param locale the locale used for user interaction, may be null + */ + public BindingProcessor createBindingProcessor(String urlString, + String aSessionId, Locale locale) throws MalformedURLException; + + /** + * FactoryMethod creating a new BindingProcessor object. + * The created binding processor must be passed to the process method to execute. + * + * @param protcol + * the source url + * @param aSessionId + * optional an external sessionId (e.g. http session) could be + * provided. This parameter may be null. + */ + public BindingProcessor createBindingProcessor(String urlString, + String aSessionId) throws MalformedURLException; + + + /** + * Gets the binding processor with a certain id. The binding processor must be passed to the + * process method before it is managed and thus returned by this method. + * @param aId must not be null + * @return null if the binding processor was not "processed" before. + */ + public BindingProcessor getBindingProcessor(Id aId); + + /** + * Sets the STAL factory that is used for creating STAL objects that are used by BindingProcessor objects. + * For each new BindingProcessor a new STAL object is created. + * @param aStalFactory the factory to be used. Must not be null. + */ + public void setSTALFactory(STALFactory aStalFactory); + + /** + * Sets the invoker to be used. + * @param invoker + */ + public void setSLCommandInvoker(SLCommandInvoker invoker); + + /** + * Creates a processing context, + * schedules the provided binding processor for processing and + * immediately returns the context. + * + * @param aBindingProcessor + */ + public ProcessingContext process(BindingProcessor aBindingProcessor); + + /** + * Removes a formerly added (by calling the process method) binding processor. + * @param bindingProcessor must not be null + */ + public void removeBindingProcessor(Id sessionId); + + /** + * A set of all managed binding processors. + * @return + */ + public Set getManagedIds(); + public void shutdown(); - public void shutdownNow(); + public void shutdownNow(); } \ No newline at end of file diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java index 11f5a160..cc1b7532 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java @@ -53,8 +53,9 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { private STALFactory stalFactory; private SLCommandInvoker commandInvokerClass; private ExecutorService executorService; - private Map bindingProcessorMap = Collections - .synchronizedMap(new HashMap()); + private Map contextMap = Collections.synchronizedMap(new HashMap()); +// private Map bindingProcessorMap = Collections +// .synchronizedMap(new HashMap()); /** * Container to hold a Future and Bindingprocessor object as map value. @@ -62,39 +63,39 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { * @author wbauer * @see BindingProcessorManagerImpl#bindingProcessorMap */ - static class MapEntityWrapper { - private Future future; - private BindingProcessor bindingProcessor; - - public MapEntityWrapper(Future future, BindingProcessor bindingProcessor) { - if ((bindingProcessor == null) || (future == null)) { - throw new NullPointerException("Argument must not be null"); - } - this.bindingProcessor = bindingProcessor; - this.future = future; - } - - public Future getFuture() { - return future; - } - - public BindingProcessor getBindingProcessor() { - return bindingProcessor; - } - - public int hashCode() { - return bindingProcessor.getId().hashCode(); - } - - public boolean equals(Object other) { - if (other instanceof MapEntityWrapper) { - MapEntityWrapper o = (MapEntityWrapper) other; - return (o.bindingProcessor.getId().equals(bindingProcessor.getId())); - } else { - return false; - } - } - } +// static class MapEntityWrapper { +// private Future future; +// private BindingProcessor bindingProcessor; +// +// public MapEntityWrapper(Future future, BindingProcessor bindingProcessor) { +// if ((bindingProcessor == null) || (future == null)) { +// throw new NullPointerException("Argument must not be null"); +// } +// this.bindingProcessor = bindingProcessor; +// this.future = future; +// } +// +// public Future getFuture() { +// return future; +// } +// +// public BindingProcessor getBindingProcessor() { +// return bindingProcessor; +// } +// +// public int hashCode() { +// return bindingProcessor.getId().hashCode(); +// } +// +// public boolean equals(Object other) { +// if (other instanceof MapEntityWrapper) { +// MapEntityWrapper o = (MapEntityWrapper) other; +// return (o.bindingProcessor.getId().equals(bindingProcessor.getId())); +// } else { +// return false; +// } +// } +// } /** * @@ -157,17 +158,24 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { public void shutdownNow() { log.info("Shutting down the BindingProcessorManager NOW!"); executorService.shutdownNow(); - log.debug("Number of binding prcessors currently managed: " - + bindingProcessorMap.size()); + log.debug("Number of binding contexts currently managed: " + + contextMap.size()); +// + bindingProcessorMap.size()); if (log.isDebugEnabled()) { - for (Iterator it = bindingProcessorMap.values() - .iterator(); it.hasNext();) { - MapEntityWrapper entry = it.next(); - log.debug(entry.getBindingProcessor().getId() + ": isDone: " - + entry.getFuture().isDone()); - log.debug(entry.getBindingProcessor().getId() + ": isCanceled: " - + entry.getFuture().isCancelled()); + for (ProcessingContext ctx : contextMap.values()) { + Id bpId = ctx.getBindingProcessor().getId(); + Future future = ctx.getFuture(); + log.debug(bpId + " cancelled: " + future.isCancelled()); + log.debug(bpId + " done: " + future.isDone()); } +// for (Iterator it = bindingProcessorMap.values() +// .iterator(); it.hasNext();) { +// MapEntityWrapper entry = it.next(); +// log.debug(entry.getBindingProcessor().getId() + ": isDone: " +// + entry.getFuture().isDone()); +// log.debug(entry.getBindingProcessor().getId() + ": isCanceled: " +// + entry.getFuture().isCancelled()); +// } } } @@ -216,17 +224,22 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { * @return the bindingprocessor object for this id or null if no * bindingprocessor was found. */ + @Override public BindingProcessor getBindingProcessor(Id aId) { - if (bindingProcessorMap.get(aId) != null) { - return bindingProcessorMap.get(aId).getBindingProcessor(); +// if (bindingProcessorMap.get(aId) != null) { +// return bindingProcessorMap.get(aId).getBindingProcessor(); + ProcessingContext ctx = contextMap.get(aId); + if (ctx != null) { + return ctx.getBindingProcessor(); } else { return null; } } - /** - * + /** + * */ + @Override public void setSTALFactory(STALFactory aStalFactory) { if (aStalFactory == null) { throw new NullPointerException("Cannot set STALFactory to null"); @@ -236,12 +249,17 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { /** * Causes the BindingProcessorManager to manage the provided BindingProcessor + * Creates a processing context, + * schedules the provided binding processor for processing and + * immediately returns the context. * * @param aBindingProcessor * must not be null */ - public void process(BindingProcessor aBindingProcessor) { - if (bindingProcessorMap.containsKey(aBindingProcessor.getId())) { + @Override + public ProcessingContext process(BindingProcessor aBindingProcessor) { + if (contextMap.containsKey(aBindingProcessor.getId())) { +// if (bindingProcessorMap.containsKey(aBindingProcessor.getId())) { log.fatal("Clashing ids, cannot process bindingprocessor with id:" + aBindingProcessor.getId()); throw new SLRuntimeException( @@ -250,8 +268,11 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { } log.debug("processing bindingprocessor: " + aBindingProcessor.getId()); Future f = executorService.submit(aBindingProcessor); - bindingProcessorMap.put(aBindingProcessor.getId(), new MapEntityWrapper(f, - aBindingProcessor)); + ProcessingContext ctx = new ProcessingContext(aBindingProcessor, f); + contextMap.put(aBindingProcessor.getId(), ctx); +// bindingProcessorMap.put(aBindingProcessor.getId(), new MapEntityWrapper(f, +// aBindingProcessor)); + return ctx; } @Override @@ -262,26 +283,38 @@ public class BindingProcessorManagerImpl implements BindingProcessorManager { @Override public void removeBindingProcessor(Id sessionId) { log.debug("Removing binding processor: " + sessionId); - MapEntityWrapper wrapper = bindingProcessorMap.get(sessionId); - if (wrapper == null) { + ProcessingContext ctx = contextMap.get(sessionId); + if (ctx == null) { return; } - Future f = wrapper.getFuture(); + Future f = ctx.getFuture(); + +// MapEntityWrapper wrapper = bindingProcessorMap.get(sessionId); +// if (wrapper == null) { +// return; +// } +// Future f = wrapper.getFuture(); if (!f.isDone()) { f.cancel(true); } - bindingProcessorMap.remove(sessionId); + contextMap.remove(sessionId); +// bindingProcessorMap.remove(sessionId); } @Override public Set getManagedIds() { Set result = new HashSet(); - synchronized (bindingProcessorMap) { - for (Iterator it = bindingProcessorMap.keySet().iterator(); it - .hasNext();) { - result.add(it.next()); + synchronized (contextMap) { + for (Id id : contextMap.keySet()) { + result.add(id); } } +// synchronized (bindingProcessorMap) { +// for (Iterator it = bindingProcessorMap.keySet().iterator(); it +// .hasNext();) { +// result.add(it.next()); +// } +// } return result; } } \ No newline at end of file diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java new file mode 100644 index 00000000..ae7f01eb --- /dev/null +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.binding; + +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.Future; + +/** + * BindingContext? + * RequestBindingContext? + * + * @author clemens + */ +public class ProcessingContext { + + public static final String BINDING_PROCESSOR = "binding.processor"; + public static final String FUTURE = "future"; + + protected Map properties = new Hashtable(); + + public ProcessingContext(BindingProcessor bp, Future future) { + properties.put(BINDING_PROCESSOR, bp); + properties.put(FUTURE, future); + } + + + + public BindingProcessor getBindingProcessor() { + return (BindingProcessor) properties.get(BINDING_PROCESSOR); + } + + public Future getFuture() { + return (Future) properties.get(FUTURE); + } +} -- cgit v1.2.3