Author: ppoddar
Date: Tue Jan 13 22:20:31 2009
New Revision: 734344

URL: http://svn.apache.org/viewvc?rev=734344&view=rev
Log:
OPENJPA-858: Allow configurable PostPersist callback either post flush/commit 
or post persist immediately.Also refactored callback options around a 
CallbackOptions configuration class.

Added:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CallbackOptions.java
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/PostPersistEntity.java
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/TestPostPersistCallback.java
Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/MetaDataParsers.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java

Added: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CallbackOptions.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CallbackOptions.java?rev=734344&view=auto
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CallbackOptions.java
 (added)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/CallbackOptions.java
 Tue Jan 13 22:20:31 2009
@@ -0,0 +1,67 @@
+/*
+ * 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.conf;
+
+import java.io.Serializable;
+
+/**
+ * Configurable options for callbacks.
+ *
+ * @author Pinaki Poddar
+ */
+public class CallbackOptions implements Serializable {
+    private boolean _isPostPersistCallbackImmediate = false;
+    private boolean _allowsMultipleMethodsForSameCallback = false;
+    
+    /**
+     * Affirms if the post-persist callback is invoked as soon as a new 
instance
+     * is managed. The default is false, implies that the post-persist callback
+     * is invoked after the instance been committed or flushed to the 
datastore.
+     * Defaults to false.
+     */
+    public boolean getPostPersistCallbackImmediate() {
+        return _isPostPersistCallbackImmediate;
+    }
+    
+    /**
+     * Sets if the post-persist callback is invoked as soon as a new instance
+     * is managed. The default is false, implies that the post-persist callback
+     * is invoked after the instance been committed or flushed to the 
datastore.
+     */
+    public void setPostPersistCallbackImmediate(boolean flag) {
+        _isPostPersistCallbackImmediate = flag;
+    }
+    
+    /** 
+     * Flags if multiple methods of the same class can handle the same 
+     * callback event.
+     * Defaults to false.
+     */
+    public boolean getAllowsMultipleMethodsForSameCallback() {
+        return _allowsMultipleMethodsForSameCallback;
+    }
+    
+    /** 
+     * Flags if multiple methods of the same class can handle the same 
+     * callback event.
+     */
+    public void setAllowsMultipleMethodsForSameCallback(boolean flag) {
+        _allowsMultipleMethodsForSameCallback = flag;
+    }
+}

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
 Tue Jan 13 22:20:31 2009
@@ -1399,6 +1399,28 @@
         * Backwards compatibility options.
         */
        public Compatibility getCompatibilityInstance ();
+       
+       /**
+        * Options for configuring callbacks as a String.
+     *
+     * @since 2.0.0
+        */
+       public String getCallbackOptions();
+
+       /**
+        * Options for configuring callbacks.
+        * 
+        * @since 2.0.0
+        */
+       public CallbackOptions getCallbackOptionsInstance();
+       
+    /**
+     * Options for configuring callbacks set as a comma-separated string value
+     * pair.
+     * 
+     * @since 2.0.0
+     */
+       public void setCallbackOptions(String options);
 
     /**
      * Configuration settings for the query compilation cache to use. 

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
 Tue Jan 13 22:20:31 2009
@@ -132,6 +132,7 @@
     public ObjectValue savepointManagerPlugin;
     public ObjectValue orphanedKeyPlugin;
     public ObjectValue compatibilityPlugin;
+    public ObjectValue callbackPlugin;
     public QueryCompilationCacheValue queryCompilationCachePlugin;
     public IntValue runtimeUnenhancedClasses;
     public CacheMarshallersValue cacheMarshallerPlugins;
@@ -495,6 +496,13 @@
         compatibilityPlugin.setString(aliases[0]);
         compatibilityPlugin.setInstantiatingGetter("getCompatibilityInstance");
         
+        callbackPlugin = addPlugin("Callbacks", true);
+        aliases = new String[] { "default", CallbackOptions.class.getName() };
+        callbackPlugin.setAliases(aliases);
+        callbackPlugin.setDefault(aliases[0]);
+        callbackPlugin.setString(aliases[0]);
+        callbackPlugin.setInstantiatingGetter("getCallbackOptionsInstance");
+           
         queryCompilationCachePlugin = new QueryCompilationCacheValue(
             "QueryCompilationCache");
         queryCompilationCachePlugin.setInstantiatingGetter(
@@ -1388,6 +1396,20 @@
             compatibilityPlugin.instantiate(Compatibility.class, this);
         return (Compatibility) compatibilityPlugin.get();
     }
+    
+    public String getCallbackOptions() {
+        return callbackPlugin.getString();
+    }
+    
+    public void setCallbackOptions(String options) {
+        callbackPlugin.setString(options);
+    }
+    
+    public CallbackOptions getCallbackOptionsInstance() {
+        if (callbackPlugin.get() == null)
+            callbackPlugin.instantiate(CallbackOptions.class, this);
+        return (CallbackOptions) callbackPlugin.get();
+    }
 
     public String getQueryCompilationCache() {
         return queryCompilationCachePlugin.getString();

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 Tue Jan 13 22:20:31 2009
@@ -354,6 +354,10 @@
      * Fire the given lifecycle event to all listeners.
      */
     private boolean fireLifecycleEvent(int type) {
+        if (type == LifecycleEvent.AFTER_PERSIST 
+        && _broker.getConfiguration().getCallbackOptionsInstance()
+                  .getPostPersistCallbackImmediate())
+            fetchObjectId();
         return _broker.fireLifecycleEvent(getManagedInstance(), null,
             _meta, type);
     }

