public static XDIAddress getTemplateAuthorityAndId(XDIAddress XDIaddress) { XDIaddress = XDIAddressUtil.extractXDIAddress(XDIaddress, XdiInnerRoot.class, false, true, false, false, true); if (XDIaddress == null) return null; int index = XDIAddressUtil.indexOfXDIArc(XDIaddress, XDILinkContractConstants.XDI_ARC_CONTRACT); if (index < 0) index = XDIAddressUtil.indexOfXDIArc(XDIaddress, XdiEntityCollection.createXDIArc(XDILinkContractConstants.XDI_ARC_CONTRACT)); XDIAddress templateAuthorityAndId = XDIAddressUtil.subXDIAddress(XDIaddress, 1, index); if (XDIConstants.XDI_ADD_ROOT.equals(templateAuthorityAndId)) return null; return templateAuthorityAndId; }
private XDIAddress replaceXDIAddress(XDIAddress XDIaddress) { return XDIAddressUtil.concatXDIAddresses(this.startXDIAddress, XDIaddress); } }
public static List<ContributorFound> findHigherContributors(ContributorMap contributorMap, XDIAddress contributorsXDIAddress, XDIAddress relativeNodeXDIAddress) { if (contributorMap.isEmpty()) return new ArrayList<ContributorFound> (); List<ContributorFound> higherContributors = new ArrayList<ContributorFound> (); if (relativeNodeXDIAddress == null) { } else { for (Map.Entry<XDIAddress, List<Contributor>> contributorEntry : contributorMap.entrySet()) { XDIAddress nextContributorXDIAddress = contributorEntry.getKey(); XDIAddress[] matched = XDIAddressUtil.startsWithXDIAddress(XDIAddressUtil.concatXDIAddresses(contributorsXDIAddress, relativeNodeXDIAddress), XDIAddressUtil.concatXDIAddresses(contributorsXDIAddress, nextContributorXDIAddress), false, true); if (matched == null) continue; XDIAddress matchedRelativeNodeXDIAddress = XDIAddressUtil.localXDIAddress(matched[0], - contributorsXDIAddress.getNumXDIArcs()); XDIAddress matchedNextContributorXDIAddress = XDIAddressUtil.localXDIAddress(matched[1], - contributorsXDIAddress.getNumXDIArcs()); XDIAddress contributorXDIAddress = matchedRelativeNodeXDIAddress; List<Contributor> contributors = contributorEntry.getValue(); for (Contributor contributor : contributors) higherContributors.add(new ContributorFound(contributorXDIAddress, contributor)); } } if (higherContributors.isEmpty()) { if (log.isDebugEnabled()) log.debug("Finding higher contributors for " + relativeNodeXDIAddress + ": No matches."); } else { if (log.isDebugEnabled()) log.debug("Finding higher contributors for " + relativeNodeXDIAddress + ": Matches at " + higherContributors); } return higherContributors; }
public static XDIAddress getTemplateAuthorityAndId(XDIAddress XDIaddress) { int index = XDIAddressUtil.indexOfXDIArc(XDIaddress, XDILinkContractConstants.XDI_ARC_V_CONTRACT); if (index < 0) return null; return XDIAddressUtil.subXDIAddress(XDIaddress, 0, index); }
private XDIAddress result() { return this.forward ? XDIAddressUtil.parentXDIAddress(this.XDIaddress, this.position): XDIAddressUtil.localXDIAddress(this.XDIaddress, - this.position - 1); }
public static boolean isValidOperationXDIAddress(XDIAddress operationXDIAddress) { return XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_GET) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_SET) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_DEL) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_DO) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_CONNECT) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_SEND) != null || XDIAddressUtil.startsWithXDIAddress(operationXDIAddress, XDIMessagingConstants.XDI_ADD_PUSH) != null; }
org.openrdf.model.Resource context = null; XDIAddress rootXDIAddress = XDIAddressUtil.extractXDIAddress(XDIstatement.getContextNodeXDIAddress(), XdiPeerRoot.class, false, false, true, false, false); if (rootXDIAddress != null) subjectXDIAddress = XDIAddressUtil.localXDIAddress(subjectXDIAddress, - rootXDIAddress.getNumXDIArcs()); if (subjectXDIAddress == null) subjectXDIAddress = XDIConstants.XDI_ADD_ROOT; if (rootXDIAddress != null) subjectXDIAddress = XDIAddressUtil.localXDIAddress(subjectXDIAddress, - rootXDIAddress.getNumXDIArcs()); if (subjectXDIAddress == null) subjectXDIAddress = XDIConstants.XDI_ADD_ROOT; if (rootXDIAddress != null) subjectXDIAddress = XDIAddressUtil.localXDIAddress(subjectXDIAddress, - rootXDIAddress.getNumXDIArcs()); if (subjectXDIAddress == null) subjectXDIAddress = XDIConstants.XDI_ADD_ROOT; XDIAddress predicateXDIAddress = XDIAddressUtil.extractXDIAddress(subjectXDIAddress, XdiAttribute.class, false, false, true, false, true); subjectXDIAddress = XDIAddressUtil.parentXDIAddress(subjectXDIAddress, - predicateXDIAddress.getNumXDIArcs());
/** * Returns a MIME data type for an XDI address. */ public static String mimeTypeFromDataTypeXDIAddress(XDIAddress dataTypeXDIAddress) { if (XDIAddressUtil.startsWithXDIAddress(dataTypeXDIAddress, XDI_ADD_DATATYPE_MIME) == null) throw new Xdi2RuntimeException("Invalid MIME data type address: " + dataTypeXDIAddress); XDIAddress mimeTypeXDIAddress = XDIAddressUtil.localXDIAddress(dataTypeXDIAddress, - XDI_ADD_DATATYPE_MIME.getNumXDIArcs()); return mimeTypeXDIAddress.toString().substring(1).replace(XDIConstants.CS_CLASS_RESERVED.toString(), "/"); } }
pushRefRepRelationPerOperation(executionContext, refRelation); return XDIAddressUtil.concatXDIAddresses(referenceContextNode.getXDIAddress(), localAddress); pushRefRepRelationPerOperation(executionContext, repRelation); return XDIAddressUtil.concatXDIAddresses(replacementContextNode.getXDIAddress(), localAddress); localAddress = XDIAddressUtil.concatXDIAddresses(XDIAddressUtil.localXDIAddress(contextNodeXDIAddress, 1), localAddress); contextNodeXDIAddress = XDIAddressUtil.parentXDIAddress(contextNodeXDIAddress, -1); if (contextNodeXDIAddress == null) contextNodeXDIAddress = XDIConstants.XDI_ADD_ROOT;
private XDIAddress replaceXDIAddress(XDIAddress XDIaddress) { XDIAddress replacedXDIAddress = XDIAddressUtil.extractXDIAddress(XDIaddress, this.clazzes, this.keepOnlyFirstFound, this.keepOnlyLastFound, this.keepAllFound, this.keepParent, this.keepLocal); return replacedXDIAddress != null ? replacedXDIAddress : XDIaddress; } }
XDIAddress replacedContextNodeXDIAddress = XDIAddressUtil.replaceXDIAddress( baseXDIAddress, oldXDIArc, replacedContextNodeXDIAddress = XDIAddressUtil.concatXDIAddresses(XDIAddressUtil.parentXDIAddress(contextNodeXDIAddress, -1), replacedContextNodeXDIAddress);
private void putLiteralNodeIntoAttributeJsonObject(LiteralNode literalNode, JsonObject attributeJsonObject, XDIAddress parentXDIAddress) { XDIAddress XDIaddress = literalNode.getXDIAddress(); XDIAddress localXDIAddress = XDIAddressUtil.localXDIAddress(XDIaddress, - parentXDIAddress.getNumXDIArcs()); JsonElement literalJsonElement = AbstractLiteralNode.literalDataToJsonElement(literalNode.getLiteralData()); attributeJsonObject.add(localXDIAddress.toString(), literalJsonElement); }
@Override public String toString() { if (this.positionXDIAddress == null) this.positionXDIAddress = XDIAddressUtil.parentXDIAddress(this.XDIaddress, this.position + 1); return this.positionXDIAddress.toString(); } }
private static List<RelationshipLinkContract> findPushLinkContracts(Graph pushLinkContractsGraph, XDIAddress XDIaddress) { List<RelationshipLinkContract> pushLinkContracts = new ArrayList<RelationshipLinkContract> (); while (true) { ContextNode contextNode = pushLinkContractsGraph.getDeepContextNode(XDIaddress); if (contextNode != null) { if (log.isDebugEnabled()) log.debug("Trying to find push link contracts for context node " + contextNode); for (Relation pushLinkContractRelation : contextNode.getRelations(XDILinkContractConstants.XDI_ADD_IS_PUSH)) { if (log.isDebugEnabled()) log.debug("Trying to find push link contract for relation " + pushLinkContractRelation); ContextNode pushLinkContractContextNode = pushLinkContractRelation.followContextNode(); if (pushLinkContractContextNode == null) continue; XdiEntity pushLinkContractXdiEntity = XdiAbstractEntity.fromContextNode(pushLinkContractContextNode); if (pushLinkContractXdiEntity == null) continue; RelationshipLinkContract pushLinkContract = RelationshipLinkContract.fromXdiEntity(pushLinkContractXdiEntity); if (pushLinkContract == null) continue; for (XDIAddress pushTargetXDIAddress : pushLinkContract.getPermissionTargetXDIAddresses(XDILinkContractConstants.XDI_ADD_PUSH)) { if (log.isDebugEnabled()) log.debug("Found push link contract to address " + pushTargetXDIAddress + " for address " + XDIaddress); if (XDIAddressUtil.startsWithXDIAddress(XDIaddress, pushTargetXDIAddress) != null) { pushLinkContracts.add(pushLinkContract); break; } } } } if (XDIaddress.getNumXDIArcs() == 0) break; XDIaddress = XDIAddressUtil.parentXDIAddress(XDIaddress, -1); } // done if (log.isDebugEnabled()) log.debug("Found " + pushLinkContracts.size() + " push link contracts: " + pushLinkContracts); return pushLinkContracts; }
@Override public ContextNode getDeepContextNode(XDIAddress relativeContextNodeXDIAddress, boolean subgraph) { if (XDIConstants.XDI_ADD_ROOT.equals(relativeContextNodeXDIAddress)) return this; XDIAddress contextNodeXDIAddress = XDIAddressUtil.concatXDIAddresses(this.getXDIAddress(), relativeContextNodeXDIAddress); XDIAddress parentcontextNodeXDIAddress = XDIAddressUtil.concatXDIAddresses(this.getXDIAddress(), XDIAddressUtil.parentXDIAddress(relativeContextNodeXDIAddress, -1)); XDIArc XDIarc = relativeContextNodeXDIAddress.getLastXDIArc(); // load the JSON object for the parent context node JsonObject jsonObject = ((JSONGraph) this.getGraph()).jsonLoad(parentcontextNodeXDIAddress.toString()); final JsonArray jsonArrayContexts = jsonObject.getAsJsonArray(XDIConstants.STRING_CONTEXT); if (jsonArrayContexts == null) return null; if (jsonArrayContexts.size() < 1) return null; if (! new IteratorContains<JsonElement> (jsonArrayContexts.iterator(), new JsonPrimitive(XDIarc.toString())).contains()) return null; JSONContextNode contextNode = this; for (XDIArc temparc : relativeContextNodeXDIAddress.getXDIArcs()) { XDIAddress tempAddress = XDIAddressUtil.concatXDIAddresses(contextNode.getXDIAddress(), temparc); contextNode = new JSONContextNode((JSONGraph) this.getGraph(), contextNode, temparc, tempAddress); } // retrieve subgraph? if (subgraph) { ((JSONGraph) this.getGraph()).jsonLoadWithPrefix(contextNodeXDIAddress.toString()); } // done return contextNode; }
XDIAddress nextRelativeTargetXDIAddress = relativeTargetXDIAddress == null ? null : XDIAddressUtil.removeStartXDIAddress(relativeTargetXDIAddress, contributorXDIAddress); XDIAddress nextRelativeNodeXDIAddress = nextRelativeTargetXDIAddress; nextContributorXDIAddresses[nextContributorXDIAddresses.length - 1] = contributorXDIAddress; XDIAddress nextContributorsXDIAddress = XDIAddressUtil.concatXDIAddresses(nextContributorXDIAddresses); contributorResultXDIAddress = contributorResultXDIAddress.or(contributorResult); XDIAddress tempNodeXDIAddress = XDIAddressUtil.concatXDIAddresses(nextContributorsXDIAddress, nextRelativeNodeXDIAddress); Node tempNode = tempResultGraph.getDeepNode(tempNodeXDIAddress, true);
/** * Removes an end address from an address. * E.g. for =a*b*c*d and *c*d, this returns =a*b * E.g. for =a*b*c*d and (empty address), this returns =a*b*c*d * E.g. for =a*b*c*d and =a*b*c*d, this returns (empty address) * E.g. for =a*b*c*d and *y, this returns null */ public static XDIAddress removeEndXDIAddress(final XDIAddress XDIaddress, final XDIAddress endXDIAddress, final boolean variablesinXDIAddress, final boolean variablesInEnd) { if (XDIaddress == null) throw new NullPointerException(); if (endXDIAddress == null) throw new NullPointerException(); XDIAddress result = null; try { if (endXDIAddress.equals(XDIConstants.XDI_ADD_ROOT)) { result = XDIaddress; return result; } if (XDIaddress.equals(XDIConstants.XDI_ADD_ROOT)) { result = null; return result; } XDIAddress[] foundXDIAddress = XDIAddressUtil.endsWithXDIAddress(XDIaddress, endXDIAddress, variablesinXDIAddress, variablesInEnd); if (foundXDIAddress == null) { result = null; return result; } if (XDIaddress.equals(foundXDIAddress[0])) { result = XDIConstants.XDI_ADD_ROOT; return result; } { result = XDIAddressUtil.parentXDIAddress(XDIaddress, - foundXDIAddress[0].getNumXDIArcs()); return result; } } finally { if (log.isTraceEnabled()) log.trace("removeEndXDIAddress(" + XDIaddress + "," + endXDIAddress + "," + variablesinXDIAddress + "," + variablesInEnd + ") --> " + result); } }
/** * Removes a start address from an address. * E.g. for =a*b*c*d and =a*b, this returns *c*d * E.g. for =a*b*c*d and (empty address), this returns =a*b*c*d * E.g. for =a*b*c*d and =a*b*c*d, this returns (empty address) * E.g. for =a*b*c*d and =x, this returns null */ public static XDIAddress removeStartXDIAddress(final XDIAddress XDIaddress, final XDIAddress startXDIAddress) { return removeStartXDIAddress(XDIaddress, startXDIAddress, false, false); }
public void DISABLEDtestRemoveEndXDIAddressVariables() throws Exception { XDIAddress XDIaddress = XDIAddress.create("=a*b+c!d#e$f*g"); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{}"), false, true), XDIAddress.create("=a*b+c!d#e$f")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{*}"), false, true), XDIAddress.create("=a*b+c!d#e$f")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{}{}"), false, true), XDIAddress.create("=a*b+c!d#e")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{{$*}}"), false, true), XDIAddress.create("=a*b+c!d#e")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{$}{}"), false, true), XDIAddress.create("=a*b+c!d#e")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{{!#}}{{$*}}"), false, true), XDIAddress.create("=a*b+c")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{!}{}{{$*}}"), false, true), XDIAddress.create("=a*b+c")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{}{!}{}{{$*}}"), false, true), XDIAddress.create("=a*b")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{+}{{!}}{}{{$*}}"), false, true), XDIAddress.create("=a*b")); assertEquals(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{=}{*}{+}{!}{}{{$*}}"), false, true), XDIAddress.create("")); assertEquals(XDIAddressUtil.removeStartXDIAddress(XDIaddress, XDIAddress.create("{{=+*#$!}}"), false, true), XDIAddress.create("")); assertNull(XDIAddressUtil.removeEndXDIAddress(XDIaddress, XDIAddress.create("{!}"), false, true)); } }
private static boolean isSetOnContractAddress(XDIAddress targetXDIAddress, Operation operation) { if (! (operation instanceof SetOperation)) return false; if (XDIAddressUtil.indexOfXDIArc(targetXDIAddress, XDILinkContractConstants.XDI_ARC_CONTRACT) != -1) return true; return false; }