public Object getLiteralData() { if (this.isLiteralStatement()) { return this.getObject(); } return null; } }
public XDIArc getContextNodeXDIArc() { if (this.isContextNodeStatement()) { return (XDIArc) this.getObject(); } return null; }
private static JsonArray makeGom(XDIStatement statement) { JsonArray gom = new JsonArray(); gom.add(makeGom(statement.getSubject())); gom.add(makeGom(statement.getPredicate())); if (statement.getObject() instanceof XDIAddress) gom.add(makeGom((XDIAddress) statement.getObject())); else if (statement.getObject() instanceof XDIArc) gom.add(makeGom((XDIArc) statement.getObject())); else gom.add(AbstractLiteralNode.literalDataToJsonElement(statement.getObject())); return gom; }
public boolean isContextNodeStatement() { if (! (this.getPredicate() instanceof String)) return false; if (! XDIConstants.STRING_CONTEXT.equals(this.getPredicate())) return false; if (! (this.getObject() instanceof XDIArc)) return false; if (XDIConstants.XDI_ADD_ROOT.toString().equals(this.getObject().toString())) return false; return true; }
private static void addObjectToJsonObject(XDIStatement XDIstatement, JsonObject jsonObject, String key) { if (XDIstatement.isLiteralStatement()) { Object literalData = XDIstatement.getLiteralData(); jsonObject.add(key, AbstractLiteralNode.literalDataToJsonElement(literalData)); } else { JsonArray jsonArray = (JsonArray) jsonObject.get(key); if (jsonArray == null) { jsonArray = new JsonArray(); jsonObject.add(key, jsonArray); } jsonArray.add(new JsonPrimitive(XDIstatement.getObject().toString())); } } }
public boolean isRelationStatement() { if (! (this.getPredicate() instanceof XDIAddress)) return false; if (XDIConstants.STRING_CONTEXT.equals(this.getPredicate().toString())) return false; if (XDIConstants.XDI_ARC_LITERAL.toString().equals(this.getPredicate().toString())) return false; if (! (this.getObject() instanceof XDIAddress)) return false; return true; }
/** * Removes a start address from a statement. * E.g. for =a*b*c*d/&/... and =a*b, this returns *c*d/&/... */ public static XDIStatement removeStartXDIStatement(final XDIStatement statement, final XDIAddress start, final boolean variablesInAddress, boolean variablesInStart) { if (statement == null) throw new NullPointerException(); if (start == null) throw new NullPointerException(); XDIStatement result = null; try { XDIAddress subject; Object predicate; Object object; // subject subject = XDIAddressUtil.removeStartXDIAddress(statement.getSubject(), start, variablesInAddress, variablesInStart); if (subject == null) { result = null; return result; } // predicate predicate = statement.getPredicate(); // object object = statement.getObject(); { result = XDIStatement.fromComponents(subject, predicate, object); return result; } } finally { if (log.isTraceEnabled()) log.trace("removeStartXDIStatement(" + statement + "," + start + "," + variablesInAddress + "," + variablesInStart + ") --> " + result); } }
object = statement.getObject();
public boolean isLiteralStatement() { if (! (this.getPredicate() instanceof XDIArc)) return false; if (! XDIConstants.XDI_ARC_LITERAL.equals(this.getPredicate())) return false; if (! AbstractLiteralNode.isValidLiteralData(this.getObject())) return false; return true; }
private void writeStatement(BufferedWriter bufferedWriter, XDIStatement XDIstatement) throws IOException { // write the statement this.writeContextNodeXDIAddress(bufferedWriter, XDIstatement.getSubject()); this.writeSeparator(bufferedWriter); this.writePredicate(bufferedWriter, XDIstatement.getPredicate()); this.writeSeparator(bufferedWriter); if (XDIstatement.isContextNodeStatement()) { this.writeContextNodeXDIArc(bufferedWriter, XDIstatement.getSubject(), (XDIArc) XDIstatement.getObject()); } else if (XDIstatement.isRelationStatement()) { this.writeContextNodeXDIAddress(bufferedWriter, (XDIAddress) XDIstatement.getObject()); } else if (XDIstatement.isLiteralStatement()) { this.writeLiteralData(bufferedWriter, XDIstatement.getObject()); } }
@Override public XDIStatement targetStatement(XDIStatement targetStatement, Operation operation, Graph operationResultGraph, ExecutionContext executionContext) throws Xdi2MessagingException { if (! (operation instanceof SetOperation)) return targetStatement; XDIAddress substitutedTargetSubject = substituteAddress(targetStatement.getSubject(), executionContext); Object substitutedTargetPredicate = targetStatement.getPredicate() instanceof XDIAddress ? substituteAddress((XDIAddress) targetStatement.getPredicate(), executionContext) : targetStatement.getPredicate(); Object substitutedTargetObject = substituteObject(targetStatement.getObject(), executionContext); if (substitutedTargetSubject == targetStatement.getSubject() && substitutedTargetPredicate == targetStatement.getPredicate() && substitutedTargetObject == targetStatement.getObject()) return targetStatement; return XDIStatement.fromComponents(substitutedTargetSubject, substitutedTargetPredicate, substitutedTargetObject); }
@Override public boolean evaluateInternal(PolicyEvaluationContext policyEvaluationContext) { // check if subject address and object address are the same XDIAddress subject = policyEvaluationContext.resolveXDIAddress(this.getXDIStatement().getSubject()); XDIAddress object = policyEvaluationContext.resolveXDIAddress((XDIAddress) this.getXDIStatement().getObject()); if (subject == null || object == null) return false; if (subject.equals(object)) return true; // done return false; } }
@Override public boolean evaluateInternal(PolicyEvaluationContext policyEvaluationContext) { ContextNode subject = policyEvaluationContext.getContextNode(this.getXDIStatement().getSubject()); ContextNode object = policyEvaluationContext.getContextNode((XDIAddress) this.getXDIStatement().getObject()); if (subject == null || object == null) return false; if (subject.containsLiteralNode()) { if (! (object.containsLiteralNode())) return false; Object subjectLiteralData = subject.getLiteralNode().getLiteralData(); Object objectLiteralData = object.getLiteralNode().getLiteralData(); if (subjectLiteralData == null || objectLiteralData == null) return false; return AbstractLiteralNode.LITERALDATACOMPARATOR.compare(subjectLiteralData, objectLiteralData) < 0; } return false; } }
@Override public boolean evaluateInternal(PolicyEvaluationContext policyEvaluationContext) { ContextNode subject = policyEvaluationContext.getContextNode(this.getXDIStatement().getSubject()); ContextNode object = policyEvaluationContext.getContextNode((XDIAddress) this.getXDIStatement().getObject()); if (subject == null || object == null) return false; if (subject.containsLiteralNode()) { if (! (object.containsLiteralNode())) return false; Object subjectLiteralData = subject.getLiteralNode().getLiteralData(); Object objectLiteralData = object.getLiteralNode().getLiteralData(); if (subjectLiteralData == null || objectLiteralData == null) return false; return AbstractLiteralNode.LITERALDATACOMPARATOR.compare(subjectLiteralData, objectLiteralData) > 0; } return false; } }
@Override public boolean evaluateInternal(PolicyEvaluationContext policyEvaluationContext) { ContextNode subject = policyEvaluationContext.getContextNode(this.getXDIStatement().getSubject()); ContextNode object = policyEvaluationContext.getContextNode((XDIAddress) this.getXDIStatement().getObject()); if (subject == null || object == null) return false; if (subject.containsLiteralNode()) { if (! (object.containsLiteralNode())) return false; String subjectLiteralData = subject.getLiteralNode().getLiteralDataString(); String objectLiteralData = object.getLiteralNode().getLiteralDataString(); if (subjectLiteralData == null || objectLiteralData == null) return false; return Pattern.matches(objectLiteralData, subjectLiteralData); } return false; } }
@Override public boolean evaluateInternal(PolicyEvaluationContext policyEvaluationContext) { ContextNode subject = policyEvaluationContext.getContextNode(this.getXDIStatement().getSubject()); ContextNode object = policyEvaluationContext.getContextNode((XDIAddress) this.getXDIStatement().getObject()); if (subject == null || object == null) return false; if (subject.containsLiteralNode()) { if (! (object.containsLiteralNode())) return false; Object subjectLiteralData = subject.getLiteralNode().getLiteralData(); Object objectLiteralData = object.getLiteralNode().getLiteralData(); if (subjectLiteralData == null || objectLiteralData == null) return false; return AbstractLiteralNode.isLiteralDataEqual(subjectLiteralData, objectLiteralData); } return false; } }
public void testComponents() throws Exception { XDIStatement contextNodeStatement = XDIStatement.create("=markus//[<#email>]"); XDIStatement contextNodeStatement2 = XDIStatement.fromComponents(XDIAddress.create("=markus"), XDIConstants.STRING_CONTEXT, XDIArc.create("[<#email>]")); XDIStatement contextNodeStatement3 = XDIStatement.fromContextNodeComponents(XDIAddress.create("=markus"), XDIArc.create("[<#email>]")); assertEquals(contextNodeStatement.getSubject(), XDIAddress.create("=markus")); assertEquals(contextNodeStatement.getPredicate(), XDIConstants.STRING_CONTEXT); assertEquals(contextNodeStatement.getObject(), XDIArc.create("[<#email>]")); assertEquals(contextNodeStatement, contextNodeStatement2); assertEquals(contextNodeStatement, contextNodeStatement3); XDIStatement relationStatement = XDIStatement.create("=markus/+friend/=animesh"); XDIStatement relationStatement2 = XDIStatement.fromComponents(XDIAddress.create("=markus"), XDIAddress.create("+friend"), XDIAddress.create("=animesh")); XDIStatement relationStatement3 = XDIStatement.fromRelationComponents(XDIAddress.create("=markus"), XDIAddress.create("+friend"), XDIAddress.create("=animesh")); assertEquals(relationStatement, relationStatement2); assertEquals(relationStatement, relationStatement3); assertEquals(relationStatement.getSubject(), XDIAddress.create("=markus")); assertEquals(relationStatement.getPredicate(), XDIAddress.create("+friend")); assertEquals(relationStatement.getObject(), XDIAddress.create("=animesh")); XDIStatement literalStatement = XDIStatement.create("=markus<#name>/&/\"Markus Sabadello\""); XDIStatement literalStatement2 = XDIStatement.fromComponents(XDIAddress.create("=markus<#name>"), XDIConstants.XDI_ARC_LITERAL, "Markus Sabadello"); XDIStatement literalStatement3 = XDIStatement.fromLiteralComponents(XDIAddress.create("=markus<#name>"), "Markus Sabadello"); assertEquals(literalStatement.getSubject(), XDIAddress.create("=markus<#name>")); assertEquals(literalStatement.getPredicate(), XDIConstants.XDI_ARC_LITERAL.toString()); assertEquals(literalStatement.getObject(), "Markus Sabadello"); assertEquals(literalStatement, literalStatement2); assertEquals(literalStatement, literalStatement3); }
assertEquals(reducedContextStatement.getSubject(), XDIAddress.create("<#full>")); assertEquals(reducedContextStatement.getPredicate(), XDIAddress.create("")); assertEquals(reducedContextStatement.getObject(), "<#name>"); assertEquals(reducedLiteralStatement.getSubject(), XDIAddress.create("<#name>&")); assertEquals(reducedLiteralStatement.getPredicate(), XDIAddress.create("&")); assertEquals(reducedLiteralStatement.getObject(), "Markus Sabadello"); assertEquals(reducedRelationStatement1.getSubject(), XDIAddress.create("<#name>")); assertEquals(reducedRelationStatement1.getPredicate(), XDIAddress.create("$ref")); assertEquals(reducedRelationStatement1.getObject(), "=markus<#full><#name>"); assertEquals(reducedRelationStatement2.getSubject(), XDIAddress.create("<#name>")); assertEquals(reducedRelationStatement2.getPredicate(), XDIAddress.create("$ref")); assertEquals(reducedRelationStatement2.getObject(), "=markus<#full><#name>");
assertEquals(statement.getObject(), "xxx");