Added: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/PostPersistEntity.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/PostPersistEntity.java?rev=734344&view=auto
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/PostPersistEntity.java
 (added)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/PostPersistEntity.java
 Tue Jan 13 22:20:31 2009
@@ -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.openjpa.persistence.callbacks;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.PostPersist;
+
+/**
+ * A persistent entity to test that when PostPersist callback is invoked can
+ * be configured. Also the auto-generated persistent identity is assigned when 
+ * PostPersist is invoked.
+ *  
+ * @author Pinaki Poddar
+ *
+ */
+...@entity
+public class PostPersistEntity {
+    @Id
+    @GeneratedValue
+    private long id;
+    
+    private String name;
+    
+    transient int postPersistCallbackCount;
+    transient long idOnCallback;
+    
+    @PostPersist
+    public void postPersist() {
+        postPersistCallbackCount++;
+        idOnCallback = ((Long)getByReflection("id")).longValue();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public long getId() {
+        return id;
+    }
+    
+    /**
+     * Gets value of the named field by reflection to ensure that the field is
+     * not loaded as a side-effect to access it.
+     * @return
+     */
+    Object getByReflection(String f) {
+        try {
+            return getClass().getDeclaredField(f).get(this);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } 
+    }
+}

Added: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/TestPostPersistCallback.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/TestPostPersistCallback.java?rev=734344&view=auto
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/TestPostPersistCallback.java
 (added)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/callbacks/TestPostPersistCallback.java
 Tue Jan 13 22:20:31 2009
@@ -0,0 +1,96 @@
+/*
+ * 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.persistence.callbacks;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * Tests when PostPersist is invoked can be configured.
+ *  
+ * @author Pinaki Poddar
+ *
+ */
+public class TestPostPersistCallback extends SingleEMFTestCase {
+    
+    public void testPostPersistCalledAfterFlush() {
+        super.setUp(CLEAR_TABLES, PostPersistEntity.class);
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        PostPersistEntity pc = new PostPersistEntity();
+        
+        em.persist(pc);
+        
+        // nor is postPersist() callback invoked
+        assertEquals(0, pc.postPersistCallbackCount);
+        assertEquals(0, pc.idOnCallback);
+        
+        em.flush();
+        
+        // postPersist() callback invoked
+        assertFalse(pc.getId() == 0);
+        assertEquals(1, pc.postPersistCallbackCount);
+        assertEquals(pc.getId(), pc.idOnCallback);
+        
+        em.getTransaction().commit();
+        
+        assertFalse(pc.getId() == 0);
+        assertEquals(1, pc.postPersistCallbackCount);
+        assertEquals(pc.getId(), pc.idOnCallback);
+    }
+    
+    public void testPostPersistCalledAfterCommit() {
+        super.setUp(CLEAR_TABLES, PostPersistEntity.class);
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        PostPersistEntity pc = new PostPersistEntity();
+        
+        em.persist(pc);
+        
+        assertEquals(0, pc.postPersistCallbackCount);
+        assertEquals(0, pc.idOnCallback);
+        
+        em.getTransaction().commit();
+        
+        assertFalse(pc.getId() == 0);
+        assertEquals(1, pc.postPersistCallbackCount);
+        assertEquals(pc.getId(), pc.idOnCallback);
+    }
+    
+    public void testPostPersistCalledAfterPersist() {
+        super.setUp(CLEAR_TABLES, PostPersistEntity.class, 
+            "openjpa.Callbacks", "PostPersistCallbackImmediate=true");
+        assertTrue(emf.getConfiguration().getCallbackOptionsInstance()
+            .getPostPersistCallbackImmediate());
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        PostPersistEntity pc = new PostPersistEntity();
+        
+        em.persist(pc);
+        
+        assertEquals(1, pc.postPersistCallbackCount);
+        assertEquals(pc.getId(), pc.idOnCallback);
+        
+        em.getTransaction().commit();
+        
+        assertEquals(1, pc.postPersistCallbackCount);
+        assertEquals(pc.getId(), pc.idOnCallback);
+    }
+}

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java
 Tue Jan 13 22:20:31 2009
@@ -126,8 +126,10 @@
                     buf.append(";");
                 buf.append(c.getName());
             }
