http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java deleted file mode 100644 index edf788f..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java +++ /dev/null @@ -1,151 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import java.sql.Types; -import java.util.List; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.exp.ExpressionFactory; -import org.apache.cayenne.query.SelectQuery; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.testdo.mt.ClientMtTable1Subclass1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextInheritanceTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - private TableHelper tMtTable1; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - - tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); - tMtTable1.setColumns( - "TABLE1_ID", - "GLOBAL_ATTRIBUTE1", - "SERVER_ATTRIBUTE1", - "SUBCLASS_ATTRIBUTE1").setColumnTypes( - Types.INTEGER, - Types.VARCHAR, - Types.VARCHAR, - Types.VARCHAR); - } - - public void testInsertSubclass() throws Exception { - - ClientMtTable1Subclass1 object = context.newObject(ClientMtTable1Subclass1.class); - object.setGlobalAttribute1("sub1"); - object.setServerAttribute1("sa1"); - object.setSubclass1Attribute1("suba1"); - - context.commitChanges(); - - assertEquals(1, tMtTable1.getRowCount()); - assertEquals("sub1", tMtTable1.getString("GLOBAL_ATTRIBUTE1")); - assertEquals("sa1", tMtTable1.getString("SERVER_ATTRIBUTE1")); - assertEquals("suba1", tMtTable1.getString("SUBCLASS_ATTRIBUTE1")); - } - - public void testPerformQueryInheritanceLeaf() throws Exception { - - tMtTable1.insert(1, "xxx", "yyy", null); - tMtTable1.insert(2, "sub1", "zzz", "sa1"); - tMtTable1.insert(3, "1111", "aaa", null); - - SelectQuery query = new SelectQuery(ClientMtTable1Subclass1.class); - List<ClientMtTable1Subclass1> objects = context.performQuery(query); - - assertEquals(1, objects.size()); - assertEquals("sa1", objects.get(0).getSubclass1Attribute1()); - } - - public void testPerformQueryInheritanceSuper() throws Exception { - - tMtTable1.insert(1, "a", "yyy", null); - tMtTable1.insert(2, "sub1", "zzz", "sa1"); - tMtTable1.insert(3, "z", "aaa", null); - - SelectQuery query = new SelectQuery(ClientMtTable1.class); - List<ClientMtTable1> objects = context.performQuery(query); - - assertEquals(3, objects.size()); - - int checkedFields = 0; - for (int i = 0; i < objects.size(); i++) { - Integer id = (Integer) objects.get(i).getObjectId().getIdSnapshot().get( - "TABLE1_ID"); - if (id == 1) { - assertEquals("a", objects.get(i).getGlobalAttribute1()); - checkedFields++; - } - else if (id == 2) { - assertEquals("sa1", ((ClientMtTable1Subclass1) objects.get(i)) - .getSubclass1Attribute1()); - checkedFields++; - } - - } - assertEquals(2, checkedFields); - } - - public void testPerformQueryWithQualifierInheritanceSuper() throws Exception { - - tMtTable1.insert(1, "a", "XX", null); - tMtTable1.insert(2, "sub1", "XXA", "sa1"); - tMtTable1.insert(3, "z", "MM", null); - - SelectQuery query = new SelectQuery(ClientMtTable1.class); - query.andQualifier(ExpressionFactory.likeExp( - ClientMtTable1.SERVER_ATTRIBUTE1_PROPERTY, - "X%")); - List<ClientMtTable1> objects = context.performQuery(query); - - assertEquals(2, objects.size()); - - int checkedFields = 0; - for (int i = 0; i < objects.size(); i++) { - Integer id = (Integer) objects.get(i).getObjectId().getIdSnapshot().get( - "TABLE1_ID"); - if (id == 1) { - assertEquals("a", objects.get(i).getGlobalAttribute1()); - checkedFields++; - } - else if (id == 2) { - assertEquals("sa1", ((ClientMtTable1Subclass1) objects.get(i)) - .getSubclass1Attribute1()); - checkedFields++; - } - - } - assertEquals(2, checkedFields); - } - -}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java new file mode 100644 index 0000000..0ff92b1 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipIT.java @@ -0,0 +1,112 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.ObjectIdQuery; +import org.apache.cayenne.query.RefreshQuery; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.mt.ClientMtMapToMany; +import org.apache.cayenne.testdo.mt.ClientMtMapToManyTarget; +import org.apache.cayenne.testdo.mt.MtMapToMany; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +import java.util.Map; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextMapRelationshipIT extends ClientCase { + + @Inject + private CayenneContext context; + + @Inject + private DBHelper dbHelper; + + private TableHelper tMtMapToMany; + private TableHelper tMtMapToManyTarget; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_MAP_TO_MANY_TARGET"); + dbHelper.deleteAll("MT_MAP_TO_MANY"); + + tMtMapToMany = new TableHelper(dbHelper, "MT_MAP_TO_MANY"); + tMtMapToMany.setColumns("ID"); + + tMtMapToManyTarget = new TableHelper(dbHelper, "MT_MAP_TO_MANY_TARGET"); + tMtMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID"); + } + + private void createTwoMapToManysWithTargetsDataSet() throws Exception { + tMtMapToMany.insert(1).insert(2); + tMtMapToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2); + } + + public void testReadToMany() throws Exception { + createTwoMapToManysWithTargetsDataSet(); + + ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1); + ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery( + context, + new ObjectIdQuery(id)); + + Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets(); + + assertTrue(((ValueHolder) targets).isFault()); + + assertNotNull(targets); + assertEquals(3, targets.size()); + assertNotNull(targets.get(new Integer(1))); + assertNotNull(targets.get(new Integer(2))); + assertNotNull(targets.get(new Integer(3))); + } + + public void testAddToMany() throws Exception { + createTwoMapToManysWithTargetsDataSet(); + + ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1); + ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery( + context, + new ObjectIdQuery(id)); + + Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets(); + assertNotNull(targets); + assertEquals(3, targets.size()); + + ClientMtMapToManyTarget newTarget = o1.getObjectContext().newObject( + ClientMtMapToManyTarget.class); + + o1.addToTargets(newTarget); + assertEquals(4, targets.size()); + assertSame(o1, newTarget.getMapToMany()); + + o1.getObjectContext().commitChanges(); + + o1.getObjectContext().performGenericQuery(new RefreshQuery()); + assertEquals(4, o1.getTargets().size()); + + int newId = Cayenne.intPKForObject(newTarget); + assertSame(newTarget, o1.getTargets().get(new Integer(newId))); + + assertEquals(PersistenceState.COMMITTED, o1.getPersistenceState()); + assertEquals(PersistenceState.COMMITTED, newTarget.getPersistenceState()); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipTest.java deleted file mode 100644 index 182643a..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMapRelationshipTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import java.util.Map; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.ObjectIdQuery; -import org.apache.cayenne.query.RefreshQuery; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtMapToMany; -import org.apache.cayenne.testdo.mt.ClientMtMapToManyTarget; -import org.apache.cayenne.testdo.mt.MtMapToMany; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextMapRelationshipTest extends ClientCase { - - @Inject - private CayenneContext context; - - @Inject - private DBHelper dbHelper; - - private TableHelper tMtMapToMany; - private TableHelper tMtMapToManyTarget; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_MAP_TO_MANY_TARGET"); - dbHelper.deleteAll("MT_MAP_TO_MANY"); - - tMtMapToMany = new TableHelper(dbHelper, "MT_MAP_TO_MANY"); - tMtMapToMany.setColumns("ID"); - - tMtMapToManyTarget = new TableHelper(dbHelper, "MT_MAP_TO_MANY_TARGET"); - tMtMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID"); - } - - private void createTwoMapToManysWithTargetsDataSet() throws Exception { - tMtMapToMany.insert(1).insert(2); - tMtMapToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2); - } - - public void testReadToMany() throws Exception { - createTwoMapToManysWithTargetsDataSet(); - - ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1); - ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery( - context, - new ObjectIdQuery(id)); - - Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets(); - - assertTrue(((ValueHolder) targets).isFault()); - - assertNotNull(targets); - assertEquals(3, targets.size()); - assertNotNull(targets.get(new Integer(1))); - assertNotNull(targets.get(new Integer(2))); - assertNotNull(targets.get(new Integer(3))); - } - - public void testAddToMany() throws Exception { - createTwoMapToManysWithTargetsDataSet(); - - ObjectId id = new ObjectId("MtMapToMany", MtMapToMany.ID_PK_COLUMN, 1); - ClientMtMapToMany o1 = (ClientMtMapToMany) Cayenne.objectForQuery( - context, - new ObjectIdQuery(id)); - - Map<Object, ClientMtMapToManyTarget> targets = o1.getTargets(); - assertNotNull(targets); - assertEquals(3, targets.size()); - - ClientMtMapToManyTarget newTarget = o1.getObjectContext().newObject( - ClientMtMapToManyTarget.class); - - o1.addToTargets(newTarget); - assertEquals(4, targets.size()); - assertSame(o1, newTarget.getMapToMany()); - - o1.getObjectContext().commitChanges(); - - o1.getObjectContext().performGenericQuery(new RefreshQuery()); - assertEquals(4, o1.getTargets().size()); - - int newId = Cayenne.intPKForObject(newTarget); - assertSame(newTarget, o1.getTargets().get(new Integer(newId))); - - assertEquals(PersistenceState.COMMITTED, o1.getPersistenceState()); - assertEquals(PersistenceState.COMMITTED, newTarget.getPersistenceState()); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerIT.java new file mode 100644 index 0000000..a5b4815 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerIT.java @@ -0,0 +1,90 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ + +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.graph.GraphEvent; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +import static org.mockito.Mockito.mock; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextMergeHandlerIT extends ClientCase { + + @Inject + protected CayenneContext context; + + public void testShouldProcessEvent() { + + CayenneContextMergeHandler handler = new CayenneContextMergeHandler(context); + + // 1. Our context initiated the sync: + // src == channel && postedBy == context + GraphEvent e1 = new GraphEvent(context.getChannel(), context, null); + assertFalse(handler.shouldProcessEvent(e1)); + + // 2. Another context initiated the sync: + // postedBy != context && source == channel + GraphEvent e2 = new GraphEvent(context.getChannel(), mock(ObjectContext.class), null); + assertTrue(handler.shouldProcessEvent(e2)); + + // 2.1 Another object initiated the sync: + // postedBy != context && source == channel + GraphEvent e21 = new GraphEvent(context.getChannel(), new Object(), null); + assertTrue(handler.shouldProcessEvent(e21)); + + // 3. Another channel initiated the sync: + // postedBy == ? && source != channel + GraphEvent e3 = new GraphEvent(new MockDataChannel(), new Object(), null); + assertFalse(handler.shouldProcessEvent(e3)); + + // 4. inactive + GraphEvent e4 = new GraphEvent(context.getChannel(), mock(ObjectContext.class), null); + handler.active = false; + assertFalse(handler.shouldProcessEvent(e4)); + } + + public void testNodePropertyChanged() { + + ClientMtTable1 o1 = context.newObject(ClientMtTable1.class); + + CayenneContextMergeHandler handler = new CayenneContextMergeHandler(context); + + assertNull(o1.getGlobalAttribute1Direct()); + + handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, null, "abc"); + assertEquals("abc", o1.getGlobalAttribute1Direct()); + + handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "abc", "xyz"); + + assertEquals("xyz", o1.getGlobalAttribute1Direct()); + + // block if old value is different + handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "123", "mnk"); + + assertEquals("xyz", o1.getGlobalAttribute1Direct()); + + handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "xyz", null); + + assertNull(o1.getGlobalAttribute1Direct()); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerTest.java deleted file mode 100644 index e7dd147..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextMergeHandlerTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne; - -import static org.mockito.Mockito.mock; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.graph.GraphEvent; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextMergeHandlerTest extends ClientCase { - - @Inject - protected CayenneContext context; - - public void testShouldProcessEvent() { - - CayenneContextMergeHandler handler = new CayenneContextMergeHandler(context); - - // 1. Our context initiated the sync: - // src == channel && postedBy == context - GraphEvent e1 = new GraphEvent(context.getChannel(), context, null); - assertFalse(handler.shouldProcessEvent(e1)); - - // 2. Another context initiated the sync: - // postedBy != context && source == channel - GraphEvent e2 = new GraphEvent(context.getChannel(), mock(ObjectContext.class), null); - assertTrue(handler.shouldProcessEvent(e2)); - - // 2.1 Another object initiated the sync: - // postedBy != context && source == channel - GraphEvent e21 = new GraphEvent(context.getChannel(), new Object(), null); - assertTrue(handler.shouldProcessEvent(e21)); - - // 3. Another channel initiated the sync: - // postedBy == ? && source != channel - GraphEvent e3 = new GraphEvent(new MockDataChannel(), new Object(), null); - assertFalse(handler.shouldProcessEvent(e3)); - - // 4. inactive - GraphEvent e4 = new GraphEvent(context.getChannel(), mock(ObjectContext.class), null); - handler.active = false; - assertFalse(handler.shouldProcessEvent(e4)); - } - - public void testNodePropertyChanged() { - - ClientMtTable1 o1 = context.newObject(ClientMtTable1.class); - - CayenneContextMergeHandler handler = new CayenneContextMergeHandler(context); - - assertNull(o1.getGlobalAttribute1Direct()); - - handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, null, "abc"); - assertEquals("abc", o1.getGlobalAttribute1Direct()); - - handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "abc", "xyz"); - - assertEquals("xyz", o1.getGlobalAttribute1Direct()); - - // block if old value is different - handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "123", "mnk"); - - assertEquals("xyz", o1.getGlobalAttribute1Direct()); - - handler.nodePropertyChanged(o1.getObjectId(), ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "xyz", null); - - assertNull(o1.getGlobalAttribute1Direct()); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingIT.java new file mode 100644 index 0000000..f286274 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingIT.java @@ -0,0 +1,133 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ + +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.NamedQuery; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.unit.di.DataChannelInterceptor; +import org.apache.cayenne.unit.di.UnitTestClosure; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +import java.util.Collections; +import java.util.List; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextNamedQueryCachingIT extends ClientCase { + + @Inject + private DBHelper dbHelper; + + @Inject + private CayenneContext context; + + @Inject(ClientCase.ROP_CLIENT_KEY) + private DataChannelInterceptor clientServerInterceptor; + + private TableHelper tMtTable1; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE2"); + dbHelper.deleteAll("MT_TABLE1"); + + tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); + tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); + } + + protected void createThreeMtTable1sDataSet() throws Exception { + tMtTable1.insert(1, "g1", "s1"); + tMtTable1.insert(2, "g2", "s2"); + tMtTable1.insert(3, "g3", "s3"); + } + + public void testLocalCache() throws Exception { + createThreeMtTable1sDataSet(); + + final NamedQuery q1 = new NamedQuery("MtQueryWithLocalCache"); + + final List<?> result1 = context.performQuery(q1); + assertEquals(3, result1.size()); + + clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { + + public void execute() { + List<?> result2 = context.performQuery(q1); + assertSame(result1, result2); + } + }); + + // refresh + q1.setForceNoCache(true); + List<?> result3 = context.performQuery(q1); + assertNotSame(result1, result3); + assertEquals(3, result3.size()); + } + + public void testLocalCacheParameterized() throws Exception { + createThreeMtTable1sDataSet(); + + final NamedQuery q1 = new NamedQuery( + "ParameterizedMtQueryWithLocalCache", + Collections.singletonMap("g", "g1")); + + final NamedQuery q2 = new NamedQuery( + "ParameterizedMtQueryWithLocalCache", + Collections.singletonMap("g", "g2")); + + final List<?> result1 = context.performQuery(q1); + assertEquals(1, result1.size()); + + clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { + + public void execute() { + List<?> result2 = context.performQuery(q1); + assertSame(result1, result2); + } + }); + + final List<?> result3 = context.performQuery(q2); + assertNotSame(result1, result3); + assertEquals(1, result3.size()); + + clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { + + public void execute() { + List<?> result4 = context.performQuery(q2); + assertSame(result3, result4); + + List<?> result5 = context.performQuery(q1); + assertSame(result1, result5); + } + }); + + } + + public void testParameterizedMappedToEJBQLQueries() throws Exception { + + createThreeMtTable1sDataSet(); + NamedQuery query = new NamedQuery("ParameterizedEJBQLMtQuery", Collections.singletonMap("g", "g1")); + + List<?> r1 = context.performQuery(query); + assertEquals(1, r1.size()); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java deleted file mode 100644 index d9e71bc..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextNamedQueryCachingTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne; - -import java.util.Collections; -import java.util.List; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.NamedQuery; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.unit.di.DataChannelInterceptor; -import org.apache.cayenne.unit.di.UnitTestClosure; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextNamedQueryCachingTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - @Inject(ClientCase.ROP_CLIENT_KEY) - private DataChannelInterceptor clientServerInterceptor; - - private TableHelper tMtTable1; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - - tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); - tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); - } - - protected void createThreeMtTable1sDataSet() throws Exception { - tMtTable1.insert(1, "g1", "s1"); - tMtTable1.insert(2, "g2", "s2"); - tMtTable1.insert(3, "g3", "s3"); - } - - public void testLocalCache() throws Exception { - createThreeMtTable1sDataSet(); - - final NamedQuery q1 = new NamedQuery("MtQueryWithLocalCache"); - - final List<?> result1 = context.performQuery(q1); - assertEquals(3, result1.size()); - - clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { - - public void execute() { - List<?> result2 = context.performQuery(q1); - assertSame(result1, result2); - } - }); - - // refresh - q1.setForceNoCache(true); - List<?> result3 = context.performQuery(q1); - assertNotSame(result1, result3); - assertEquals(3, result3.size()); - } - - public void testLocalCacheParameterized() throws Exception { - createThreeMtTable1sDataSet(); - - final NamedQuery q1 = new NamedQuery( - "ParameterizedMtQueryWithLocalCache", - Collections.singletonMap("g", "g1")); - - final NamedQuery q2 = new NamedQuery( - "ParameterizedMtQueryWithLocalCache", - Collections.singletonMap("g", "g2")); - - final List<?> result1 = context.performQuery(q1); - assertEquals(1, result1.size()); - - clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { - - public void execute() { - List<?> result2 = context.performQuery(q1); - assertSame(result1, result2); - } - }); - - final List<?> result3 = context.performQuery(q2); - assertNotSame(result1, result3); - assertEquals(1, result3.size()); - - clientServerInterceptor.runWithQueriesBlocked(new UnitTestClosure() { - - public void execute() { - List<?> result4 = context.performQuery(q2); - assertSame(result3, result4); - - List<?> result5 = context.performQuery(q1); - assertSame(result1, result5); - } - }); - - } - - public void testParameterizedMappedToEJBQLQueries() throws Exception { - - createThreeMtTable1sDataSet(); - NamedQuery query = new NamedQuery("ParameterizedEJBQLMtQuery", Collections.singletonMap("g", "g1")); - - List<?> r1 = context.performQuery(query); - assertEquals(1, r1.size()); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingIT.java new file mode 100644 index 0000000..e59bcc9 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingIT.java @@ -0,0 +1,75 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.QueryCacheStrategy; +import org.apache.cayenne.query.SelectQuery; +import org.apache.cayenne.query.SortOrder; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +import java.util.List; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextPaginatedListCachingIT extends ClientCase { + + @Inject + private DBHelper dbHelper; + + @Inject + private CayenneContext context; + + private TableHelper tMtTable1; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE2"); + dbHelper.deleteAll("MT_TABLE1"); + + tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); + tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); + } + + protected void createSevenMtTable1sDataSet() throws Exception { + for (int i = 1; i <= 7; i++) { + tMtTable1.insert(i, "g" + i, "s" + i); + } + } + + public void testLocalCache() throws Exception { + createSevenMtTable1sDataSet(); + + SelectQuery query = new SelectQuery(ClientMtTable1.class); + query.addOrdering(ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, SortOrder.ASCENDING); + query.setPageSize(3); + query.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE); + + List<ClientMtTable1> result1 = context.performQuery(query); + assertEquals(7, result1.size()); + + // ensure we can resolve all objects without a failure... + for (ClientMtTable1 x : result1) { + x.getGlobalAttribute1(); + } + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingTest.java deleted file mode 100644 index 479948e..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPaginatedListCachingTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import java.util.List; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.QueryCacheStrategy; -import org.apache.cayenne.query.SelectQuery; -import org.apache.cayenne.query.SortOrder; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextPaginatedListCachingTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - private TableHelper tMtTable1; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - - tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); - tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); - } - - protected void createSevenMtTable1sDataSet() throws Exception { - for (int i = 1; i <= 7; i++) { - tMtTable1.insert(i, "g" + i, "s" + i); - } - } - - public void testLocalCache() throws Exception { - createSevenMtTable1sDataSet(); - - SelectQuery query = new SelectQuery(ClientMtTable1.class); - query.addOrdering(ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, SortOrder.ASCENDING); - query.setPageSize(3); - query.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE); - - List<ClientMtTable1> result1 = context.performQuery(query); - assertEquals(7, result1.size()); - - // ensure we can resolve all objects without a failure... - for (ClientMtTable1 x : result1) { - x.getGlobalAttribute1(); - } - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java new file mode 100644 index 0000000..e3865d0 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveIT.java @@ -0,0 +1,100 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.SelectQuery; +import org.apache.cayenne.query.SortOrder; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.mt.ClientMtTablePrimitives; +import org.apache.cayenne.testdo.mt.MtTablePrimitives; +import org.apache.cayenne.unit.UnitDbAdapter; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +import java.sql.Types; +import java.util.List; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextPrimitiveIT extends ClientCase { + + @Inject + private CayenneContext context; + + @Inject + private UnitDbAdapter accessStackAdapter; + + @Inject + private DBHelper dbHelper; + + private TableHelper tMtTablePrimitives; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE_PRIMITIVES"); + + int bool = accessStackAdapter.supportsBoolean() ? Types.BOOLEAN : Types.INTEGER; + + tMtTablePrimitives = new TableHelper(dbHelper, "MT_TABLE_PRIMITIVES"); + tMtTablePrimitives.setColumns("ID", "BOOLEAN_COLUMN", "INT_COLUMN").setColumnTypes( + Types.INTEGER, + bool, + Types.INTEGER); + } + + private void createTwoPrimitivesDataSet() throws Exception { + tMtTablePrimitives.insert(1, accessStackAdapter.supportsBoolean() ? true : 1, 0); + tMtTablePrimitives.insert(2, accessStackAdapter.supportsBoolean() ? false : 0, 5); + } + + public void testSelectPrimitives() throws Exception { + createTwoPrimitivesDataSet(); + + SelectQuery query = new SelectQuery(ClientMtTablePrimitives.class); + query.addOrdering("db:" + MtTablePrimitives.ID_PK_COLUMN, SortOrder.ASCENDING); + + List<ClientMtTablePrimitives> results = context.performQuery(query); + assertTrue(results.get(0).isBooleanColumn()); + assertFalse(results.get(1).isBooleanColumn()); + + assertEquals(0, results.get(0).getIntColumn()); + assertEquals(5, results.get(1).getIntColumn()); + } + + public void testCommitChangesPrimitives() throws Exception { + + ClientMtTablePrimitives object = context.newObject(ClientMtTablePrimitives.class); + + object.setBooleanColumn(true); + object.setIntColumn(3); + + context.commitChanges(); + + assertTrue(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN")); + assertEquals(3, tMtTablePrimitives.getInt("INT_COLUMN")); + + object.setBooleanColumn(false); + object.setIntColumn(8); + context.commitChanges(); + + assertFalse(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN")); + assertEquals(8, tMtTablePrimitives.getInt("INT_COLUMN")); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveTest.java deleted file mode 100644 index 2b02654..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextPrimitiveTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import java.sql.Types; -import java.util.List; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.SelectQuery; -import org.apache.cayenne.query.SortOrder; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtTablePrimitives; -import org.apache.cayenne.testdo.mt.MtTablePrimitives; -import org.apache.cayenne.unit.UnitDbAdapter; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextPrimitiveTest extends ClientCase { - - @Inject - private CayenneContext context; - - @Inject - private UnitDbAdapter accessStackAdapter; - - @Inject - private DBHelper dbHelper; - - private TableHelper tMtTablePrimitives; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE_PRIMITIVES"); - - int bool = accessStackAdapter.supportsBoolean() ? Types.BOOLEAN : Types.INTEGER; - - tMtTablePrimitives = new TableHelper(dbHelper, "MT_TABLE_PRIMITIVES"); - tMtTablePrimitives.setColumns("ID", "BOOLEAN_COLUMN", "INT_COLUMN").setColumnTypes( - Types.INTEGER, - bool, - Types.INTEGER); - } - - private void createTwoPrimitivesDataSet() throws Exception { - tMtTablePrimitives.insert(1, accessStackAdapter.supportsBoolean() ? true : 1, 0); - tMtTablePrimitives.insert(2, accessStackAdapter.supportsBoolean() ? false : 0, 5); - } - - public void testSelectPrimitives() throws Exception { - createTwoPrimitivesDataSet(); - - SelectQuery query = new SelectQuery(ClientMtTablePrimitives.class); - query.addOrdering("db:" + MtTablePrimitives.ID_PK_COLUMN, SortOrder.ASCENDING); - - List<ClientMtTablePrimitives> results = context.performQuery(query); - assertTrue(results.get(0).isBooleanColumn()); - assertFalse(results.get(1).isBooleanColumn()); - - assertEquals(0, results.get(0).getIntColumn()); - assertEquals(5, results.get(1).getIntColumn()); - } - - public void testCommitChangesPrimitives() throws Exception { - - ClientMtTablePrimitives object = context.newObject(ClientMtTablePrimitives.class); - - object.setBooleanColumn(true); - object.setIntColumn(3); - - context.commitChanges(); - - assertTrue(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN")); - assertEquals(3, tMtTablePrimitives.getInt("INT_COLUMN")); - - object.setBooleanColumn(false); - object.setIntColumn(8); - context.commitChanges(); - - assertFalse(tMtTablePrimitives.getBoolean("BOOLEAN_COLUMN")); - assertEquals(8, tMtTablePrimitives.getInt("INT_COLUMN")); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryIT.java new file mode 100644 index 0000000..2100320 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryIT.java @@ -0,0 +1,76 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.RefreshQuery; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextRefreshQueryIT extends ClientCase { + + @Inject + private DBHelper dbHelper; + + @Inject + private CayenneContext context; + + private TableHelper tMtTable1; + private TableHelper tMtTable2; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE2"); + dbHelper.deleteAll("MT_TABLE1"); + + tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); + tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); + + tMtTable2 = new TableHelper(dbHelper, "MT_TABLE2"); + tMtTable2.setColumns("TABLE2_ID", "TABLE1_ID", "GLOBAL_ATTRIBUTE"); + } + + private void createM1AndTwoM2sDataSet() throws Exception { + tMtTable1.insert(1, "g1", "s1"); + tMtTable2.insert(1, 1, "g1").insert(2, 1, "g1"); + } + + private void delete1M2DataSet() throws Exception { + tMtTable2.delete().where("TABLE2_ID", 1).execute(); + } + + public void testRefreshToMany() throws Exception { + + createM1AndTwoM2sDataSet(); + + ClientMtTable1 a = Cayenne.objectForPK(context, ClientMtTable1.class, 1); + assertEquals(2, a.getTable2Array().size()); + + delete1M2DataSet(); + + RefreshQuery refresh = new RefreshQuery(a); + context.performGenericQuery(refresh); + assertEquals(PersistenceState.HOLLOW, a.getPersistenceState()); + assertEquals(1, a.getTable2Array().size()); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryTest.java deleted file mode 100644 index ca7c476..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRefreshQueryTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.RefreshQuery; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextRefreshQueryTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - private TableHelper tMtTable1; - private TableHelper tMtTable2; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - - tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); - tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); - - tMtTable2 = new TableHelper(dbHelper, "MT_TABLE2"); - tMtTable2.setColumns("TABLE2_ID", "TABLE1_ID", "GLOBAL_ATTRIBUTE"); - } - - private void createM1AndTwoM2sDataSet() throws Exception { - tMtTable1.insert(1, "g1", "s1"); - tMtTable2.insert(1, 1, "g1").insert(2, 1, "g1"); - } - - private void delete1M2DataSet() throws Exception { - tMtTable2.delete().where("TABLE2_ID", 1).execute(); - } - - public void testRefreshToMany() throws Exception { - - createM1AndTwoM2sDataSet(); - - ClientMtTable1 a = Cayenne.objectForPK(context, ClientMtTable1.class, 1); - assertEquals(2, a.getTable2Array().size()); - - delete1M2DataSet(); - - RefreshQuery refresh = new RefreshQuery(a); - context.performGenericQuery(refresh); - assertEquals(PersistenceState.HOLLOW, a.getPersistenceState()); - assertEquals(1, a.getTable2Array().size()); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsIT.java new file mode 100644 index 0000000..fbc9f20 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsIT.java @@ -0,0 +1,100 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.access.DataContext; +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.testdo.mt.ClientMtTable2; +import org.apache.cayenne.testdo.mt.MtTable1; +import org.apache.cayenne.testdo.mt.MtTable2; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextRelationshipsIT extends ClientCase { + + @Inject + private DBHelper dbHelper; + + @Inject + private CayenneContext context; + + @Inject + private DataContext serverContext; + + private TableHelper tMtTable1; + private TableHelper tMtTable2; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE2"); + dbHelper.deleteAll("MT_TABLE1"); + dbHelper.deleteAll("MT_JOIN45"); + dbHelper.deleteAll("MT_TABLE4"); + dbHelper.deleteAll("MT_TABLE5"); + + tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); + tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); + + tMtTable2 = new TableHelper(dbHelper, "MT_TABLE2"); + tMtTable2.setColumns("TABLE2_ID", "TABLE1_ID", "GLOBAL_ATTRIBUTE"); + } + + public void testLostUncommittedToOneModifications_Client() throws Exception { + + tMtTable1.insert(1, "G1", "S1"); + tMtTable1.insert(2, "G2", "S2"); + tMtTable2.insert(33, 1, "GX"); + + ClientMtTable2 o = Cayenne.objectForPK(context, ClientMtTable2.class, 33); + + ClientMtTable1 r2 = Cayenne.objectForPK(context, ClientMtTable1.class, 2); + ClientMtTable1 r1 = o.getTable1(); + + o.setTable1(r2); + + assertSame(r2, o.getTable1()); + + // see CAY-1757 - this used to reset our changes + assertFalse(r1.getTable2Array().contains(o)); + assertSame(r2, o.getTable1()); + } + + public void testLostUncommittedToOneModifications_Server() throws Exception { + + tMtTable1.insert(1, "G1", "S1"); + tMtTable1.insert(2, "G2", "S2"); + tMtTable2.insert(33, 1, "GX"); + + MtTable2 o = Cayenne.objectForPK(serverContext, MtTable2.class, 33); + + MtTable1 r2 = Cayenne.objectForPK(serverContext, MtTable1.class, 2); + MtTable1 r1 = o.getTable1(); + + o.setTable1(r2); + + assertSame(r2, o.getTable1()); + + assertFalse(r1.getTable2Array().contains(o)); + assertSame(r2, o.getTable1()); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsTest.java deleted file mode 100644 index 38aa1b4..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextRelationshipsTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import org.apache.cayenne.access.DataContext; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.testdo.mt.ClientMtTable2; -import org.apache.cayenne.testdo.mt.MtTable1; -import org.apache.cayenne.testdo.mt.MtTable2; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextRelationshipsTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - @Inject - private DataContext serverContext; - - private TableHelper tMtTable1; - private TableHelper tMtTable2; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - dbHelper.deleteAll("MT_JOIN45"); - dbHelper.deleteAll("MT_TABLE4"); - dbHelper.deleteAll("MT_TABLE5"); - - tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1"); - tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1"); - - tMtTable2 = new TableHelper(dbHelper, "MT_TABLE2"); - tMtTable2.setColumns("TABLE2_ID", "TABLE1_ID", "GLOBAL_ATTRIBUTE"); - } - - public void testLostUncommittedToOneModifications_Client() throws Exception { - - tMtTable1.insert(1, "G1", "S1"); - tMtTable1.insert(2, "G2", "S2"); - tMtTable2.insert(33, 1, "GX"); - - ClientMtTable2 o = Cayenne.objectForPK(context, ClientMtTable2.class, 33); - - ClientMtTable1 r2 = Cayenne.objectForPK(context, ClientMtTable1.class, 2); - ClientMtTable1 r1 = o.getTable1(); - - o.setTable1(r2); - - assertSame(r2, o.getTable1()); - - // see CAY-1757 - this used to reset our changes - assertFalse(r1.getTable2Array().contains(o)); - assertSame(r2, o.getTable1()); - } - - public void testLostUncommittedToOneModifications_Server() throws Exception { - - tMtTable1.insert(1, "G1", "S1"); - tMtTable1.insert(2, "G2", "S2"); - tMtTable2.insert(33, 1, "GX"); - - MtTable2 o = Cayenne.objectForPK(serverContext, MtTable2.class, 33); - - MtTable1 r2 = Cayenne.objectForPK(serverContext, MtTable1.class, 2); - MtTable1 r1 = o.getTable1(); - - o.setTable1(r2); - - assertSame(r2, o.getTable1()); - - assertFalse(r1.getTable2Array().contains(o)); - assertSame(r2, o.getTable1()); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateIT.java new file mode 100644 index 0000000..1cd129b --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateIT.java @@ -0,0 +1,54 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.SQLTemplate; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextSQLTemplateIT extends ClientCase { + + @Inject + private DBHelper dbHelper; + + @Inject + private CayenneContext context; + + @Override + protected void setUpAfterInjection() throws Exception { + dbHelper.deleteAll("MT_TABLE2"); + dbHelper.deleteAll("MT_TABLE1"); + } + + public void testObjectRoot() throws Exception { + + assertNull(Cayenne.objectForPK(context, ClientMtTable1.class, 1)); + context.performGenericQuery(new SQLTemplate( + ClientMtTable1.class, + "insert into MT_TABLE1 " + + "(TABLE1_ID, GLOBAL_ATTRIBUTE1, SERVER_ATTRIBUTE1) " + + "values (1, 'g1', 's1')")); + + assertNotNull(Cayenne.objectForPK(context, ClientMtTable1.class, 1)); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateTest.java deleted file mode 100644 index ac71e78..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextSQLTemplateTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.SQLTemplate; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextSQLTemplateTest extends ClientCase { - - @Inject - private DBHelper dbHelper; - - @Inject - private CayenneContext context; - - @Override - protected void setUpAfterInjection() throws Exception { - dbHelper.deleteAll("MT_TABLE2"); - dbHelper.deleteAll("MT_TABLE1"); - } - - public void testObjectRoot() throws Exception { - - assertNull(Cayenne.objectForPK(context, ClientMtTable1.class, 1)); - context.performGenericQuery(new SQLTemplate( - ClientMtTable1.class, - "insert into MT_TABLE1 " - + "(TABLE1_ID, GLOBAL_ATTRIBUTE1, SERVER_ATTRIBUTE1) " - + "values (1, 'g1', 's1')")); - - assertNotNull(Cayenne.objectForPK(context, ClientMtTable1.class, 1)); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsIT.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsIT.java new file mode 100644 index 0000000..4faed91 --- /dev/null +++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsIT.java @@ -0,0 +1,153 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ +package org.apache.cayenne; + +import org.apache.cayenne.access.ClientServerChannel; +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.map.LifecycleEvent; +import org.apache.cayenne.reflect.LifecycleCallbackRegistry; +import org.apache.cayenne.remote.ClientChannelServerDiffsListener1; +import org.apache.cayenne.testdo.mt.ClientMtTable1; +import org.apache.cayenne.testdo.mt.ClientMtTable2; +import org.apache.cayenne.testdo.mt.MtTable1; +import org.apache.cayenne.unit.di.client.ClientCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; + +@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) +public class CayenneContextServerDiffsIT extends ClientCase { + + @Inject + private ClientServerChannel clientServerChannel; + + @Inject + private CayenneContext context; + + public void testReturnDiffInPrePersist() { + + LifecycleCallbackRegistry callbackRegistry = clientServerChannel + .getEntityResolver() + .getCallbackRegistry(); + + try { + + callbackRegistry.addListener( + LifecycleEvent.POST_ADD, + MtTable1.class, + new ClientChannelServerDiffsListener1(), + "prePersist"); + + ClientMtTable1 o = context.newObject(ClientMtTable1.class); + o.setServerAttribute1("YY"); + context.commitChanges(); + + assertFalse(o.getObjectId().isTemporary()); + assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); + assertEquals("XXX", o.getGlobalAttribute1()); + } + finally { + callbackRegistry.clear(); + } + } + + public void testReturnDiffInPreUpdate() { + LifecycleCallbackRegistry callbackRegistry = clientServerChannel + .getEntityResolver() + .getCallbackRegistry(); + + try { + + callbackRegistry.addListener( + LifecycleEvent.PRE_UPDATE, + MtTable1.class, + new ClientChannelServerDiffsListener1(), + "preUpdate"); + + ClientMtTable1 o = context.newObject(ClientMtTable1.class); + o.setServerAttribute1("YY"); + context.commitChanges(); + + assertNull(o.getGlobalAttribute1()); + + o.setServerAttribute1("XX"); + context.commitChanges(); + + assertFalse(o.getObjectId().isTemporary()); + assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); + assertEquals("111", o.getGlobalAttribute1()); + } + finally { + callbackRegistry.clear(); + } + } + + public void testReturnDiffClientArcChanges() { + + LifecycleCallbackRegistry callbackRegistry = clientServerChannel + .getEntityResolver() + .getCallbackRegistry(); + + try { + callbackRegistry.addListener( + LifecycleEvent.POST_ADD, + MtTable1.class, + new ClientChannelServerDiffsListener1(), + "prePersist"); + + ClientMtTable1 o = context.newObject(ClientMtTable1.class); + ClientMtTable2 o1 = context.newObject(ClientMtTable2.class); + o.addToTable2Array(o1); + context.commitChanges(); + + assertFalse(o.getObjectId().isTemporary()); + assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); + assertEquals("XXX", o.getGlobalAttribute1()); + } + finally { + callbackRegistry.clear(); + } + } + + public void testReturnDiffServerArcChanges() { + + LifecycleCallbackRegistry callbackRegistry = clientServerChannel + .getEntityResolver() + .getCallbackRegistry(); + + try { + callbackRegistry.addListener( + LifecycleEvent.POST_ADD, + MtTable1.class, + new ClientChannelServerDiffsListener1(), + "prePersistAddRelationship"); + + ClientMtTable1 o = context.newObject(ClientMtTable1.class); + ClientMtTable2 o1 = context.newObject(ClientMtTable2.class); + o.addToTable2Array(o1); + context.commitChanges(); + + assertFalse(o.getObjectId().isTemporary()); + assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); + assertEquals(2, o.getTable2Array().size()); + + } + finally { + callbackRegistry.clear(); + } + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/fcb1d536/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsTest.java ---------------------------------------------------------------------- diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsTest.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsTest.java deleted file mode 100644 index 54027a1..0000000 --- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextServerDiffsTest.java +++ /dev/null @@ -1,153 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ -package org.apache.cayenne; - -import org.apache.cayenne.access.ClientServerChannel; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.map.LifecycleEvent; -import org.apache.cayenne.reflect.LifecycleCallbackRegistry; -import org.apache.cayenne.remote.ClientChannelServerDiffsListener1; -import org.apache.cayenne.testdo.mt.ClientMtTable1; -import org.apache.cayenne.testdo.mt.ClientMtTable2; -import org.apache.cayenne.testdo.mt.MtTable1; -import org.apache.cayenne.unit.di.client.ClientCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; - -@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT) -public class CayenneContextServerDiffsTest extends ClientCase { - - @Inject - private ClientServerChannel clientServerChannel; - - @Inject - private CayenneContext context; - - public void testReturnDiffInPrePersist() { - - LifecycleCallbackRegistry callbackRegistry = clientServerChannel - .getEntityResolver() - .getCallbackRegistry(); - - try { - - callbackRegistry.addListener( - LifecycleEvent.POST_ADD, - MtTable1.class, - new ClientChannelServerDiffsListener1(), - "prePersist"); - - ClientMtTable1 o = context.newObject(ClientMtTable1.class); - o.setServerAttribute1("YY"); - context.commitChanges(); - - assertFalse(o.getObjectId().isTemporary()); - assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); - assertEquals("XXX", o.getGlobalAttribute1()); - } - finally { - callbackRegistry.clear(); - } - } - - public void testReturnDiffInPreUpdate() { - LifecycleCallbackRegistry callbackRegistry = clientServerChannel - .getEntityResolver() - .getCallbackRegistry(); - - try { - - callbackRegistry.addListener( - LifecycleEvent.PRE_UPDATE, - MtTable1.class, - new ClientChannelServerDiffsListener1(), - "preUpdate"); - - ClientMtTable1 o = context.newObject(ClientMtTable1.class); - o.setServerAttribute1("YY"); - context.commitChanges(); - - assertNull(o.getGlobalAttribute1()); - - o.setServerAttribute1("XX"); - context.commitChanges(); - - assertFalse(o.getObjectId().isTemporary()); - assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); - assertEquals("111", o.getGlobalAttribute1()); - } - finally { - callbackRegistry.clear(); - } - } - - public void testReturnDiffClientArcChanges() { - - LifecycleCallbackRegistry callbackRegistry = clientServerChannel - .getEntityResolver() - .getCallbackRegistry(); - - try { - callbackRegistry.addListener( - LifecycleEvent.POST_ADD, - MtTable1.class, - new ClientChannelServerDiffsListener1(), - "prePersist"); - - ClientMtTable1 o = context.newObject(ClientMtTable1.class); - ClientMtTable2 o1 = context.newObject(ClientMtTable2.class); - o.addToTable2Array(o1); - context.commitChanges(); - - assertFalse(o.getObjectId().isTemporary()); - assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); - assertEquals("XXX", o.getGlobalAttribute1()); - } - finally { - callbackRegistry.clear(); - } - } - - public void testReturnDiffServerArcChanges() { - - LifecycleCallbackRegistry callbackRegistry = clientServerChannel - .getEntityResolver() - .getCallbackRegistry(); - - try { - callbackRegistry.addListener( - LifecycleEvent.POST_ADD, - MtTable1.class, - new ClientChannelServerDiffsListener1(), - "prePersistAddRelationship"); - - ClientMtTable1 o = context.newObject(ClientMtTable1.class); - ClientMtTable2 o1 = context.newObject(ClientMtTable2.class); - o.addToTable2Array(o1); - context.commitChanges(); - - assertFalse(o.getObjectId().isTemporary()); - assertEquals(PersistenceState.COMMITTED, o.getPersistenceState()); - assertEquals(2, o.getTable2Array().size()); - - } - finally { - callbackRegistry.clear(); - } - } -}
