private <B, I> Object resolveBean(InjectionContext<B, I> manager, String name) throws InvocationTargetException { B bean = manager.resolveBean(name); if (bean != null) { I cc = manager.createContext(bean); return manager.getInstance(bean, cc); } else { return null; } } }
public final <T> Iterable<BeanLifeCycle<T>> resolve(final Class<T> type) { final Iterable<B> a = resolveBeans(type); return new Iterable<BeanLifeCycle<T>>() { public Iterator<BeanLifeCycle<T>> iterator() { return new Iterator<BeanLifeCycle<T>>() { final Iterator<B> i = a.iterator(); public boolean hasNext() { return i.hasNext(); } public BeanLifeCycle<T> next() { B b = i.next(); return new BeanLifeCycleImpl<B, C,T>(type, InjectionContext.this, b); } public void remove() { throw new UnsupportedOperationException(); } }; } }; }
public final <T> T resolveInstance(Class<T> beanType) { try { BeanLifeCycle<T> pluginLifeCycle = get(beanType); return pluginLifeCycle != null ? pluginLifeCycle.get() : null; } catch (InvocationTargetException e) { // log.log("Could not retrieve bean of type " + beanType, e.getCause()); return null; } }
public I get() throws InvocationTargetException { if (instance == null) { context = manager.createContext(a); instance = type.cast(manager.getInstance(a, context)); } return instance; }
@Test public void test() throws Exception { init(); bootstrap.declareBean(Bean.class, null, null, null); boot(); // Bean.construct = 0; Bean.destroy = 0; // beginScoping(); try { B bean = mgr.resolveBean(Bean.class); I instance = mgr.createContext(bean); Bean o = (Bean)mgr.getInstance(bean, instance); assertEquals(1, Bean.construct); assertEquals(0, Bean.destroy); mgr.releaseContext(bean, instance); assertEquals(1, Bean.construct); assertEquals(1, Bean.destroy); } finally { endScoping(); } assertEquals(1, Bean.construct); assertEquals(1, Bean.destroy); } }
private void injectRealms(JSON config, SecurityManager currentManager, InjectionContext manager) throws InvocationTargetException { JSON realmsJSON = config.getJSON("realms"); Iterable beans = manager.resolveBeans(AuthorizingRealm.class); for (Object bean : beans) { Object instance = manager.createContext(bean); AuthorizingRealm realm = AuthorizingRealm.class.cast(manager.getInstance(bean, instance)); JSON realmJSON = realmsJSON.getJSON(realm.getClass().getName()); if (realmJSON != null) { if (realmJSON.get("name") != null) { realm.setName(realmJSON.getString("name")); } Collection<Realm> realms = ((RealmSecurityManager)currentManager).getRealms(); if (realms == null) { ((RealmSecurityManager)currentManager).setRealm(realm); } else { ((RealmSecurityManager)currentManager).getRealms().add(realm); } } } } }
public ScopeController getScopeController() { return controllerPlugin.getInjectionContext().getScopeController(); }
public final <T> BeanLifeCycle<T> get(Class<T> type) { final B a = resolveBean(type); if (a == null) { return null; } else { return new BeanLifeCycleImpl<B, C,T>(type, this, a); } }
public void close() { if (context != null) { manager.releaseContext(a, context); } } }
public ClassLoader getClassLoader() { return injectionContext.getClassLoader(); }
@Test public void test() throws Exception { init(); bootstrap.declareBean(Bean.class, null, null, null); boot(); // Bean.construct = 0; Bean.destroy = 0; // beginScoping(); try { B bean = mgr.resolveBean(Bean.class); I instance = mgr.createContext(bean); Bean o = (Bean)mgr.getInstance(bean, instance); assertEquals(1, Bean.construct); assertEquals(0, Bean.destroy); mgr.releaseContext(bean, instance); assertEquals(1, Bean.construct); assertEquals(1, Bean.destroy); } finally { endScoping(); } assertEquals(1, Bean.construct); assertEquals(1, Bean.destroy); } }
@Test public void test() throws Exception { init(); bootstrap.declareBean(Bean1.class, null, null, null); bootstrap.declareBean(Bean2.class, null, null, null); boot(); // ArrayList<B> beans = Tools.list(mgr.resolveBeans(AbstractBean.class)); assertEquals(2, beans.size()); HashSet<Class<?>> classes = new HashSet<Class<?>>(); for (B bean : beans) { I instance = mgr.createContext(bean); Object o = mgr.getInstance(bean, instance); classes.add(o.getClass()); } assertEquals(Tools.<Class<?>>set(Bean1.class, Bean2.class), classes); } }
public I get() throws InvocationTargetException { if (instance == null) { context = manager.createContext(a); instance = type.cast(manager.getInstance(a, context)); } return instance; }
public ScopeController getScopeController() { return controllerPlugin.getInjectionContext().getScopeController(); }
public final <T> BeanLifeCycle<T> get(Class<T> type) { final B a = resolveBean(type); if (a == null) { return null; } else { return new BeanLifeCycleImpl<B, C,T>(type, this, a); } }
public void close() { if (context != null) { manager.releaseContext(a, context); } } }
public ClassLoader getClassLoader() { return injectionContext.getClassLoader(); }
B bean = mgr.resolveBean(Bean.class); I instance = mgr.createContext(bean); Bean o = (Bean)mgr.getInstance(bean, instance); assertNotNull(o); assertEquals(1, Bean.construct); assertEquals(0, Bean.destroy); mgr.releaseContext(bean, instance); assertEquals(1, Bean.construct); assertEquals(0, Bean.destroy); mgr.close(); assertEquals(1, Bean.construct); assertEquals(1, Bean.destroy);
private <B, I> Object resolveBean(InjectionContext<B, I> manager, String name) throws InvocationTargetException { B bean = manager.resolveBean(name); if (bean != null) { I cc = manager.createContext(bean); return manager.getInstance(bean, cc); } else { return null; } } }
@Test public void test() throws Exception { init(); bootstrap.declareBean(Bean1.class, null, null, null); bootstrap.declareBean(Bean2.class, null, null, null); boot(); // ArrayList<B> beans = Tools.list(mgr.resolveBeans(AbstractBean.class)); assertEquals(2, beans.size()); HashSet<Class<?>> classes = new HashSet<Class<?>>(); for (B bean : beans) { I instance = mgr.createContext(bean); Object o = mgr.getInstance(bean, instance); classes.add(o.getClass()); } assertEquals(Tools.<Class<?>>set(Bean1.class, Bean2.class), classes); } }