public void addAEExtension(AEExtension ext) { Class<? extends AEExtension> clazz = ext.getClass(); if (extensions.containsKey(clazz)) throw new IllegalStateException("already contains AE Extension:" + clazz); ext.setApplicationEntity(this); extensions.put(clazz, ext); }
private void reconfigureAEExtensions(ApplicationEntity from) { for (Iterator<Class<? extends AEExtension>> it = extensions.keySet().iterator(); it.hasNext(); ) { if (!from.extensions.containsKey(it.next())) it.remove(); } for (AEExtension src : from.extensions.values()) { Class<? extends AEExtension> clazz = src.getClass(); AEExtension ext = extensions.get(clazz); if (ext == null) try { addAEExtension(ext = clazz.newInstance()); } catch (Exception e) { throw new RuntimeException("Failed to instantiate " + clazz.getName(), e); } ext.reconfigure(src); } }
public boolean removeAEExtension(AEExtension ext) { if (extensions.remove(ext.getClass()) == null) return false; ext.setApplicationEntity(null); return true; }