/** * Extracts the owner portion of an buddy subtree Fqn. * * @param fqn An Fqn that is a child of the buddy backup root node. */ private static String getBuddyOwner(Fqn fqn) { return (String) fqn.get(BUDDY_BACKUP_ROOT_OWNER_INDEX); }
private static boolean isBuddyFqn(Fqn fqn) { try { return BuddyManager.BUDDY_BACKUP_SUBTREE.equals(fqn.get(0)); } catch (IndexOutOfBoundsException e) { // Can only happen if fqn is ROOT, and we shouldn't get // notifications for ROOT. // If it does, just means it's not a buddy return false; } }
private boolean isFqnForOurSipapp(Fqn fqn, boolean isBuddy) { try { if (sipApplicationNameHashed.equals(fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPNAME_FQN_INDEX : SIPAPPNAME_FQN_INDEX)) && hostname_.equals(fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + HOSTNAME_FQN_INDEX : HOSTNAME_FQN_INDEX)) && ConvergedJBossCacheService.SIPSESSION.equals(fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPSESSION_FQN_INDEX : SIPSESSION_FQN_INDEX))) return true; } catch (IndexOutOfBoundsException e) { // can't be ours; too small; just fall through } return false; }
protected boolean isFqnForOurSipapp(Fqn<String> fqn, boolean isBuddy) { try { String appName = (String) fqn.get(isBuddy ? BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPNAME_FQN_INDEX : SIPAPPNAME_FQN_INDEX); if (sipApplicationNameHashed.equals(appName)) return true; } catch (IndexOutOfBoundsException e) { // can't be ours; too small; just fall through } return false; }
protected boolean isFqnForOurSipapp(Fqn<String> fqn, boolean isBuddy) { try { if (sipApplicationNameHashed.equals(fqn.get(isBuddy ? SipCacheListener.BUDDY_BACKUP_ROOT_OWNER_SIZE + SipCacheListener.SIPAPPNAME_FQN_INDEX : SipCacheListener.SIPAPPNAME_FQN_INDEX)) && AbstractJBossCacheService.SESSION.equals(fqn.get(isBuddy ? SipCacheListener.BUDDY_BACKUP_ROOT_OWNER_SIZE + SipCacheListener.SIPSESSION_FQN_INDEX : SipCacheListener.SIPSESSION_FQN_INDEX))) return true; } catch (IndexOutOfBoundsException e) { // can't be ours; too small; just fall through } return false; } }
private static String getSipSessionIdPojoKeyFromFqn(Fqn fqn, boolean isBuddy) { if(isBuddy) { if(fqn.size() == BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPSESSION_POJO_KEY_FQN_SIZE) { return (String)fqn.get(BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPSESSION_POJO_KEY_FQN_INDEX); } else { return (String)fqn.get(BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPSESSION_POJO_KEY_FQN_INDEX); } } else { if(fqn.size() == SIPAPPSESSION_POJO_KEY_FQN_SIZE) { return (String)fqn.get(SIPAPPSESSION_POJO_KEY_FQN_INDEX); } else { return (String)fqn.get(SIPSESSION_POJO_KEY_FQN_INDEX); } } }
private static String getSipApplicationSessionIdPojoKeyFromFqn(Fqn fqn, boolean isBuddy) { if(isBuddy) { if(fqn.size() == BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPSESSION_POJO_KEY_FQN_SIZE) { return (String)fqn.get(BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPAPPSESSION_POJO_KEY_FQN_INDEX); } else { return (String)fqn.get(BUDDY_BACKUP_ROOT_OWNER_SIZE + SIPSESSION_POJO_KEY_FQN_INDEX); } } else { if(fqn.size() == SIPAPPSESSION_POJO_KEY_FQN_SIZE) { return (String)fqn.get(SIPAPPSESSION_POJO_KEY_FQN_INDEX); } else { return (String)fqn.get(SIPSESSION_POJO_KEY_FQN_INDEX); } } }
String getFullPath(Fqn fqn) { StringBuilder sb = new StringBuilder(rootPath); for (int i = 0; i < fqn.size(); i++) { Object tmp = fqn.get(i); // This is where we convert from Object to String! String tmp_dir = tmp.toString(); // returns tmp.this if it's a String sb.append(tmp_dir).append(".").append(DIR_SUFFIX).append(File.separator); } return sb.toString(); }
/** * Tests whether a given Fqn belongs to a dead backup region. * * @param name fqn to test * @return true if the fqn is a part of a dead backup region; false otherwise. */ public boolean isDeadBackupFqn(Fqn name) { if (name == null || name.size() < 2) return false; Object elem1 = name.get(1); if (elem1 instanceof String) { String strElem1 = (String) elem1; return name.hasElement(BuddyManager.BUDDY_BACKUP_SUBTREE) && strElem1.endsWith(":DEAD"); } else { return false; } }
/** * Utility method that retrieves a buddy backup Fqn given the actual Fqn of some data and the backup subtree for the * buddy group in question * * @param buddyGroupRoot the subtree under which data for a particular buddy is backed up * @param origFqn the original Fqn * @return a backup Fqn */ public Fqn getBackupFqn(Fqn buddyGroupRoot, Fqn origFqn) { if (isBackupFqn(origFqn)) throw new CacheException("Cannot make a backup Fqn from a backup Fqn! Attempting to create a backup of " + origFqn); List<Object> elements = new ArrayList<Object>(origFqn.size() + 2); elements.add(BuddyManager.BUDDY_BACKUP_SUBTREE); elements.add(buddyGroupRoot.get(1)); elements.addAll(origFqn.peekElements()); return Fqn.fromList(elements, true); }
public void nodeRemoved(Fqn fqn) { if (clusteredSipStack.getStackLogger().isLoggingEnabled(StackLogger.TRACE_DEBUG) && fqn.toString().indexOf(SipStackImpl.DIALOG_ROOT) != -1) { clusteredSipStack.getStackLogger().logDebug("sipStack " + clusteredSipStack + " Node removed : " + fqn); } // Fix for Issue 1418 jain sip ha does not removes dialog in local stack // http://code.google.com/p/mobicents/issues/detail?id=1418 if(fqn.size() > 1) { clusteredSipStack.remoteDialogRemoval(fqn.get(1).toString()); } }
public InternalNode peekInternalNode(Fqn fqn, boolean includeInvalidNodes) { if (fqn == null || fqn.size() == 0) return rootInternal; InternalNode n = rootInternal; int fqnSize = fqn.size(); for (int i = 0; i < fqnSize; i++) { Object obj = fqn.get(i); n = n.getChild(obj); if (n == null) { return null; } else if (!includeInvalidNodes && !n.isValid()) { return null; } } return n; }
/** * Monitors cache events and updates the local cache * * @param event */ @NodeModified public void nodeModified(NodeModifiedEvent event) { if (event.isPre()) return; Fqn fqn = event.getFqn(); Fqn regFqn = getRegionFqn(); if (fqn.size() == regFqn.size() + 1 && fqn.isChildOf(regFqn)) { Object key = fqn.get(regFqn.size()); localCache.put(key, event.getData().get(ITEM)); } }
/** * Monitors cache events and updates the local cache * * @param event */ @NodeModified public void nodeModified(NodeModifiedEvent event) { if (!handleEvictAllModification(event) && !event.isPre()) { Fqn fqn = event.getFqn(); Fqn regFqn = getRegionFqn(); if (fqn.size() == regFqn.size() + 1 && fqn.isChildOf(regFqn)) { Object key = fqn.get(regFqn.size()); localCache.put(key, event.getData().get(ITEM)); } } }
private Node getInternalNode(Node parentNode, Fqn internalFqn) { Fqn parentFqn = parentNode.getFqn(); Object name = internalFqn.get(parentFqn.size()); prepareContextOptions(); Node result = parentNode.getChild(name); if (result != null && internalFqn.size() < result.getFqn().size()) { // need to recursively walk down the tree result = getInternalNode(result, internalFqn); } return result; }
private Node getInternalNode(Node parent, Fqn internalFqn) { Object name = internalFqn.get(parent.getFqn().size()); cache.getInvocationContext().getOptionOverrides().setSkipCacheStatusCheck(true); Node result = parent.getChild(name); if (result != null && internalFqn.size() < result.getFqn().size()) { // need to recursively walk down the tree result = getInternalNode(result, internalFqn); } return result; }