+            String oldValue = map.containsKey("openjpa.MetaDataFactory") 
+                ? ","+map.get("openjpa.MetaDataFactory").toString() : "";
             map.put("openjpa.MetaDataFactory",
-                "jpa(Types=" + buf.toString() + ")");
+                "jpa(Types=" + buf.toString() + oldValue + ")");
         }
 
         OpenJPAEntityManagerFactorySPI oemf = (OpenJPAEntityManagerFactorySPI) 

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
 Tue Jan 13 22:20:31 2009
@@ -845,7 +845,7 @@
             sup = sup.getSuperclass();
         } while (sups && !Object.class.equals(sup));
 
-        MetaDataDefaults def = repos.getMetaDataFactory().getDefaults();
+        OpenJPAConfiguration conf = repos.getConfiguration();
         for (Method m : methods) {
             for (Annotation anno : (Annotation[]) AccessController
                 .doPrivileged(J2DoPrivHelper
@@ -853,7 +853,7 @@
                 MetaDataTag tag = _tags.get(anno.annotationType());
                 if (tag == null)
                     continue;
-                int[] events = MetaDataParsers.getEventTypes(tag);
+                int[] events = MetaDataParsers.getEventTypes(tag, conf);
                 if (events == null)
                     continue;
 
@@ -866,7 +866,7 @@
                     if (callbacks[e] == null)
                         callbacks[e] = new ArrayList(3);
                     MetaDataParsers.validateMethodsForSameCallback(cls, 
-                        callbacks[e], m, tag, def, repos.getLog());
+                        callbacks[e], m, tag, conf, repos.getLog());
                     if (listener) {
                         callbacks[e].add(new BeanLifecycleCallbacks(cls, m,
                             false));

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/MetaDataParsers.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/MetaDataParsers.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/MetaDataParsers.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/MetaDataParsers.java
 Tue Jan 13 22:20:31 2009
@@ -21,6 +21,7 @@
 import java.lang.reflect.Method;
 import java.util.Collection;
 
+import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.event.LifecycleCallbacks;
 import org.apache.openjpa.event.LifecycleEvent;
 import org.apache.openjpa.event.MethodLifecycleCallbacks;
@@ -42,12 +43,16 @@
     /**
      * Return the event type constants for the given tag, or null if none.
      */
-    public static int[] getEventTypes(MetaDataTag tag) {
+    public static int[] getEventTypes(MetaDataTag tag, 
+        OpenJPAConfiguration conf) {
         switch (tag) {
             case PRE_PERSIST:
                 return new int[]{ LifecycleEvent.BEFORE_PERSIST };
             case POST_PERSIST:
-                return new int[]{ LifecycleEvent.AFTER_PERSIST_PERFORMED };
+                boolean immediate = conf.getCallbackOptionsInstance()
+                        .getPostPersistCallbackImmediate();
+                return new int[]{ immediate ? LifecycleEvent.AFTER_PERSIST 
+                                  : LifecycleEvent.AFTER_PERSIST_PERFORMED };
             case PRE_REMOVE:
                 return new int[]{ LifecycleEvent.BEFORE_DELETE };
             case POST_REMOVE:
@@ -69,7 +74,7 @@
      */
     public static void validateMethodsForSameCallback(Class cls, 
         Collection<LifecycleCallbacks> callbacks, Method method, 
-        MetaDataTag tag, MetaDataDefaults def, Log log) {
+        MetaDataTag tag, OpenJPAConfiguration conf, Log log) {
         if (callbacks == null || callbacks.isEmpty())
             return;
 
@@ -80,26 +85,14 @@
             if (!exists.getDeclaringClass().equals(method.getDeclaringClass()))
                 continue;
 
-            PersistenceMetaDataDefaults defaults = getPersistenceDefaults(def);
             Localizer.Message msg = _loc.get("multiple-methods-on-callback", 
                 new Object[] { method.getDeclaringClass().getName(), 
                 method.getName(), exists.getName(), tag.toString() });
-            if (defaults == null 
-                || defaults.getAllowsMultipleMethodsForSameCallback())
+            if (conf.getCallbackOptionsInstance()
+                .getAllowsMultipleMethodsForSameCallback())
                 log.warn(msg);
             else
                 throw new UserException(msg);
         }
     }
-    
-    /**
-     * Return the {...@link PersistenceMetaDataDefaults} in use, or null if not
-     * using JPA defaults.
-     */
-    private static PersistenceMetaDataDefaults getPersistenceDefaults
-        (MetaDataDefaults def) {
-        if (def instanceof PersistenceMetaDataDefaults)
-            return (PersistenceMetaDataDefaults) def;
-        return null;
-    }
 }

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceMetaDataDefaults.java
 Tue Jan 13 22:20:31 2009
@@ -73,8 +73,6 @@
 public class PersistenceMetaDataDefaults
     extends AbstractMetaDataDefaults {
 
-    private boolean _allowsMultipleMethodsForSameCallback = false;
-
     private static final Localizer _loc = Localizer.forPackage
         (PersistenceMetaDataDefaults.class);
 
@@ -195,22 +193,6 @@
         return null;
     }
     
-    /** 
-     * Flags if multiple methods of the same class can handle the same 
-     * callback event.
-     */
-    public boolean getAllowsMultipleMethodsForSameCallback() {
-        return _allowsMultipleMethodsForSameCallback;
-    }
-    
-    /** 
-     * Flags if multiple methods of the same class can handle the same 
-     * callback event.
-     */
-    public void setAllowsMultipleMethodsForSameCallback(boolean flag) {
-        _allowsMultipleMethodsForSameCallback = flag;
-    }
-
     /**
      * Auto-configuration method for the default access type of base classes 
      * with ACCESS_UNKNOWN

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java?rev=734344&r1=734343&r2=734344&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java
 Tue Jan 13 22:20:31 2009
@@ -1717,7 +1717,7 @@
         throws SAXException {
         if (!isMetaDataMode())
             return false;
-        int[] events = MetaDataParsers.getEventTypes(callback);
+        int[] events = MetaDataParsers.getEventTypes(callback, _conf);
         if (events == null)
             return false;
 
@@ -1748,11 +1748,11 @@
             if (_listener != null) {
                 MetaDataParsers.validateMethodsForSameCallback(_listener,
                     _callbacks[event], ((BeanLifecycleCallbacks) adapter).
-                    getCallbackMethod(), callback, def, getLog());
+                    getCallbackMethod(), callback, _conf, getLog());
             } else {
                 MetaDataParsers.validateMethodsForSameCallback(_cls,
                     _callbacks[event], ((MethodLifecycleCallbacks) adapter).
-                    getCallbackMethod(), callback, def, getLog());
+                    getCallbackMethod(), callback, _conf, getLog());
 
             }
             if (_callbacks[event] == null)


Reply via email to