Skip to content

Package: CreateOperationsRunner

CreateOperationsRunner

nameinstructionbranchcomplexitylinemethod
CreateOperationsRunner(Logger)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
persistAllowsOverridingGlobalLanguageWithLocalEmptyTag()
M: 0 C: 65
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
persistAllowsToSpecifyLanguageTagPerEntityAndOverrideItOnAttributeLevel()
M: 0 C: 106
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 19
100%
M: 0 C: 1
100%
persistEntityAndReferenceWithNonNullGeneratedIdentifiersDoesNotRewriteThem()
M: 0 C: 81
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 20
100%
M: 0 C: 1
100%
persistEntityWithDatatypePropertyCollectionPersistsAllValues()
M: 0 C: 46
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
persistEntityWithNonNullGeneratedIdentifierDoesNotRewriteIdentifier()
M: 0 C: 51
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
persistNullThrowsNPX()
M: 5 C: 10
67%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
M: 0 C: 1
100%
persistSetsStringLiteralLanguageTagAccordingToDescriptor()
M: 0 C: 56
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
persistSetsStringLiteralLanguageTagToGloballyConfiguredValueWhenDescriptorDoesNotSpecifyIt()
M: 0 C: 45
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
persistTwoInstancesOfDifferentClassesWithSameUriIntoDifferentPersistenceContextsIsLegal()
M: 0 C: 64
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 16
100%
M: 0 C: 1
100%
persistTwoInstancesOfDifferentClassesWithSameUriIntoTheSamePersistenceContextIsIllegal()
M: 9 C: 31
78%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 3 C: 8
73%
M: 0 C: 1
100%
persistingDetachedEntityIsIllegal()
M: 9 C: 34
79%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 3 C: 6
67%
M: 0 C: 1
100%
persistingEntityWithReferencedListWithoutCascadeIsIllegal()
M: 10 C: 11
52%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
M: 0 C: 1
100%
persistingEntityWithSimpleListWithoutCascadeIsIllegal()
M: 10 C: 11
52%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 2
50%
M: 0 C: 1
100%
persistingEntityWithoutIdAndWithoutGeneratedIdThrowsException()
M: 9 C: 13
59%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 3
60%
M: 0 C: 1
100%
persistingInRollbackOnlyThrowsExceptionOnCommit()
M: 5 C: 19
79%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 4
67%
M: 0 C: 1
100%
persistingOnlyOnePartOfRelationWithoutCascadeThrowsRollbackException()
M: 10 C: 6
38%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 2 C: 1
33%
M: 0 C: 1
100%
testPersistAndRollbackChanges()
M: 0 C: 42
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
testPersistAndUpdateAttributeBeforeCommit()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
testPersistEntityWithBasicTypeAttributes()
M: 0 C: 66
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
testPersistEntityWithEnumAttribute()
M: 0 C: 33
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 6
100%
M: 0 C: 1
100%
testPersistEntityWithUriTypes()
M: 0 C: 53
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
testPersistInstanceWithAnnotationProperties()
M: 0 C: 57
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testPersistInstanceWithPlainIdentifierObjectPropertyValue()
M: 0 C: 45
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
testPersistInstanceWithPluralObjectPropertyAttributeRepresentedByUrls()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 11
100%
M: 0 C: 1
100%
testPersistInstanceWithReferencedListOfIdentifiers()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
testPersistInstanceWithSimpleListOfIdentifiers()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
testPersistSimpleAndReferencedList()
M: 0 C: 137
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 23
100%
M: 0 C: 1
100%
testPersistTypedProperties()
M: 0 C: 44
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
testPersistWithCascade()
M: 0 C: 62
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
testPersistWithEmptyProperties()
M: 0 C: 59
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
testPersistWithGeneratedId()
M: 0 C: 76
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 12
100%
M: 0 C: 1
100%
testPersistWithProperties()
M: 0 C: 129
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 27
100%
M: 0 C: 1
100%
testPersistWithReferencedList()
M: 0 C: 108
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 19
100%
M: 0 C: 1
100%
testPersistWithSimpleList()
M: 0 C: 80
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 15
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2016 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: * <p>
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.test.runner;
16:
17: import cz.cvut.kbss.jopa.exceptions.OWLEntityExistsException;
18: import cz.cvut.kbss.jopa.exceptions.RollbackException;
19: import cz.cvut.kbss.jopa.model.EntityManager;
20: import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
21: import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor;
22: import cz.cvut.kbss.jopa.test.*;
23: import cz.cvut.kbss.jopa.test.environment.Generators;
24: import cz.cvut.kbss.jopa.test.environment.Triple;
25: import cz.cvut.kbss.ontodriver.exception.PrimaryKeyNotSetException;
26: import org.junit.Test;
27: import org.slf4j.Logger;
28:
29: import java.net.URI;
30: import java.net.URL;
31: import java.util.*;
32:
33: import static org.junit.Assert.*;
34:
35: public abstract class CreateOperationsRunner extends BaseRunner {
36:
37: protected CreateOperationsRunner(Logger logger) {
38: super(logger);
39: }
40:
41: @Test
42: public void testPersistWithGeneratedId() {
43: this.em = getEntityManager("PersistWithGenerated", false);
44: persist(entityA, entityE);
45:
46: final OWLClassA resA1 = em.find(OWLClassA.class, entityA.getUri());
47: assertNotNull(resA1);
48: assertEquals(entityA.getStringAttribute(), resA1.getStringAttribute());
49: assertEquals(entityA.getTypes().size(), resA1.getTypes().size());
50: assertTrue(entityA.getTypes().containsAll(resA1.getTypes()));
51:
52: assertNotNull(entityE.getUri());
53: final OWLClassE resE = em.find(OWLClassE.class, entityE.getUri());
54: assertNotNull(resE);
55: assertEquals(entityE.getStringAttribute(), resE.getStringAttribute());
56: }
57:
58: @Test(expected = PrimaryKeyNotSetException.class)
59: public void persistingEntityWithoutIdAndWithoutGeneratedIdThrowsException() {
60: this.em = getEntityManager("PersistWithoutId", false);
61: final OWLClassB b = new OWLClassB();
62: b.setStringAttribute("someValue");
63: persist(b);
64: }
65:
66: @Test(expected = NullPointerException.class)
67: public void persistNullThrowsNPX() {
68: this.em = getEntityManager("PersistNull", false);
69: em.getTransaction().begin();
70: em.persist(null);
71: }
72:
73: @Test
74: public void testPersistAndRollbackChanges() {
75: this.em = getEntityManager("PersistRollback", false);
76: em.getTransaction().begin();
77: em.persist(entityE);
78: assertTrue(em.contains(entityE));
79: em.getTransaction().rollback();
80:
81: assertFalse(em.contains(entityE));
82: assertNull(em.find(entityE.getClass(), entityE.getUri()));
83: }
84:
85: @Test(expected = RollbackException.class)
86: public void persistingInRollbackOnlyThrowsExceptionOnCommit() {
87: this.em = getEntityManager("PersistRollbackOnly", false);
88: em.getTransaction().begin();
89: em.getTransaction().setRollbackOnly();
90: em.persist(entityE);
91: em.getTransaction().commit();
92: }
93:
94: @Test
95: public void testPersistWithCascade() {
96: this.em = getEntityManager("PersistWithCascade", false);
97: persist(entityG);
98:
99: final OWLClassA resA2 = em.find(OWLClassA.class, entityA.getUri());
100: assertNotNull(resA2);
101: final OWLClassH resH = em.find(OWLClassH.class, entityH.getUri());
102: assertNotNull(resH);
103: assertEquals(resH.getOwlClassA(), resA2);
104: final OWLClassG resG = em.find(OWLClassG.class, entityG.getUri());
105: assertNotNull(resG);
106: assertEquals(resG.getOwlClassH(), resH);
107: assertEquals(resG.getOwlClassH().getOwlClassA(), resA2);
108: }
109:
110: @Test(expected = RollbackException.class)
111: public void persistingOnlyOnePartOfRelationWithoutCascadeThrowsRollbackException() {
112: this.em = getEntityManager("PersistWithoutCascade", false);
113: persist(entityD);
114: }
115:
116: @Test(expected = OWLEntityExistsException.class)
117: public void persistingDetachedEntityIsIllegal() {
118: this.em = getEntityManager("PersistDetached", false);
119: persist(entityA);
120:
121: final OWLClassA det = em.find(OWLClassA.class, entityA.getUri());
122: assertNotNull(det);
123: em.getTransaction().begin();
124: em.detach(det);
125: em.persist(det);
126: em.getTransaction().commit();
127: }
128:
129: @Test
130: public void testPersistWithSimpleList() {
131: this.em = getEntityManager("PersistSimpleList", false);
132: entityC.setSimpleList(Generators.createSimpleList(10));
133: em.getTransaction().begin();
134: em.persist(entityC);
135: entityC.getSimpleList().forEach(em::persist);
136: em.getTransaction().commit();
137:
138: final OWLClassA a = em.find(OWLClassA.class, entityC.getSimpleList().get(1).getUri());
139: assertNotNull(a);
140: final OWLClassC c = em.find(OWLClassC.class, entityC.getUri());
141: assertNotNull(c);
142: assertNotNull(c.getSimpleList());
143: assertFalse(c.getSimpleList().isEmpty());
144: assertEquals(entityC.getSimpleList().size(), c.getSimpleList().size());
145: assertTrue(c.getSimpleList().contains(a));
146: }
147:
148: @Test(expected = RollbackException.class)
149: public void persistingEntityWithSimpleListWithoutCascadeIsIllegal() {
150: this.em = getEntityManager("PersistSimpleListNoCascade", false);
151: entityC.setSimpleList(Generators.createSimpleList(10));
152: persist(entityC);
153: }
154:
155: @Test
156: public void testPersistWithReferencedList() {
157: this.em = getEntityManager("PersistReferencedList", false);
158: entityC.setReferencedList(Generators.createReferencedList(5));
159: em.getTransaction().begin();
160: em.persist(entityC);
161: entityC.getReferencedList().forEach(em::persist);
162: assertTrue(em.contains(entityC));
163: assertTrue(em.contains(entityC.getReferencedList().get(0)));
164: em.getTransaction().commit();
165:
166: final OWLClassC c = em.find(OWLClassC.class, entityC.getUri());
167: assertNotNull(c);
168: assertNotNull(c.getReferencedList());
169: assertFalse(c.getReferencedList().isEmpty());
170: assertEquals(entityC.getReferencedList().size(), c.getReferencedList().size());
171:• for (OWLClassA a : entityC.getReferencedList()) {
172: final OWLClassA resA = em.find(OWLClassA.class, a.getUri());
173: assertNotNull(resA);
174: assertEquals(a.getStringAttribute(), resA.getStringAttribute());
175: assertTrue(c.getReferencedList().contains(resA));
176: }
177: }
178:
179: @Test(expected = RollbackException.class)
180: public void persistingEntityWithReferencedListWithoutCascadeIsIllegal() {
181: this.em = getEntityManager("PersistReferencedListNoCascade", false);
182: entityC.setReferencedList(Generators.createReferencedList(5));
183: persist(entityC);
184: }
185:
186: @Test
187: public void testPersistSimpleAndReferencedList() {
188: this.em = getEntityManager("PersistSimpleAndReferencedList", false);
189: entityC.setReferencedList(Generators.createReferencedList(5));
190: entityC.setSimpleList(Generators.createSimpleList(5));
191: em.getTransaction().begin();
192: em.persist(entityC);
193: entityC.getSimpleList().forEach(em::persist);
194: entityC.getReferencedList().forEach(em::persist);
195: em.getTransaction().commit();
196:
197: final OWLClassC c = em.find(OWLClassC.class, entityC.getUri());
198: assertNotNull(c);
199: assertNotNull(c.getSimpleList());
200: assertEquals(entityC.getSimpleList().size(), c.getSimpleList().size());
201: assertNotNull(c.getReferencedList());
202: assertEquals(entityC.getReferencedList().size(), c.getReferencedList().size());
203:• for (OWLClassA a : entityC.getSimpleList()) {
204: final OWLClassA resA = em.find(OWLClassA.class, a.getUri());
205: assertNotNull(resA);
206: assertTrue(c.getSimpleList().contains(resA));
207: }
208:• for (OWLClassA a : entityC.getReferencedList()) {
209: final OWLClassA resA = em.find(OWLClassA.class, a.getUri());
210: assertNotNull(resA);
211: assertTrue(c.getReferencedList().contains(resA));
212: }
213: }
214:
215: @Test
216: public void testPersistWithProperties() {
217: this.em = getEntityManager("PersistWithProperties", false);
218: final Map<String, Set<String>> props = new HashMap<>(3);
219: props.put("http://krizik.felk.cvut.cz/ontologies/jopa/attributes#propertyOne", Collections
220: .singleton("http://krizik.felk.cvut.cz/ontologies/jopa/tests/Individual10"));
221: props.put("http://krizik.felk.cvut.cz/ontologies/jopa/attributes#propertyTwo", Collections
222: .singleton("http://krizik.felk.cvut.cz/ontologies/jopa/tests/SomeEntity"));
223: props.put("http://krizik.felk.cvut.cz/ontologies/jopa/attributes#propertyThree",
224: Collections.singleton("http://krizik.felk.cvut.cz/ontologies/jopa/tests/entityG"));
225: final Map<String, Set<String>> expected = new HashMap<>(4);
226: expected.putAll(props);
227: entityB.setProperties(props);
228: persist(entityB);
229: em.clear();
230:
231: final OWLClassB res = em.find(OWLClassB.class, entityB.getUri());
232: assertNotNull(res);
233: assertEquals(entityB.getStringAttribute(), res.getStringAttribute());
234: assertNotNull(res.getProperties());
235: assertFalse(res.getProperties().isEmpty());
236: assertEquals(expected.size(), res.getProperties().size());
237:• for (Map.Entry<String, Set<String>> e : expected.entrySet()) {
238: assertTrue(res.getProperties().containsKey(e.getKey()));
239: final Set<String> s = e.getValue();
240: final Set<String> resS = res.getProperties().get(e.getKey());
241: assertNotNull(resS);
242: assertEquals(1, resS.size());
243: assertEquals(s.iterator().next(), resS.iterator().next());
244: }
245: }
246:
247: @Test
248: public void testPersistWithEmptyProperties() {
249: this.em = getEntityManager("PersistWithPropertiesEmpty", false);
250: entityB.setProperties(Collections.emptyMap());
251: em.getTransaction().begin();
252: em.persist(entityB);
253: assertTrue(em.contains(entityB));
254: em.getTransaction().commit();
255: em.clear();
256:
257: final OWLClassB b = em.find(OWLClassB.class, entityB.getUri());
258: assertNotNull(b);
259: assertEquals(entityB.getUri(), b.getUri());
260: assertEquals(entityB.getStringAttribute(), b.getStringAttribute());
261: assertNull(b.getProperties());
262: }
263:
264: @Test(expected = OWLEntityExistsException.class)
265: public void persistTwoInstancesOfDifferentClassesWithSameUriIntoTheSamePersistenceContextIsIllegal() {
266: this.em = getEntityManager("PersistURITwiceInDifferentClassesSamePC", false);
267: final URI pk = URI.create("http://krizik.felk.cvut.cz/jopa/onto/sameEntity");
268: final OWLClassA a = new OWLClassA();
269: a.setUri(pk);
270: final OWLClassB b = new OWLClassB();
271: b.setUri(pk);
272: em.getTransaction().begin();
273: em.persist(a);
274: em.persist(b);
275: em.getTransaction().commit();
276: }
277:
278: @Test
279: public void persistTwoInstancesOfDifferentClassesWithSameUriIntoDifferentPersistenceContextsIsLegal() {
280: this.em = getEntityManager("PersistURITwiceInDifferentClassesDifferentPCs", false);
281: final URI uri = URI.create("http://krizik.felk.cvut.cz/jopa/onto/sameEntity");
282: entityA.setUri(uri);
283: entityB.setUri(uri);
284: em.getTransaction().begin();
285: em.persist(entityA);
286: em.getTransaction().commit();
287: final EntityManager emTwo = em.getEntityManagerFactory().createEntityManager();
288: try {
289: emTwo.getTransaction().begin();
290: emTwo.persist(entityB);
291: emTwo.getTransaction().commit();
292:
293: assertNotNull(emTwo.find(OWLClassA.class, entityA.getUri()));
294: assertNotNull(em.find(OWLClassB.class, entityB.getUri()));
295: } finally {
296: emTwo.close();
297: }
298: }
299:
300: @Test
301: public void testPersistEntityWithBasicTypeAttributes() {
302: this.em = getEntityManager("PersistEntityWithBasicTypeAttributes", false);
303: persist(entityM);
304: em.clear();
305:
306: final OWLClassM res = em.find(OWLClassM.class, entityM.getKey());
307: assertNotNull(res);
308: assertEquals(entityM.getKey(), res.getKey());
309: assertEquals(entityM.getBooleanAttribute(), res.getBooleanAttribute());
310: assertEquals(entityM.getIntAttribute(), res.getIntAttribute());
311: assertEquals(entityM.getLongAttribute(), res.getLongAttribute());
312: assertEquals(entityM.getDoubleAttribute(), res.getDoubleAttribute());
313: assertEquals(entityM.getDateAttribute(), res.getDateAttribute());
314: }
315:
316: @Test
317: public void testPersistAndUpdateAttributeBeforeCommit() {
318: this.em = getEntityManager("PersistAndUpdateBeforeCommit", false);
319: final String updatedValue = "updatedStringAttributeValue";
320: em.getTransaction().begin();
321: em.persist(entityA);
322: entityA.setStringAttribute(updatedValue);
323: em.getTransaction().commit();
324: em.clear();
325:
326: final OWLClassA res = em.find(OWLClassA.class, entityA.getUri());
327: assertNotNull(res);
328: assertEquals(updatedValue, res.getStringAttribute());
329: }
330:
331: @Test
332: public void testPersistEntityWithEnumAttribute() {
333: this.em = getEntityManager("PersistEntityWithEnum", false);
334: persist(entityM);
335:
336: final OWLClassM res = em.find(OWLClassM.class, entityM.getKey());
337: assertNotNull(res);
338: assertEquals(entityM.getEnumAttribute(), res.getEnumAttribute());
339: }
340:
341: @Test
342: public void testPersistTypedProperties() {
343: this.em = getEntityManager("PersistTypedProperties", false);
344: entityP.setProperties(Generators.createTypedProperties());
345: em.getTransaction().begin();
346: em.persist(entityP);
347: em.getTransaction().commit();
348: em.clear();
349:
350: final OWLClassP res = em.find(OWLClassP.class, entityP.getUri());
351: assertNotNull(res);
352: assertEquals(entityP.getProperties(), res.getProperties());
353: }
354:
355: @Test
356: public void testPersistInstanceWithPlainIdentifierObjectPropertyValue() {
357: this.em = getEntityManager("PersistInstanceWithIdentifierObjectPropertyValue", false);
358: final URI value = URI.create("http://krizik.felk.cvut.cz/ontologies/jopa#individualAAA");
359: entityP.setIndividualUri(value);
360: em.getTransaction().begin();
361: em.persist(entityP);
362: em.getTransaction().commit();
363: em.clear();
364:
365: final OWLClassP res = em.find(OWLClassP.class, entityP.getUri());
366: assertNotNull(res);
367: assertEquals(value, res.getIndividualUri());
368: }
369:
370: @Test
371: public void testPersistInstanceWithPluralObjectPropertyAttributeRepresentedByUrls() {
372: this.em = getEntityManager("PersistInstanceWithPluralIdentifierObjectPropertyValue", false);
373: final Set<URL> urls = Generators.createUrls();
374: entityP.setIndividuals(urls);
375: em.getTransaction().begin();
376: em.persist(entityP);
377: em.getTransaction().commit();
378: em.clear();
379:
380: final OWLClassP res = em.find(OWLClassP.class, entityP.getUri());
381: assertNotNull(res);
382: assertEquals(urls, res.getIndividuals());
383: }
384:
385: @Test
386: public void testPersistInstanceWithSimpleListOfIdentifiers() {
387: this.em = getEntityManager("PersistInstanceWithSimpleListOfIdentifiers", false);
388: entityP.setSimpleList(Generators.createListOfIdentifiers());
389: em.getTransaction().begin();
390: em.persist(entityP);
391: em.getTransaction().commit();
392: em.clear();
393:
394: final OWLClassP res = em.find(OWLClassP.class, entityP.getUri());
395: assertNotNull(res);
396: assertEquals(entityP.getSimpleList(), res.getSimpleList());
397: }
398:
399: @Test
400: public void testPersistInstanceWithReferencedListOfIdentifiers() {
401: this.em = getEntityManager("PersistInstanceWithReferencedListOfIdentifiers", false);
402: entityP.setReferencedList(Generators.createListOfIdentifiers());
403: em.getTransaction().begin();
404: em.persist(entityP);
405: em.getTransaction().commit();
406: em.clear();
407:
408: final OWLClassP res = em.find(OWLClassP.class, entityP.getUri());
409: assertNotNull(res);
410: assertEquals(entityP.getReferencedList(), res.getReferencedList());
411: }
412:
413: @Test
414: public void testPersistInstanceWithAnnotationProperties() {
415: this.em = getEntityManager("PersistInstanceWithAnnotationPropertyValues", false);
416: final String apValue = "annotationPropertyValue";
417: final URI apUriValue = URI.create("http://krizik.felk.cvut.cz/ontologies/jopa#annotationPropertyValue");
418: entityN.setAnnotationProperty(apValue);
419: entityN.setAnnotationUri(apUriValue);
420: em.getTransaction().begin();
421: em.persist(entityN);
422: em.getTransaction().commit();
423: em.clear();
424: assertNotNull(entityN.getId());
425:
426: final OWLClassN res = em.find(OWLClassN.class, entityN.getId());
427: assertEquals(apValue, res.getAnnotationProperty());
428: assertEquals(apUriValue, res.getAnnotationUri());
429: }
430:
431: @Test
432: public void persistEntityWithNonNullGeneratedIdentifierDoesNotRewriteIdentifier() {
433: this.em = getEntityManager("PersistEntityWithNonNullGeneratedIdentifiersDoesNotRewriteIdentifier", false);
434: final URI u = URI.create("http://krizik.felk.cvut.cz/ontolgoies/jopa#EntityELives");
435: entityE.setUri(u);
436: em.getTransaction().begin();
437: em.persist(entityE);
438: em.getTransaction().commit();
439:
440: assertEquals(u, entityE.getUri());
441: final OWLClassE res = em.find(OWLClassE.class, u);
442: assertNotNull(res);
443: assertEquals(u, res.getUri());
444: assertEquals(entityE.getStringAttribute(), res.getStringAttribute());
445: }
446:
447: @Test
448: public void persistEntityAndReferenceWithNonNullGeneratedIdentifiersDoesNotRewriteThem() {
449: this.em = getEntityManager("PersistEntityAndReferenceWithNonNullGeneratedIdentifiersDoesNotRewriteThem", false);
450: final URI uK = URI.create("http://krizik.felk.cvut.cz/ontolgoies/jopa#EntityKLives");
451: final URI uE = URI.create("http://krizik.felk.cvut.cz/ontolgoies/jopa#EntityELives");
452: final OWLClassK entityK = new OWLClassK();
453: entityK.setUri(uK);
454: entityK.setOwlClassE(entityE);
455: entityE.setUri(uE);
456: em.getTransaction().begin();
457: em.persist(entityK);
458: em.persist(entityE);
459: em.getTransaction().commit();
460:
461: assertEquals(uK, entityK.getUri());
462: assertEquals(uE, entityE.getUri());
463: final OWLClassK resK = em.find(OWLClassK.class, uK);
464: assertNotNull(resK);
465: assertEquals(uE, resK.getOwlClassE().getUri());
466: final OWLClassE resE = em.find(OWLClassE.class, uE);
467: assertNotNull(resE);
468: assertEquals(uE, resE.getUri());
469: }
470:
471: @Test
472: public void testPersistEntityWithUriTypes() {
473: this.em = getEntityManager("PersistEntityWithUriTypes", false);
474: entityP.setTypes(Generators.createUriTypes());
475: em.getTransaction().begin();
476: em.persist(entityP);
477: em.getTransaction().commit();
478: em.clear();
479:
480: final OWLClassP result = em.find(OWLClassP.class, entityP.getUri());
481: assertEquals(entityP.getTypes().size(), result.getTypes().size());
482: assertTrue(entityP.getTypes().containsAll(result.getTypes()));
483: }
484:
485: @Test
486: public void persistEntityWithDatatypePropertyCollectionPersistsAllValues() {
487: assertFalse(entityM.getIntegerSet().isEmpty());
488: this.em = getEntityManager("PersistEntityWithDatatypePropertyCollection", false);
489: em.getTransaction().begin();
490: em.persist(entityM);
491: em.getTransaction().commit();
492:
493: assertNotNull(entityM.getKey());
494: final OWLClassM result = em.find(OWLClassM.class, entityM.getKey());
495: assertNotNull(result);
496: assertEquals(entityM.getIntegerSet(), result.getIntegerSet());
497: }
498:
499: @Test
500: public void persistSetsStringLiteralLanguageTagAccordingToDescriptor() throws Exception {
501: this.em = getEntityManager("persistSetsStringLiteralLanguageTagAccordingToDescriptor", false);
502: em.getTransaction().begin();
503: final Descriptor descriptor = new EntityDescriptor();
504: descriptor.setAttributeLanguage(OWLClassA.class.getDeclaredField("stringAttribute"), "cs");
505: em.persist(entityA, descriptor);
506: em.getTransaction().commit();
507:
508: verifyStatementsPresent(Collections.singleton(
509: new Triple(entityA.getUri(), URI.create(Vocabulary.P_A_STRING_ATTRIBUTE), entityA.getStringAttribute(),
510: "cs")), em);
511: assertNotNull(em.find(OWLClassA.class, entityA.getUri()));
512: }
513:
514: @Test
515: public void persistSetsStringLiteralLanguageTagToGloballyConfiguredValueWhenDescriptorDoesNotSpecifyIt()
516: throws Exception {
517: this.em = getEntityManager(
518: "persistSetsStringLiteralLanguageTagToGloballyConfiguredValueWhenDescriptorDoesNotSpecifyIt", false);
519: em.getTransaction().begin();
520: em.persist(entityA);
521: em.getTransaction().commit();
522:
523: verifyStatementsPresent(Collections.singleton(
524: new Triple(entityA.getUri(), URI.create(Vocabulary.P_A_STRING_ATTRIBUTE), entityA.getStringAttribute(),
525: "en")), em);
526: assertNotNull(em.find(OWLClassA.class, entityA.getUri()));
527: }
528:
529: @Test
530: public void persistAllowsOverridingGlobalLanguageWithLocalEmptyTag() throws Exception {
531: this.em = getEntityManager("persistAllowsOverridingGlobalLanguageWithLocalEmptyTag", false);
532: em.getTransaction().begin();
533: final Descriptor descriptor = new EntityDescriptor();
534: descriptor.setAttributeLanguage(OWLClassA.class.getDeclaredField("stringAttribute"), null);
535: em.persist(entityA, descriptor);
536: em.getTransaction().commit();
537:
538: verifyStatementsPresent(Collections.singleton(
539: new Triple(entityA.getUri(), URI.create(Vocabulary.P_A_STRING_ATTRIBUTE), entityA.getStringAttribute(),
540: null)), em);
541: final OWLClassA result = em.find(OWLClassA.class, entityA.getUri());
542: assertNotNull(result);
543: // The string attribute should be loaded even though PU language is set to en, because the persisted value has no lang tag
544: assertEquals(entityA.getStringAttribute(), result.getStringAttribute());
545: }
546:
547: @Test
548: public void persistAllowsToSpecifyLanguageTagPerEntityAndOverrideItOnAttributeLevel() throws Exception {
549: this.em = getEntityManager("persistAllowsToSpecifyLanguageTagPerEntityAndOverrideItOnAttributeLevel", false);
550: entityN.setStringAttribute("retezec v cestine");
551: entityN.setAnnotationProperty("entity descriptor ist in Deutsch");
552: final Descriptor descriptor = new EntityDescriptor();
553: descriptor.setLanguage("de");
554: descriptor.setAttributeLanguage(OWLClassN.class.getDeclaredField("stringAttribute"), "cs");
555:
556: em.getTransaction().begin();
557: em.persist(entityN, descriptor);
558: em.getTransaction().commit();
559:
560: final Set<Triple> statements = new HashSet<>(4);
561: statements.add(new Triple(URI.create(entityN.getId()), URI.create(Vocabulary.P_N_STR_ANNOTATION_PROPERTY),
562: entityN.getAnnotationProperty(), "de"));
563: statements.add(new Triple(URI.create(entityN.getId()), URI.create(Vocabulary.P_N_STRING_ATTRIBUTE),
564: entityN.getStringAttribute(), "cs"));
565: verifyStatementsPresent(statements, em);
566:
567: final OWLClassN result = em.find(OWLClassN.class, entityN.getId(), descriptor);
568: assertEquals(entityN.getAnnotationProperty(), result.getAnnotationProperty());
569: assertEquals(entityN.getStringAttribute(), result.getStringAttribute());
570: }
571: }