public void refresh(String flowId) throws NoSuchFlowDefinitionException, FlowDefinitionConstructionException { if (logger.isDebugEnabled()) { logger.debug("Refreshing flow with id '" + flowId + "'"); } ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { // workaround for JMX Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); FlowDefinitionHolder holder = getFlowDefinitionHolder(flowId); holder.refresh(); if (!holder.getFlowDefinitionId().equals(flowId)) { reindex(holder, flowId); } } finally { Thread.currentThread().setContextClassLoader(loader); } }
public void refresh() throws FlowDefinitionConstructionException { if (logger.isDebugEnabled()) { logger.debug("Refreshing flow definition registry '" + this + "'"); } ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { // workaround for JMX Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); LinkedList needsReindexing = new LinkedList(); Iterator it = flowDefinitions.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); String key = (String) entry.getKey(); FlowDefinitionHolder holder = (FlowDefinitionHolder) entry.getValue(); holder.refresh(); if (!holder.getFlowDefinitionId().equals(key)) { needsReindexing.add(new Indexed(key, holder)); } } it = needsReindexing.iterator(); while (it.hasNext()) { Indexed indexed = (Indexed) it.next(); reindex(indexed.holder, indexed.key); } } finally { Thread.currentThread().setContextClassLoader(loader); } }