private void restoreStatus() { final Scope scope = getScope(); if (_status.previous != null) scope.setAttribute("forEachStatus", _status.previous); else scope.removeAttribute("forEachStatus"); if (_oldEach != null) scope.setAttribute("each", _oldEach); else scope.removeAttribute("each"); _it = null; _status = null; //recycle (just in case) }
/** Looks up a session or application scoped event queue. */ private <T extends Event> EventQueue<T> lookup0(String name, Scope ctxscope, boolean autoCreate) { Map<String, EventQueue<T>> eqs; synchronized (ctxscope) { eqs = cast((Map) ctxscope.getAttribute(ATTR_EVENT_QUEUES)); if (eqs == null) ctxscope.setAttribute(ATTR_EVENT_QUEUES, eqs = new HashMap<String, EventQueue<T>>(4)); } EventQueue<T> eq; synchronized (eqs) { eq = eqs.get(name); if (autoCreate && eq == null) eqs.put(name, eq = new ServerPushEventQueue<T>()); } if (log.isDebugEnabled()) { log.debug("Lookup event queue: name [{}], scope [{}], autoCreate [{}]", name, ctxscope, autoCreate); } return eq; }
private void setupStatus() { final Scope scope = getScope(); _oldEach = scope.getAttribute("each", true); _status = new Status(scope.getAttribute("forEachStatus", true)); scope.setAttribute("forEachStatus", _status); }
_status.each = _it.next(); _status.count++; getScope().setAttribute("each", _status.each);
/** Prepares the namespace for non-top-level scope. */ private NameSpace prepareNS(Scope scope) { scope = getIdSpace(scope); if (scope == null || scope == getOwner()) return _bshns; NSWrap nsw = (NSWrap) scope.getAttribute(VAR_NSW); if (nsw != null) return nsw.unwrap(scope); //bind bshns and scope final NS bshns = newNS(scope); scope.setAttribute(VAR_NSW, NSWrap.getInstance(bshns)); return bshns; }
/** Prepares the namespace for detached components. */ private static NameSpace prepareDetachedNS(Scope scope) { scope = getIdSpace(scope); if (scope == null) return null; NSWrap nsw = (NSWrap) scope.getAttribute(VAR_NSW); if (nsw != null) return nsw.unwrap(scope); //bind bshns and scope Scope p = getParentIdSpace(scope); NameSpace bshns = new NS(p != null ? prepareDetachedNS(p) : null, null, scope); scope.setAttribute(VAR_NSW, NSWrap.getInstance(bshns)); return bshns; }