private static JsonElement makeGom(XDIXRef xref) { if (xref.hasPartialSubjectAndPredicate()) { JsonArray gom = new JsonArray(); gom.add(makeGom(xref.getPartialSubject())); gom.add(makeGom(xref.getPartialPredicate())); return gom; } else if (xref.hasXDIArc()) { return makeGom(xref.getXDIArc()); } else { return xref.getValue() == null ? new JsonPrimitive("") : new JsonPrimitive(xref.getValue()); } }
/** * Returns the IRI of the peer root arc. * @param arc A peer root arc. * @return The IRI of the peer root arc. */ public static String getIriOfPeerRootXDIArc(XDIArc XDIarc) { if (XDIarc == null) return null; if (XDIarc.hasCs()) return null; if (XDIarc.isCollection()) return null; if (XDIarc.isAttribute()) return null; if (! XDIarc.hasXRef()) return null; XDIXRef xref = XDIarc.getXRef(); if (! XDIConstants.XS_ROOT.equals(xref.getXs())) return null; if (! xref.hasIri()) return null; return xref.getIri(); }
/** * Returns the literal of the peer root arc. * @param arc A peer root arc. * @return The literal of the peer root arc. */ public static String getLiteralOfPeerRootXDIArc(XDIArc XDIarc) { if (XDIarc == null) return null; if (XDIarc.hasCs()) return null; if (XDIarc.isCollection()) return null; if (XDIarc.isAttribute()) return null; if (! XDIarc.hasXRef()) return null; XDIXRef xref = XDIarc.getXRef(); if (! XDIConstants.XS_ROOT.equals(xref.getXs())) return null; if (! xref.hasLiteralNode()) return null; return xref.getLiteralNode(); }
if (XDIarc.hasXRef() && XDIarc.getXRef().hasXDIArc()) { XDIArc xrefXDIArc = XDIarc.getXRef().getXDIArc(); XDIarcs.add(XDIArc.fromComponents(XDIarc.getCs(), XDIarc.isVariable(), XDIarc.isDefinition(), XDIarc.isCollection(), XDIarc.isAttribute(), XDIarc.isImmutable(), XDIarc.isRelative(), null, XDIXRef.fromComponents(XDIarc.getXRef().getXs(), replacedXrefXDIArc, null, null, null, null))); if (XDIarc.hasXRef() && XDIarc.getXRef().hasPartialSubjectAndPredicate()) { XDIAddress xrefPartialSubject = XDIarc.getXRef().getPartialSubject(); XDIAddress xrefPartialPredicate = XDIarc.getXRef().getPartialPredicate(); XDIarcs.add(XDIArc.fromComponents(XDIarc.getCs(), XDIarc.isVariable(), XDIarc.isDefinition(), XDIarc.isCollection(), XDIarc.isAttribute(), XDIarc.isImmutable(), XDIarc.isRelative(), null, XDIXRef.fromComponents(XDIarc.getXRef().getXs(), null, replacedXrefPartialSubject, replacedXrefPartialPredicate, null, null)));
public void testXDIXRef() throws Exception { Parser parser = this.getParser(); XDIXRef xref; xref = parser.parseXDIXRef("()"); assertTrue(xref.isEmpty()); xref = parser.parseXDIXRef("(=markus)"); assertFalse(xref.isEmpty()); assertEquals(parser.parseXDIArc("=markus"), xref.getXDIArc()); xref = parser.parseXDIXRef("(=markus/$add)"); assertFalse(xref.isEmpty()); assertEquals(parser.parseXDIAddress("=markus"), xref.getPartialSubject()); assertEquals(parser.parseXDIAddress("$add"), xref.getPartialPredicate()); xref = parser.parseXDIXRef("(data:,markus@projectdanube.org)"); assertFalse(xref.isEmpty()); assertEquals("data:,markus@projectdanube.org", xref.getIri()); xref = parser.parseXDIXRef("(email)"); assertFalse(xref.isEmpty()); assertEquals("email", xref.getLiteralNode()); }
public void testLiteralXRef() { Parser parser = this.getParser(); XDIArc s; s = parser.parseXDIArc("({[<#(name)>]})"); assertTrue(s.hasXRef()); assertEquals(s.getXRef(), parser.parseXDIXRef("({[<#(name)>]})")); assertEquals(s.getXRef().getXs(), XDIConstants.XS_ROOT); assertTrue(s.getXRef().hasXDIArc()); assertEquals(s.getXRef().getXDIArc(), parser.parseXDIArc("{[<#(name)>]}")); assertEquals(s.getXRef().getXDIArc(), parser.parseXDIArc("{[<#(name)>]}")); assertTrue(s.getXRef().getXDIArc().isCollection()); assertTrue(s.getXRef().getXDIArc().isAttribute()); assertTrue(s.getXRef().getXDIArc().hasXRef()); assertEquals(s.getXRef().getXDIArc().getXRef(), parser.parseXDIXRef("(name)")); assertEquals(s.getXRef().getXDIArc().getXRef().getXs(), XDIConstants.XS_ROOT); assertTrue(s.getXRef().getXDIArc().getXRef().hasLiteralNode()); assertEquals(s.getXRef().getXDIArc().getXRef().getLiteralNode(), "name"); }
/** * Returns the address of the peer root arc. * @param arc A peer root arc. * @return The address of the peer root arc. */ public static XDIAddress getXDIAddressOfPeerRootXDIArc(XDIArc XDIarc) { if (XDIarc == null) return null; if (XDIarc.hasCs()) return null; if (XDIarc.isCollection()) return null; if (XDIarc.isAttribute()) return null; if (! XDIarc.hasXRef()) return null; XDIXRef xref = XDIarc.getXRef(); if (! XDIConstants.XS_ROOT.equals(xref.getXs())) return null; if (! xref.hasXDIArc()) return null; return XDIAddress.fromComponent(xref.getXDIArc()); }
@Override protected XDIArc overrideToPeerRootXDIArc(XDIArc toPeerRootXDIArc) throws Xdi2AgentException { if (! toPeerRootXDIArc.hasXRef() || ! toPeerRootXDIArc.getXRef().hasXDIArc()) { throw new Xdi2AgentException("TO peer root is not a peer root: " + toPeerRootXDIArc); } if (! XDIConstants.CS_CLASS_RESERVED.equals(toPeerRootXDIArc.getXRef().getXDIArc().getCs())) return toPeerRootXDIArc; return BOOTSTRAP_OWNER_PEER_ROOT_XDI_ARC; } }
/** * Returns the predicate address of the inner root arc. * @param arc An inner root arc. * @return The predicate address of the inner root arc. */ public static XDIAddress getPredicateOfInnerRootXDIArc(XDIArc XDIarc) { if (XDIarc == null) return null; if (XDIarc.hasCs()) return null; if (XDIarc.isCollection()) return null; if (XDIarc.isAttribute()) return null; if (! XDIarc.hasXRef()) return null; XDIXRef xref = XDIarc.getXRef(); if (! XDIConstants.XS_ROOT.equals(xref.getXs())) return null; if (! xref.hasPartialSubjectAndPredicate()) return null; return xref.getPartialPredicate(); }
/** * Returns the subject address of the inner root arcc. * @param arc An inner root arc. * @return The subject address of the inner root arc. */ public static XDIAddress getSubjectOfInnerRootXDIArc(XDIArc XDIarc) { if (XDIarc == null) return null; if (XDIarc.hasCs()) return null; if (XDIarc.isCollection()) return null; if (XDIarc.isAttribute()) return null; if (! XDIarc.hasXRef()) return null; XDIXRef xref = XDIarc.getXRef(); if (! XDIConstants.XS_ROOT.equals(xref.getXs())) return null; if (! xref.hasPartialSubjectAndPredicate()) return null; return xref.getPartialSubject(); }
private boolean tryPutStatementIntoInnerJsonObject(XDIStatement XDIstatement, JsonObject jsonObject) throws IOException { XDIArc subjectFirstArc = XDIstatement.getSubject().getFirstXDIArc(); if (subjectFirstArc == null || (! subjectFirstArc.hasXRef()) || (! subjectFirstArc.getXRef().hasPartialSubjectAndPredicate())) return false; XDIAddress innerRootSubject = XDIstatement.getSubject().getFirstXDIArc().getXRef().getPartialSubject(); XDIAddress innerRootPredicate = XDIstatement.getSubject().getFirstXDIArc().getXRef().getPartialPredicate(); XDIStatement reducedStatementAddress = XDIStatementUtil.removeStartXDIStatement(XDIstatement, XDIAddress.fromComponent(subjectFirstArc)); if (reducedStatementAddress == null) return false; // find the inner root JSON array String innerRootKey = "" + innerRootSubject + "/" + innerRootPredicate; JsonArray innerRootJsonArray = (JsonArray) jsonObject.get(innerRootKey); if (innerRootJsonArray == null) { innerRootJsonArray = new JsonArray(); jsonObject.add(innerRootKey, innerRootJsonArray); } // find the inner root JSON object JsonObject innerRootJsonObject = findJsonObjectInJsonArray(innerRootJsonArray); if (innerRootJsonObject == null) { innerRootJsonObject = new JsonObject(); innerRootJsonArray.add(innerRootJsonObject); } // put the statement into the inner root JSON object this.putStatementIntoJsonObject(reducedStatementAddress, innerRootJsonObject); // done return true; }
protected Map<XDIArc, Object> getReplacements(XDIAddress XDIaddress) { Map<XDIArc, Object> replacements = null; for (XDIArc XDIarc : XDIaddress.getXDIArcs()) { if (this.replacements.containsKey(XDIarc)) { if (replacements == null) replacements = new HashMap<XDIArc, Object> (); replacements.put(XDIarc, this.replacements.get(XDIarc)); } else if (XDIarc.hasXRef() && XDIarc.getXRef().hasPartialSubjectAndPredicate()) { for (XDIArc partialSubjectXDIArc : XDIarc.getXRef().getPartialSubject().getXDIArcs()) { if (this.replacements.containsKey(partialSubjectXDIArc)) { if (replacements == null) replacements = new HashMap<XDIArc, Object> (); replacements.put(partialSubjectXDIArc, this.replacements.get(partialSubjectXDIArc)); } } for (XDIArc partialPredicateXDIArc : XDIarc.getXRef().getPartialSubject().getXDIArcs()) { if (this.replacements.containsKey(partialPredicateXDIArc)) { if (replacements == null) replacements = new HashMap<XDIArc, Object> (); replacements.put(partialPredicateXDIArc, this.replacements.get(partialPredicateXDIArc)); } } } } return replacements; } }
gom2.add(XDIarc.getXRef().getXs(), makeGom(XDIarc.getXRef())); gom = gom2;
private static XDIArc substituteXDIArc(XDIArc XDIarc, ExecutionContext executionContext) { if (! XDIConstants.XDI_ADD_COMMON_VARIABLE.equals(XDIarc)) return null; if (! XDIarc.getXRef().isEmpty()) return null; // substitute the arc XDIArc newArc = getVariablesPerMessageEnvelope(executionContext).get(XDIarc); if (newArc == null) { newArc = XdiEntityInstanceUnordered.createXDIArc(); putVariablePerMessageEnvelope(executionContext, XDIarc, newArc); putVariablePerOperation(executionContext, XDIarc, newArc); } // done return newArc; }