private void writeRegEntry(EntryInfo info, PrintWriter out, int i) { out.println(INDENT[i++] + REG_ENTRY + " {"); if (info.getClassName() != null) { writeConEntry(info, out, i); } for (RegistrationContext ctx : info.getRegContexts()) { out.println(INDENT[i++] + REG_CTX + " {"); if (ctx.getMessageLayer() != null) { out.println(INDENT[i] + LAYER + SEP + ctx.getMessageLayer()); } if (ctx.getAppContext() != null) { out.println(INDENT[i] + APP_CTX + SEP + ctx.getAppContext()); } if (ctx.getDescription() != null) { out.println(INDENT[i] + DESCRIPTION + SEP + ctx.getDescription()); } out.println(INDENT[--i] + "}"); } out.println(INDENT[--i] + "}"); }
} else if (prevRegisContext != null && prevRegisContext.isPersistent()) { _deleteStoredRegistration(regisID, prevRegisContext);
} else if (prevRegisContext != null && prevRegisContext.isPersistent()) { _deleteStoredRegistration(regisID, prevRegisContext);
if (selfRegistered.contains(i)) { RegistrationContext c = getFactory().getRegistrationContext(i); if (c != null && !c.isPersistent()) { toBeUnregistered.add(i); if (r != null) { String id = getFactory().registerConfigProvider(this, r.getMessageLayer(), r.getAppContext(), r.getDescription()); selfRegistered.add(id);
if (selfRegistered.contains(i)) { RegistrationContext c = getFactory().getRegistrationContext(i); if (c != null && !c.isPersistent()) { toBeUnregistered.add(i); if (r != null) { String id = getFactory().registerConfigProvider(this, r.getMessageLayer(), r.getAppContext(), r.getDescription()); selfRegistered.add(id);
private boolean _unRegister(String regisID) { boolean rvalue = false; RegistrationContext rc = null; Map<String, List<RegistrationListener>> listenerMap; wLock.lock(); try { rc = id2RegisContextMap.remove(regisID); rvalue = id2ProviderMap.containsKey(regisID); AuthConfigProvider provider = id2ProviderMap.remove(regisID); List<String> regisIDs = provider2IdsMap.get(provider); if (regisIDs != null) { regisIDs.remove(regisID); } if (regisIDs == null || regisIDs.isEmpty()) { provider2IdsMap.remove(provider); } if (!rvalue) { return false; } listenerMap = getEffectedListeners(regisID); if (rc != null && rc.isPersistent()) { _deleteStoredRegistration(regisID, rc); } } finally { wLock.unlock(); } // outside wLock to prevent dead lock notifyListeners(listenerMap); return rvalue; }
private boolean _unRegister(String regisID) { boolean rvalue = false; RegistrationContext rc = null; Map<String, List<RegistrationListener>> listenerMap; wLock.lock(); try { rc = id2RegisContextMap.remove(regisID); rvalue = id2ProviderMap.containsKey(regisID); AuthConfigProvider provider = id2ProviderMap.remove(regisID); List<String> regisIDs = provider2IdsMap.get(provider); if (regisIDs != null) { regisIDs.remove(regisID); } if (regisIDs == null || regisIDs.isEmpty()) { provider2IdsMap.remove(provider); } if (!rvalue) { return false; } listenerMap = getEffectedListeners(regisID); if (rc != null && rc.isPersistent()) { _deleteStoredRegistration(regisID, rc); } } finally { wLock.unlock(); } // outside wLock to prevent dead lock notifyListeners(listenerMap); return rvalue; }
protected void _loadFactory() { try { initializeMaps(); List<EntryInfo> entryList = getRegStore().getPersistedEntries(); for (EntryInfo info : entryList) { if (info.isConstructorEntry()) { _constructProvider(info.getClassName(), info.getProperties(), this); } else { boolean first = true; AuthConfigProvider p = null; List<RegistrationContext> contexts = (info.getRegContexts()); for (RegistrationContext ctx : contexts) { if (first) { p = _constructProvider(info.getClassName(), info.getProperties(), null); } _loadRegistration(p, ctx.getMessageLayer(), ctx.getAppContext(), ctx.getDescription()); } } } } catch (Exception e) { if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, "jmac.factory_auth_config_loader_failure", e); } } }
protected void _loadFactory() { try { initializeMaps(); List<EntryInfo> entryList = getRegStore().getPersistedEntries(); for (EntryInfo info : entryList) { if (info.isConstructorEntry()) { _constructProvider(info.getClassName(), info.getProperties(), this); } else { boolean first = true; AuthConfigProvider p = null; List<RegistrationContext> contexts = (info.getRegContexts()); for (RegistrationContext ctx : contexts) { if (first) { p = _constructProvider(info.getClassName(), info.getProperties(), null); } _loadRegistration(p, ctx.getMessageLayer(), ctx.getAppContext(), ctx.getDescription()); } } } } catch (Exception e) { if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, "jmac.factory_auth_config_loader_failure", e); } } }
/** * Check if there is a provider register for a given layer and appCtxt. */ protected boolean hasExactMatchAuthProvider() { boolean exactMatch = false; // XXX this may need to be optimized AuthConfigProvider p = factory.getConfigProvider(layer, appCtxt, null); if (p != null) { String[] IDs = factory.getRegistrationIDs(p); for (String i : IDs) { RegistrationContext c = factory.getRegistrationContext(i); if (layer.equals(c.getMessageLayer()) && appCtxt.equals(c.getAppContext())) { exactMatch = true; break; } } } return exactMatch; }
/** * Check if there is a provider register for a given layer and appCtxt. */ protected boolean hasExactMatchAuthProvider() { boolean exactMatch = false; // XXX this may need to be optimized AuthConfigProvider p = factory.getConfigProvider(layer, appCtxt, null); if (p != null) { String[] IDs = factory.getRegistrationIDs(p); for (String i : IDs) { RegistrationContext c = factory.getRegistrationContext(i); if (layer.equals(c.getMessageLayer()) && appCtxt.equals(c.getAppContext())) { exactMatch = true; break; } } } return exactMatch; }
/** * to be called by refresh on provider subclass, and after subclass impl. * has reloaded its underlying configuration system. * Note: Spec is silent as to whether self-registrations should be reprocessed. */ public void oldRefresh() { if (getFactory() != null) { String[] regID = getFactory().getRegistrationIDs(this); for (String i : regID) { if (selfRegistered.contains(i)) { RegistrationContext c = getFactory().getRegistrationContext(i); if (c != null && !c.isPersistent()) { getFactory().removeRegistration(i); } } } } epochCarrier.increment(); selfRegister(); }
private void writeRegEntry(EntryInfo info, PrintWriter out, int i) { out.println(INDENT[i++] + REG_ENTRY + " {"); if (info.getClassName() != null) { writeConEntry(info, out, i); } for (RegistrationContext ctx : info.getRegContexts()) { out.println(INDENT[i++] + REG_CTX + " {"); if (ctx.getMessageLayer() != null) { out.println(INDENT[i] + LAYER + SEP + ctx.getMessageLayer()); } if (ctx.getAppContext() != null) { out.println(INDENT[i] + APP_CTX + SEP + ctx.getAppContext()); } if (ctx.getDescription() != null) { out.println(INDENT[i] + DESCRIPTION + SEP + ctx.getDescription()); } out.println(INDENT[--i] + "}"); } out.println(INDENT[--i] + "}"); }
/** * @see AuthConfigFactory#removeRegistration(String) */ public boolean removeRegistration(String registrationID) { if(registrationID == null) throw new IllegalArgumentException("registrationID is null"); String key = (String)idKeyMap.get(registrationID); if(key != null) { RegistrationListener listener = (RegistrationListener)this.keyListenerMap.get(key); RegistrationContext rc = this.getRegistrationContext(registrationID); this.keyProviderMap.remove(key); //Notify the listener of the change if(listener != null) listener.notify(rc.getMessageLayer(),rc.getAppContext()); return true; } return false; } }
/** * to be called by refresh on provider subclass, and after subclass impl. * has reloaded its underlying configuration system. * Note: Spec is silent as to whether self-registrations should be reprocessed. */ public void oldRefresh() { if (getFactory() != null) { String[] regID = getFactory().getRegistrationIDs(this); for (String i : regID) { if (selfRegistered.contains(i)) { RegistrationContext c = getFactory().getRegistrationContext(i); if (c != null && !c.isPersistent()) { getFactory().removeRegistration(i); } } } } epochCarrier.increment(); selfRegister(); }
public boolean contextsAreEqual(RegistrationContext a, RegistrationContext b) { if (a == null || b == null) { return false; } else if (a.isPersistent() != b.isPersistent()) { return false; } else if (!a.getAppContext().equals(b.getAppContext())) { return false; } else if (!a.getMessageLayer().equals(b.getMessageLayer())) { return false; } else if (!a.getDescription().equals(b.getDescription())) { return false; } return true; }
EntryInfo(String className, Map<String, String> properties, RegistrationContext ctx) { this.className = className; this.properties = properties; if (ctx != null) { RegistrationContext ctxImpl = new RegistrationContextImpl(ctx.getMessageLayer(), ctx.getAppContext(), ctx.getDescription(), ctx.isPersistent()); List<RegistrationContext> newList = new ArrayList<RegistrationContext>(1); newList.add(ctxImpl); this.regContexts = newList; } }
EntryInfo(String className, Map<String, String> properties, RegistrationContext ctx) { this.className = className; this.properties = properties; if (ctx != null) { RegistrationContext ctxImpl = new RegistrationContextImpl(ctx.getMessageLayer(), ctx.getAppContext(), ctx.getDescription(), ctx.isPersistent()); List<RegistrationContext> newList = new ArrayList<RegistrationContext>(1); newList.add(ctxImpl); this.regContexts = newList; } }
public boolean contextsAreEqual(RegistrationContext a, RegistrationContext b) { if (a == null || b == null) { return false; } else if (a.isPersistent() != b.isPersistent()) { return false; } else if (!a.getAppContext().equals(b.getAppContext())) { return false; } else if (!a.getMessageLayer().equals(b.getMessageLayer())) { return false; } else if (!a.getDescription().equals(b.getDescription())) { return false; } return true; }
private void _storeRegistration(String regId, RegistrationContext ctx, AuthConfigProvider p, Map properties) { String className = null; if (p != null) { className = p.getClass().getName(); } if (propertiesContainAnyNonStringValues(properties)) { throw new IllegalArgumentException("AuthConfigProvider cannot be registered - properties must all be of type String."); } if (ctx.isPersistent()) { getRegStore().store(className, ctx, properties); } }