You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2007/07/25 18:04:28 UTC

svn commit: r559503 - in /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event: ./ TestSJVMRemoteCommitProvider.java

Author: pcl
Date: Wed Jul 25 09:04:27 2007
New Revision: 559503

URL: http://svn.apache.org/viewvc?view=rev&rev=559503
Log:
Simple test case for in-memory remote commit provider.

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java?view=auto&rev=559503
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/event/TestSJVMRemoteCommitProvider.java Wed Jul 25 09:04:27 2007
@@ -0,0 +1,87 @@
+/*
+ * 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.openjpa.event;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Collections;
+import javax.persistence.Persistence;
+
+import org.apache.openjpa.persistence.test.PersistenceTestCase;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.event.RemoteCommitListener;
+import org.apache.openjpa.event.RemoteCommitEvent;
+
+public class TestSJVMRemoteCommitProvider
+    extends PersistenceTestCase {
+
+    private OpenJPAEntityManagerFactory emf1;
+    private OpenJPAEntityManagerFactory emf2;
+    private ListenerImpl listen1;
+    private ListenerImpl listen2;
+
+    public void setUp() {
+        Map sjvm1 = new HashMap();
+        sjvm1.put("openjpa.RemoteCommitProvider", "sjvm");
+        // set this to differentiate emf1 from the other emf below
+        sjvm1.put("openjpa.DetachState", "true");
+        emf1 = OpenJPAPersistence.cast(
+            Persistence.createEntityManagerFactory("test", sjvm1));
+        emf1.getConfiguration().getRemoteCommitEventManager().addListener(
+            listen1 = new ListenerImpl());
+
+        Map sjvm2 = new HashMap();
+        sjvm2.put("openjpa.RemoteCommitProvider", "sjvm");
+        sjvm2.put("openjpa.DetachState", "false"); // differentiate from above
+        emf2 = OpenJPAPersistence.cast(
+            Persistence.createEntityManagerFactory("test", sjvm2));
+        emf2.getConfiguration().getRemoteCommitEventManager().addListener(
+            listen2 = new ListenerImpl());
+    }
+
+    public void testSJVMRemoteCommitProvider() {
+        assertNotSame(OpenJPAPersistence.toBrokerFactory(emf1),
+            OpenJPAPersistence.toBrokerFactory(emf2));
+        
+        emf1.getConfiguration().getRemoteCommitEventManager()
+            .getRemoteCommitProvider().broadcast(
+                new RemoteCommitEvent(RemoteCommitEvent.PAYLOAD_OIDS,
+                    Collections.EMPTY_SET,
+                    Collections.EMPTY_SET,
+                    Collections.EMPTY_SET,
+                    Collections.EMPTY_SET));
+
+        assertEquals(0, listen1.eventCount);
+        assertEquals(1, listen2.eventCount);
+    }
+
+    private class ListenerImpl
+        implements RemoteCommitListener {
+
+        private int eventCount;
+
+        public void afterCommit(RemoteCommitEvent event) {
+            eventCount++;
+        }
+
+        public void close() {
+        }
+    }
+}
\ No newline at end of file