@Override public XDIStatement convert(String string) { return XDIStatement.create(string); } }
private static XDIStatement makeStatement(String statementString, State state) { state.lastString = statementString; return XDIStatement.create(statementString); }
private static void read(Graph graph, BufferedReader bufferedReader) throws IOException, Xdi2ParseException { String line; int lineNr = 0; while ((line = bufferedReader.readLine()) != null) { lineNr++; line = line.trim(); if (line.isEmpty()) continue; XDIStatement XDIstatement; try { XDIstatement = XDIStatement.create(line); } catch (Exception ex) { throw new Xdi2ParseException("Parser problem at line " + lineNr + ": " + ex.getMessage(), ex); } // add the statement to the graph try { graph.setStatement(XDIstatement); } catch (Exception ex) { throw new Xdi2ParseException("Graph problem at line " + lineNr + ": " + ex.getMessage(), ex); } } }
/** * Creates a new operation and adds it to this XDI message (template). * @param operationXDIAddress The operation address to use for the new operation. * @param target The target address or target statement to which the operation applies. * @return The newly created, empty operation, or null if the operation address is not valid. */ public Operation createOperation(XDIAddress operationXDIAddress, String target) { try { return this.createOperation(operationXDIAddress, XDIAddress.create(target)); } catch (Exception ex) { return this.createOperation(operationXDIAddress, XDIStatement.create(target)); } }
/** * Factory method that creates an XDI message envelope bound to a given graph. * @param operationXDIAddress The operation identifier to use for the new operation. * @param targetXDIAddressOrTargetStatement The target address or target statement to which the operation applies. * @return The XDI message envelope. */ public static final MessageEnvelope fromOperationXDIAddressAndTargetXDIAddressOrTargetXDIStatement(XDIAddress operationXDIAddress, String targetXDIAddressOrTargetStatement) { try { if (targetXDIAddressOrTargetStatement == null) targetXDIAddressOrTargetStatement = ""; XDIAddress targetXDIAddress = XDIAddress.create(targetXDIAddressOrTargetStatement); return MessageEnvelope.fromOperationXDIAddressAndTargetXDIAddress(operationXDIAddress, targetXDIAddress); } catch (Exception ex) { XDIStatement targetXDIStatement = XDIStatement.create(targetXDIAddressOrTargetStatement); return MessageEnvelope.fromOperationXDIAddressAndTargetXDIStatements(operationXDIAddress, new SingleItemIterator<XDIStatement> (targetXDIStatement)); } }
public void testMultipleReplacements() throws Exception { Graph graph1 = MemoryGraphFactory.getInstance().openGraph(); Graph graph2 = MemoryGraphFactory.getInstance().openGraph(); graph1.setStatement(XDIStatement.create("=a=b=c/+e/=f")); XDIArc from1 = XDIArc.create("=b"); List<XDIAddress> to1 = new ArrayList<XDIAddress> (); to1.add(XDIAddress.create("=x")); to1.add(XDIAddress.create("=y")); XDIArc from2 = XDIArc.create("=f"); List<XDIAddress> to2 = new ArrayList<XDIAddress> (); to2.add(XDIAddress.create("=m")); to2.add(XDIAddress.create("=n")); Map<XDIArc, Object> replacements = new HashMap<XDIArc, Object> (); replacements.put(from1, to1); replacements.put(from2, to2); CopyUtil.copyGraph(graph1, graph2, new ReplaceXDIAddressCopyStrategy(replacements)); assertTrue(graph2.containsStatement(XDIStatement.create("=a=x=c/+e/=m"))); assertTrue(graph2.containsStatement(XDIStatement.create("=a=x=c/+e/=n"))); assertTrue(graph2.containsStatement(XDIStatement.create("=a=y=c/+e/=m"))); assertTrue(graph2.containsStatement(XDIStatement.create("=a=y=c/+e/=n"))); assertEquals(graph2.getAllStatementCount(), 11); graph1.close(); graph2.close(); }
public void testNormalizedSerialization() throws Exception { Graph graph = MemoryGraphFactory.getInstance().openGraph(); graph.setStatement(XDIStatement.create("=markus<#email>/&/\"markus@projectdanube.org\"")); graph.setStatement(XDIStatement.create("=markus/#friend/=animesh")); ContextNode contextNode = graph.getDeepContextNode(XDIAddress.create("=markus")); String normalizedSerialization = "{\"/\":[\"=animesh\",\"=markus\"],\"=markus/\":[\"<#email>\"],\"=markus/#friend\":[\"=animesh\"],\"=markus<#email>/&\":\"markus@projectdanube.org\"}"; assertEquals(Normalization.serialize(contextNode, null), normalizedSerialization); graph.close(); } }
public void testCopyUtil() throws Exception { Graph graph = MemoryGraphFactory.getInstance().openGraph(); graph.setStatement(XDIStatement.create("=markus<#email>/&/\"markus@projectdanube.org\"")); graph.setStatement(XDIStatement.create("=markus/#friend/=neustar=animesh")); graph.setStatement(XDIStatement.create("=neustar=animesh<#email>/&/\"animesh@gmail.com\"")); graph.setStatement(XDIStatement.create("=neustar=animesh/#friend/=markus")); Graph graph2 = MemoryGraphFactory.getInstance().openGraph(); CopyUtil.copyGraph(graph, graph2, null); Graph graph3 = MemoryGraphFactory.getInstance().openGraph(); CopyUtil.copyGraph(graph, graph3, null); CopyUtil.copyGraph(graph2, graph3, null); assertEquals(graph, graph2); assertEquals(graph2, graph3); assertEquals(graph3, graph); graph.close(); graph2.close(); graph3.close(); }
public void testNoExceptions() throws Exception { Graph graph17 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-17"); graph17.setStatement(XDIStatement.create("=markus<#email>/&/\"Markus Sabadello\"")); graph17.setStatement(XDIStatement.create("=markus/#friend/=neustar=les")); ContextNode root = graph17.getRootContextNode(); ContextNode markus = graph17.getDeepContextNode(XDIAddress.create("=markus")); ContextNode les = graph17.getDeepContextNode(XDIAddress.create("=neustar=les")); root.setContextNode(XDIArc.create("=markus")); markus.setDeepContextNode(XDIAddress.create("<#email>")).setLiteralNode("test"); markus.setRelation(XDIAddress.create("#friend"), les); graph17.close(); }
public void testDeleteCyclicRelation() throws Exception { Graph graph31 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-31"); graph31.setStatement(XDIStatement.create("=a=b=c=d=e/+x/=a=b=c")); graph31.setStatement(XDIStatement.create("=m=n=o/+y/=a=b=c=d")); graph31.getDeepContextNode(XDIAddress.create("=a=b")).delete(); assertEquals(graph31.getRootContextNode().getAllContextNodeCount(), 4); assertEquals(graph31.getRootContextNode().getAllRelationCount(), 0); assertEquals(graph31.getRootContextNode().getAllStatementCount(), 4); graph31.close(); }
XDIStatement contextStatement = XDIStatement.create("=markus<#full>//<#name>"); assertEquals(reducedContextStatement, XDIStatement.create("<#full>//<#name>")); assertEquals(reducedContextStatement.getSubject(), XDIAddress.create("<#full>")); assertEquals(reducedContextStatement.getPredicate(), XDIAddress.create("")); assertEquals(reducedContextStatement.getObject(), "<#name>"); assertEquals(XDIStatementUtil.removeStartXDIStatement(reducedContextStatement, XDIAddress.create("{}"), false, true), XDIStatement.create("//<#name>")); XDIStatement literalStatement = XDIStatement.create("=markus<#name>/&/\"Markus Sabadello\""); assertEquals(reducedLiteralStatement, XDIStatement.create("<#name>/&/\"Markus Sabadello\"")); assertEquals(reducedLiteralStatement.getSubject(), XDIAddress.create("<#name>&")); assertEquals(reducedLiteralStatement.getPredicate(), XDIAddress.create("&")); assertEquals(reducedLiteralStatement.getObject(), "Markus Sabadello"); assertEquals(XDIStatementUtil.removeStartXDIStatement(reducedLiteralStatement, XDIAddress.create("{}"), false, true), XDIStatement.create("/&/\"Markus Sabadello\"")); assertEquals(XDIStatementUtil.removeStartXDIStatement(reducedLiteralStatement, XDIAddress.create("{}{}"), false, true), XDIStatement.create("/&/\"Markus Sabadello\"")); XDIStatement relationStatement = XDIStatement.create("=markus<#name>/$ref/=markus<#full><#name>"); assertEquals(reducedRelationStatement1, XDIStatement.create("<#name>/$ref/=markus<#full><#name>")); assertEquals(reducedRelationStatement1.getSubject(), XDIAddress.create("<#name>")); assertEquals(reducedRelationStatement1.getPredicate(), XDIAddress.create("$ref")); assertEquals(reducedRelationStatement1.getObject(), "=markus<#full><#name>"); assertEquals(XDIStatementUtil.removeStartXDIStatement(reducedRelationStatement1, XDIAddress.create("{}"), false, true), XDIStatement.create("/$ref/=markus<#full><#name>")); assertEquals(reducedRelationStatement2, XDIStatement.create("<#name>/$ref/=markus<#full><#name>"));
public void testDelRelationDelInnerRoot() throws Exception { Graph graph33 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-33"); graph33.getRootContextNode().setContextNode(XDIArc.create("(=a/#b)")); assertEquals(graph33.getAllStatementCount(), 3); graph33.getRootContextNode().getContextNode(XDIArc.create("=a")).delRelations(XDIAddress.create("#b")); assertEquals(graph33.getAllStatementCount(), 1); assertFalse(graph33.containsStatement(XDIStatement.create("//(=a/#b)"))); assertTrue(graph33.containsStatement(XDIStatement.create("//=a"))); assertFalse(graph33.containsStatement(XDIStatement.create("=a/#b/(=a/#b)"))); graph33.clear(); graph33.getRootContextNode().setContextNode(XDIArc.create("(/#b)")); assertEquals(graph33.getAllStatementCount(), 2); graph33.getRootContextNode().delRelations(XDIAddress.create("#b")); assertEquals(graph33.getAllStatementCount(), 0); assertFalse(graph33.containsStatement(XDIStatement.create("//(/#b)"))); assertFalse(graph33.containsStatement(XDIStatement.create("/#b/(/#b)"))); graph33.clear(); graph33.close(); }
public void testSignAndValidateKeyPair() throws Exception { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); keyPairGen.initialize(1024); KeyPair keyPair = keyPairGen.generateKeyPair(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); Graph graph = MemoryGraphFactory.getInstance().openGraph(); graph.setStatement(XDIStatement.create("=markus<#email>/&/\"markus@projectdanube.org\"")); graph.setStatement(XDIStatement.create("=markus/#friend/=animesh")); ContextNode contextNode = graph.getDeepContextNode(XDIAddress.create("=markus")); RSASignature signature = new RSAStaticPrivateKeySignatureCreator(privateKey).createSignature(contextNode); signature = (RSASignature) Signatures.getSignatures(contextNode).next(); assertEquals(signature.getDigestAlgorithm(), RSASignature.DIGEST_ALGORITHM_SHA); assertEquals(signature.getDigestVersion(), Integer.valueOf(256)); assertEquals(signature.getKeyAlgorithm(), RSASignature.KEY_ALGORITHM_RSA); assertEquals(signature.getKeyLength(), Integer.valueOf(1024)); assertEquals(signature.getJCEAlgorithm(), "SHA256withRSA"); assertEquals(signature.getBaseContextNode(), contextNode); assertTrue(new RSAStaticPublicKeySignatureValidator(publicKey).validateSignature(signature)); contextNode.setRelation(XDIAddress.create("#friend"), XDIAddress.create("=joseph")); assertFalse(new RSAStaticPublicKeySignatureValidator(publicKey).validateSignature(signature)); graph.close(); }
assertTrue(graph32.containsStatement(XDIStatement.create("//(=a/#b)"))); assertTrue(graph32.containsStatement(XDIStatement.create("//=a"))); assertTrue(graph32.containsStatement(XDIStatement.create("=a/#b/(=a/#b)"))); graph32.clear(); assertTrue(graph32.containsStatement(XDIStatement.create("//(=a/)"))); assertTrue(graph32.containsStatement(XDIStatement.create("//=a"))); graph32.clear(); assertTrue(graph32.containsStatement(XDIStatement.create("//(/#b)"))); assertTrue(graph32.containsStatement(XDIStatement.create("/#b/(/#b)"))); graph32.clear(); assertTrue(graph32.containsStatement(XDIStatement.create("//(/)"))); graph32.clear(); assertTrue(graph32.containsStatement(XDIStatement.create("//(=a)"))); graph32.clear(); assertTrue(graph32.containsStatement(XDIStatement.create("//()"))); graph32.clear();
public void testMessageEnvelope() throws Exception { Graph graph = this.openGraph(this.getClass().getName() + "-graph-me-1"); GraphMessagingContainer graphMessagingContainer = new GraphMessagingContainer(); graphMessagingContainer.setGraph(graph); graphMessagingContainer.init(); MessageEnvelope messageEnvelope1 = MessageEnvelope.fromOperationXDIAddressAndTargetXDIStatements(XDIMessagingConstants.XDI_ADD_SET, new SingleItemIterator<XDIStatement> (XDIStatement.create("=markus/#friend/=giovanni"))); ExecutionContext executionContext1 = ExecutionContext.createExecutionContext(); ExecutionResult executionResult1 = ExecutionResult.createExecutionResult(messageEnvelope1); graphMessagingContainer.execute(messageEnvelope1, executionContext1, executionResult1); MessageEnvelope messageEnvelope2 = MessageEnvelope.fromOperationXDIAddressAndTargetXDIAddress(XDIMessagingConstants.XDI_ADD_GET, XDIAddress.create("=markus")); ExecutionContext executionContext2 = ExecutionContext.createExecutionContext(); ExecutionResult executionResult2 = ExecutionResult.createExecutionResult(messageEnvelope2); graphMessagingContainer.execute(messageEnvelope2, executionContext2, executionResult2); assertEquals(executionResult2.makeLightMessagingResponse().getResultGraph().getDeepContextNode(XDIAddress.create("=markus")).getRelation(XDIAddress.create("#friend")).getTargetXDIAddress(), XDIAddress.create("=giovanni")); graphMessagingContainer.shutdown(); }
public void testPermissions() throws Exception { Graph graph = MemoryGraphFactory.getInstance().openGraph(); LinkContract lc = RelationshipLinkContract.findRelationshipLinkContract(graph, XDIAddress.create("=a"), XDIAddress.create("=b"), null, null, true); lc.setPermissionTargetXDIAddress(XDILinkContractConstants.XDI_ADD_GET, XDIAddress.create("=a")); lc.setPermissionTargetXDIStatement(XDILinkContractConstants.XDI_ADD_GET, XDIStatement.create("=a/#b/=c")); assertTrue(lc.getPermissionTargetXDIAddresses(XDILinkContractConstants.XDI_ADD_GET).hasNext()); assertEquals(lc.getPermissionTargetXDIAddresses(XDILinkContractConstants.XDI_ADD_GET).next(), XDIAddress.create("=a")); assertTrue(lc.getPermissionTargetXDIStatements(XDILinkContractConstants.XDI_ADD_GET).hasNext()); assertEquals(lc.getPermissionTargetXDIStatements(XDILinkContractConstants.XDI_ADD_GET).next(), XDIStatement.create("=a/#b/=c")); lc.delPermissionTargetXDIAddress(XDILinkContractConstants.XDI_ADD_GET, XDIAddress.create("=a")); lc.delPermissionTargetXDIStatements(XDILinkContractConstants.XDI_ADD_GET); assertFalse(lc.getPermissionTargetXDIAddresses(XDILinkContractConstants.XDI_ADD_GET).hasNext()); assertFalse(lc.getPermissionTargetXDIStatements(XDILinkContractConstants.XDI_ADD_GET).hasNext()); graph.close(); } }
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); }
public void testDeleteContextNodesDeletesRelations() throws Exception { Graph graph27 = this.getGraphFactory().openGraph(this.getClass().getName() + "-graph-27"); Relation r1 = graph27.setDeepContextNode(XDIAddress.create("=animesh")).setRelation(XDIAddress.create("#friend"), XDIAddress.create("=markus")); Relation r2 = graph27.setDeepContextNode(XDIAddress.create("=markus")).setRelation(XDIAddress.create("#friend"), XDIAddress.create("=animesh")); ContextNode markus = (ContextNode) r1.follow(); ContextNode animesh = (ContextNode) r2.follow(); markus.delete(); assertNotNull(graph27.getDeepContextNode(XDIAddress.create("=animesh"))); assertFalse(graph27.getDeepContextNode(XDIAddress.create("=animesh")).getRelations().hasNext()); assertFalse(graph27.getDeepContextNode(XDIAddress.create("=animesh")).getRelations(XDIAddress.create("#friend")).hasNext()); assertEquals(graph27.getDeepContextNode(XDIAddress.create("=animesh")).getRelationCount(), 0); assertFalse(graph27.getDeepContextNode(XDIAddress.create("=animesh")).getIncomingRelations().hasNext()); assertFalse(graph27.getDeepContextNode(XDIAddress.create("=animesh")).getIncomingRelations(XDIAddress.create("#friend")).hasNext()); assertFalse(animesh.getRelations().hasNext()); assertFalse(animesh.getRelations(XDIAddress.create("#friend")).hasNext()); assertEquals(animesh.getRelationCount(), 0); assertFalse(animesh.getIncomingRelations().hasNext()); assertFalse(animesh.getIncomingRelations(XDIAddress.create("#friend")).hasNext()); animesh.delete(); graph27.setStatement(XDIStatement.create("+a+b/$i/=x")); graph27.setStatement(XDIStatement.create("=x/$i/=y")); graph27.getRootContextNode().getContextNode(XDIArc.create("+a")).delete(); assertEquals(graph27.getRootContextNode().getAllRelationCount(), 1); assertTrue(graph27.getRootContextNode().getContextNode(XDIArc.create("=x")).getRelations().hasNext()); assertFalse(graph27.getRootContextNode().getContextNode(XDIArc.create("=x")).getIncomingRelations().hasNext()); graph27.getRootContextNode().getContextNode(XDIArc.create("=x")).delete(); assertEquals(graph27.getRootContextNode().getAllRelationCount(), 0); graph27.close(); }