@Override public MessagingContainer mountMessagingContainer(UriMessagingContainerRegistry uriMessagingContainerRegistry, String messagingContainerFactoryPath, String requestPath, boolean checkDisabled, boolean checkExpired) throws Xdi2TransportException, Xdi2MessagingException { // parse owner String ownerString = requestPath.substring(messagingContainerFactoryPath.length()); if (ownerString.startsWith("/")) ownerString = ownerString.substring(1); if (ownerString.contains("/")) ownerString = ownerString.substring(0, ownerString.indexOf("/")); XDIAddress ownerXDIAddress = XDIAddress.create(ownerString); // create and mount the new messaging container String messagingContainerPath = messagingContainerFactoryPath + "/" + ownerXDIAddress.toString(); log.info("Will create messaging container for " + ownerXDIAddress + " at " + messagingContainerPath); return super.mountMessagingContainer(uriMessagingContainerRegistry, messagingContainerPath, ownerXDIAddress, null, null); }
public static XDIArc fromComponent(XDIAddress XDIaddress) { if (XDIaddress.getNumXDIArcs() > 1) return null; return XDIaddress.getFirstXDIArc(); }
/** * Checks if an address is a valid XDI $false condition. * @param XDIaddress The address to check. * @return True if the address is a valid XDI $false condition. */ public static boolean isValid(XDIAddress XDIaddress) { if (! XDIConstants.XDI_ADD_FALSE.equals(XDIaddress)) return false; return true; }
private boolean matchesNext(MatchPosition other) { if (other.forward && other.position + 1 >= other.XDIaddress.getNumXDIArcs()) return false; if (! other.forward && other.position -1 < 0) return false; XDIArc myXDIArc = this.XDIaddress.getXDIArc(this.position); XDIArc otherXDIArc = other.XDIaddress.getXDIArc(other.forward ? other.position + 1 : other.position - 1); return myXDIArc.equals(otherXDIArc); }
private static JsonElement makeGom(XDIAddress XDIaddress) { JsonElement gom; if (XDIaddress.getNumXDIArcs() == 1) { gom = makeGom(XDIaddress.getFirstXDIArc()); } else { gom = new JsonArray(); for (int i=0; i<XDIaddress.getNumXDIArcs(); i++) ((JsonArray) gom).add(makeGom(XDIaddress.getXDIArc(i))); } return gom; }
@Override public XDIAddress convert(String string) { return XDIAddress.create(string); } }
/** * 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(), "/"); } }
@Override public void executeDelOnAddress(XDIAddress targetXDIAddress, DelOperation operation, Graph operationResultGraph, ExecutionContext executionContext) throws Xdi2MessagingException { if (XDIConstants.XDI_ADD_ROOT.equals(targetXDIAddress)) { this.getGraph().clear(); } else if (targetXDIAddress.getNumXDIArcs() == 1) { this.getGraph().getRootContextNode(false).delContextNode(targetXDIAddress.getFirstXDIArc()); } else { XDIAddress parentContextNodeXDIAddress = XDIAddressUtil.parentXDIAddress(targetXDIAddress, -1); XDIArc XDIarc = targetXDIAddress.getLastXDIArc(); ContextNode parentContextNode = this.getGraph().getDeepContextNode(parentContextNodeXDIAddress, false); if (parentContextNode == null) return; if (XDIConstants.XDI_ARC_LITERAL.equals(XDIarc)) { parentContextNode.delLiteralNode(); } else { parentContextNode.delContextNode(XDIarc); } } }
relativeRelationTargetXDIAddress.getNumXDIArcs() == 1 && XdiInnerRoot.isValidXDIArc(relativeRelationTargetXDIAddress.getFirstXDIArc()) && XdiInnerRoot.getSubjectOfInnerRootXDIArc(relativeRelationTargetXDIAddress.getFirstXDIArc()).equals(relativeRelationContextNodeXDIAddress) && XdiInnerRoot.getPredicateOfInnerRootXDIArc(relativeRelationTargetXDIAddress.getFirstXDIArc()).equals(relationXDIAddress)) { if (! targetXDIAddress.equals(relationContextNodeXDIAddress)) { relativeRelationTargetXDIAddress = XDIAddress.fromComponent(XdiInnerRoot.createInnerRootXDIArc(relativeTargetXDIAddress, relationXDIAddress)); relationTargetXDIAddress = targetContextNodeXdiRoot.relativeToAbsoluteXDIAddress(relativeRelationTargetXDIAddress);
@Override public String toString() { return this.contributorXDIAddress.toString() + ":" + this.contributor.getClass().getSimpleName(); } }
@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; }
assertEquals(statement.getLiteralData(), "xxx"); assertEquals(statement.getSubject().getNumXDIArcs(), 3); assertEquals(statement.getSubject().getXDIArc(0), statement.getSubject().getFirstXDIArc()); assertEquals(statement.getSubject().getXDIArc(2), statement.getSubject().getLastXDIArc()); assertEquals(statement.getSubject().getXDIArc(0), parser.parseXDIArc("=markus")); assertEquals(statement.getSubject().getXDIArc(0).getCs(), XDIConstants.CS_AUTHORITY_PERSONAL); assertEquals(statement.getSubject().getXDIArc(0).getLiteral(), "markus"); assertNull(statement.getSubject().getXDIArc(0).getXRef()); assertEquals(statement.getSubject().getXDIArc(1), parser.parseXDIArc("[<#email>]")); assertEquals(statement.getSubject().getXDIArc(1).getCs(), XDIConstants.CS_CLASS_UNRESERVED); assertTrue(statement.getSubject().getXDIArc(1).isCollection()); assertTrue(statement.getSubject().getXDIArc(1).isAttribute()); assertEquals(statement.getSubject().getXDIArc(1).getLiteral(), "email"); assertNull(statement.getSubject().getXDIArc(1).getXRef()); assertEquals(statement.getSubject().getXDIArc(2), parser.parseXDIArc("<*!1>")); assertEquals(statement.getSubject().getXDIArc(2).getCs(), XDIConstants.CS_INSTANCE_UNORDERED); assertFalse(statement.getSubject().getXDIArc(2).isCollection()); assertTrue(statement.getSubject().getXDIArc(2).isAttribute()); assertEquals(statement.getSubject().getXDIArc(2).getLiteral(), "1"); assertNull(statement.getSubject().getXDIArc(2).getXRef());
public Character getCs() { return this.getXDIAddress().getFirstXDIArc().getCs(); }
@Override public XDIClientRoute<?> route(XDIAddress XDIaddress) throws Xdi2AgentException, Xdi2ClientException { // let's find out the TO peer root of the address XDIAddress peerRootXDIAddress = XDIAddressUtil.extractXDIAddress(XDIaddress, XdiPeerRoot.class, false, false, true, false, false); XDIArc peerRootFirstXDIArc = peerRootXDIAddress == null ? null : peerRootXDIAddress.getFirstXDIArc(); XDIArc firstXDIArc = XDIaddress.getFirstXDIArc(); if (log.isDebugEnabled()) log.debug("Peer root first arc: " + peerRootFirstXDIArc + ", First arc: " + firstXDIArc); XDIArc toPeerRootXDIArc = null; if (toPeerRootXDIArc == null && peerRootFirstXDIArc != null) toPeerRootXDIArc = peerRootFirstXDIArc; if (toPeerRootXDIArc == null && firstXDIArc != null) toPeerRootXDIArc = XdiPeerRoot.createPeerRootXDIArc(XDIAddress.fromComponent(firstXDIArc)); if (log.isDebugEnabled()) log.debug("Determined TO peer root: " + toPeerRootXDIArc); if (toPeerRootXDIArc == null) { if (log.isDebugEnabled()) log.debug("Unable to determine TO peer root for address " + XDIaddress); return null; } // let's find a route return route(toPeerRootXDIArc); }
public static XDIAddress getVariableXDIAddressValue(Map<XDIArc, Object> variableValues, XDIArc variableValueXDIArc) { Object variableValue = variableValues.get(variableValueXDIArc); if (variableValue instanceof List<?> && ((List<?>) variableValue).size() == 1) variableValue = ((List<?>) variableValue).get(0); if (variableValue instanceof XDIAddress) return (XDIAddress) variableValue; if (variableValue instanceof XDIArc) return XDIAddress.fromComponent((XDIArc) variableValue); return null; }
static XDIStatement fromLiteralComponents(String string, XDIAddress contextNodeXDIAddress, Object literalData) { if (string == null) string = contextNodeXDIAddress.toString() + "/" + XDIConstants.XDI_ARC_LITERAL + "/" + AbstractLiteralNode.literalDataToString(literalData); if (contextNodeXDIAddress.isLiteralNodeXDIAddress()) throw new ParserException("Cannot have literal node address " + contextNodeXDIAddress + " as subject of a literal statement: " + string); return new XDIStatement(string, contextNodeXDIAddress, XDIConstants.XDI_ARC_LITERAL, literalData); }
else if (newXDIArcOrXDIAddressOrList instanceof XDIArc) newXDIAddresses = Collections.singletonList(XDIAddress.fromComponent((XDIArc) newXDIArcOrXDIAddressOrList)); else if (newXDIArcOrXDIAddressOrList instanceof List) newXDIAddresses = (List<XDIAddress>) newXDIArcOrXDIAddressOrList; else throw new IllegalArgumentException("Illegal replacement: " + newXDIArcOrXDIAddressOrList.getClass().getCanonicalName()); if (targetXDIAddress.equals(replacedTargetXDIAddress)) return super.replaceRelation(relation);
public boolean isLiteralNodeXDIAddress() { XDIArc XDIarc = this.getLastXDIArc(); if (XDIarc == null) return false; return XDIarc.isLiteralNodeXDIArc(); } }
public void setReadOnlyAddresses(String[] readOnlyAddresses) { this.readOnlyAddresses = new XDIAddress[readOnlyAddresses.length]; for (int i=0; i<this.readOnlyAddresses.length; i++) this.readOnlyAddresses[i] = XDIAddress.create(readOnlyAddresses[i]); } }