package org.openrdf.repository.object; import junit.framework.Test; import org.openrdf.annotations.Iri; import org.openrdf.repository.object.base.ObjectRepositoryTestCase; import org.openrdf.result.Result; public class FunctionalPropertyTest extends ObjectRepositoryTestCase { public static Test suite() throws Exception { return ObjectRepositoryTestCase.suite(FunctionalPropertyTest.class); } @Iri("urn:test:MyResource") public static class MyResource { @Iri("urn:test:name") private String name; public MyResource() { super(); } public MyResource(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } @Iri("urn:test:MyClass") public static class MyClass { @Iri("urn:test:name") private String name; @Iri("urn:test:resource") private MyResource resource; public MyClass() { super(); } public MyClass(String name, MyResource resource) { this.name = name; this.resource = resource; } public String getName() { return name; } public void setName(String name) { this.name = name; } public MyResource getMyResource() { return resource; } public void setMyResource(MyResource resource) { this.resource = resource; } } @Iri("urn:test:MyInterfaceResource") public interface MyInterfaceResource { @Iri("urn:test:name") String getName(); void setName(String name); } @Iri("urn:test:MyInterface") public interface MyInterface { @Iri("urn:test:name") String getName(); void setName(String name); @Iri("urn:test:resource") MyInterfaceResource getMyInterfaceResource(); void setMyInterfaceResource(MyInterfaceResource resource); } public void setUp() throws Exception { config.addConcept(MyClass.class); config.addConcept(MyResource.class); config.addConcept(MyInterface.class); config.addConcept(MyInterfaceResource.class); super.setUp(); } public void testClass() throws Exception { con.addObject(new MyClass("my class", new MyResource("my resource"))); Result<MyClass> result = con.getObjects(MyClass.class); while (result.hasNext()) { assertEquals("my resource", result.next().getMyResource().getName()); } result.close(); } public void testInterface() throws Exception { con.setAutoCommit(false); MyInterface my = con.addDesignation(of.createObject(), MyInterface.class); MyInterfaceResource res = con.addDesignation(of.createObject(), MyInterfaceResource.class); my.setName("my interface"); my.setMyInterfaceResource(res); res.setName("my interface resource"); con.setAutoCommit(true); Result<MyInterface> result = con.getObjects(MyInterface.class); while (result.hasNext()) { assertEquals("my interface resource", result.next().getMyInterfaceResource().getName()); } result.close(); } public void testEmptyClass() throws Exception { con.addObject(new MyClass("my class", null)); Result<MyClass> result = con.getObjects(MyClass.class); while (result.hasNext()) { assertNull(result.next().getMyResource()); } result.close(); } public void testEmptyInterface() throws Exception { con.setAutoCommit(false); MyInterface my = con.addDesignation(of.createObject(), MyInterface.class); my.setName("my interface"); con.setAutoCommit(true); Result<MyInterface> result = con.getObjects(MyInterface.class); while (result.hasNext()) { assertNull(result.next().getMyInterfaceResource()); } result.close(); } }