public DynamicContext(Configuration configuration, Object parameterObject) { if (parameterObject != null && !(parameterObject instanceof Map)) { MetaObject metaObject = configuration.newMetaObject(parameterObject); bindings = new ContextMap(metaObject); } else { bindings = new ContextMap(null); } bindings.put(PARAMETER_OBJECT_KEY, parameterObject); bindings.put(DATABASE_ID_KEY, configuration.getDatabaseId()); }
/** * Ustawia PartialConsumera dla widoków o uuid równym uuid tego beana, a zatem być może dla jego * potomków. * * @param consumer PartialConsument to ustawiania stanu w dzieciach tego beana. */ protected void setContext(PartialConsumer consumer) { logger.info("Setting new context using PartialConsumer"); if (consumer == null) { resetContext(); } else { contextMap.setViewContext(uuid, consumer); } }
/** * Przeładowanie setContextu przyjmującego PartialConsumera, które tworzy i ustawia * PartialConsumera zdefiniowanego dla tylko jednej klasy. * * @param clazz Klasa oczekiwanego potomka. * @param consumer Konsument, który ustawia stan na potomkach danego typu. * @param <T> Typ oczekiwanego potomka. */ protected <T> void setContext(Class<T> clazz, Consumer<T> consumer) { logger.info("Setting new context using Consumer"); if (consumer == null) { resetContext(); } else { contextMap.setViewContext(uuid, PartialConsumer.of(clazz, consumer)); } }
/** * Zwraca PartialConsumera dla uuid z tego beana w contextMapie. * * @return PartialConsumer dla widoków o uuid równym uuid temu beanowi. */ protected PartialConsumer getContext() { return contextMap.getViewContext(uuid); }
/** * Metoda, którą trzeba wywołać w .xhtmlu korzystającym z danego beana w f:viewAction * action="#{bean.checkContext}" Dzięki temu zostanie ona wywołana po ustawieniu viewParamów, a * koniecznie musi być przed jej wywołaniem ustawiony UUID tego widoku, jeżeli ma on na początku * wyszukać swój kontekst. Ustawienie UUID może wyglądać tak f:viewParam name="uuid" * value="#{bean.uuid}" converter="uuidConverter" Po ustawieniu kontekstu wywołuje metodę * szablonową doInContext */ public void checkContext() { contextMap.applyContext(this); doInContext(); }
/** Usuwa PartialConsumera przypisanego dla uuid tego beana z ContextMapy. */ protected void resetContext() { logger.info("Resetting context"); contextMap.removeViewContext(uuid); }
public OnglTest() { bindings = new ContextMap(); bindings.put("abc", new TestBean("1", "liangjy")); }
public void bind(String name, Object value) { bindings.put(name, value); }