You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ga...@apache.org on 2010/06/02 22:35:01 UTC

svn commit: r950752 - in /incubator/aries/trunk/jpa: jpa-api/src/main/java/org/apache/aries/jpa/container/ jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/

Author: gawor
Date: Wed Jun  2 20:35:00 2010
New Revision: 950752

URL: http://svn.apache.org/viewvc?rev=950752&view=rev
Log:
Reverted changes for ARIES-329 as there is a better way for ManagedPersistenceUnitInfoFactory extension

Removed:
    incubator/aries/trunk/jpa/jpa-api/src/main/java/org/apache/aries/jpa/container/ManagedPersistenceUnitInfoFactoryListener.java
Modified:
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java?rev=950752&r1=950751&r2=950752&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/ManagedPersistenceUnitInfoFactoryImpl.java Wed Jun  2 20:35:00 2010
@@ -22,33 +22,31 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.aries.jpa.container.ManagedPersistenceUnitInfo;
 import org.apache.aries.jpa.container.ManagedPersistenceUnitInfoFactory;
-import org.apache.aries.jpa.container.ManagedPersistenceUnitInfoFactoryListener;
 import org.apache.aries.jpa.container.parsing.ParsedPersistenceUnit;
 import org.apache.aries.jpa.transformer.TransformerAgent;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
 
 public class ManagedPersistenceUnitInfoFactoryImpl implements ManagedPersistenceUnitInfoFactory {
 
   private Map<Bundle, PersistenceBundleInfo> map = 
       Collections.synchronizedMap(new HashMap<Bundle, PersistenceBundleInfo>());
-    
+  
   public Collection<ManagedPersistenceUnitInfo> createManagedPersistenceUnitMetadata(
       BundleContext containerContext, Bundle persistenceBundle,
       ServiceReference providerReference,
       Collection<ParsedPersistenceUnit> persistenceMetadata) {
     
+    //TODO add support for provider bundle imports (e.g. for weaving) here
+      
     // try to get TransformerAgent service
+    ServiceReference agentReference = containerContext.getServiceReference(TransformerAgent.class.getName());
     TransformerAgent agent = null;
-    ServiceReference agentReference = containerContext.getServiceReference(TransformerAgent.class.getName());   
     if (agentReference != null) {
         agent = (TransformerAgent) containerContext.getService(agentReference);
     }
@@ -57,51 +55,16 @@ public class ManagedPersistenceUnitInfoF
     for (ParsedPersistenceUnit unit : persistenceMetadata) {
       managedUnits.add(new ManagedPersistenceUnitInfoImpl(persistenceBundle, unit, providerReference, agent));
     }
-            
-    // try to get ManagedPersistenceUnitInfoFactoryListener service
-    ManagedPersistenceUnitInfoFactoryListener listener = null;
-    ServiceReference listenerReference = getManagedPersistenceUnitInfoFactoryListener(containerContext, providerReference);
-    if (listenerReference != null) {
-        listener = (ManagedPersistenceUnitInfoFactoryListener) containerContext.getService(listenerReference);
-    }
-        
-    if (listener != null) {
-        listener.persistenceUnitMetadataCreated(containerContext, persistenceBundle, providerReference, managedUnits);
-    }
     
     PersistenceBundleInfo info = new PersistenceBundleInfo();
     info.managedUnits = managedUnits;
-    info.listener = listener;
-    info.references.add(agentReference);
-    info.references.add(listenerReference);
+    info.agentReference = agentReference;
     
     map.put(persistenceBundle, info);
     
     return managedUnits;
   }
   
-  private ServiceReference getManagedPersistenceUnitInfoFactoryListener(BundleContext containerContext, 
-                                                                        ServiceReference providerReference) {
-     
-      if (providerReference != null) {
-          String providerName = (String) providerReference.getProperty("javax.persistence.provider");
-          if (providerName != null) {
-              String filter = "(javax.persistence.provider=" + providerName + ")";
-              try {
-                  ServiceReference[] refs = containerContext.getServiceReferences(ManagedPersistenceUnitInfoFactoryListener.class.getName(), filter);
-                  if (refs != null && refs.length > 0) {
-                      return refs[0];
-                  }
-              } catch (InvalidSyntaxException e) {
-                  // should not happen
-                  e.printStackTrace();
-              }
-          }
-      }
-      
-      return containerContext.getServiceReference(ManagedPersistenceUnitInfoFactoryListener.class.getName());
-  }
-  
   public void destroyPersistenceBundle(BundleContext containerContext, Bundle persistenceBundle) {
       PersistenceBundleInfo info = map.remove(persistenceBundle);
       if (info != null) {
@@ -110,12 +73,9 @@ public class ManagedPersistenceUnitInfoF
               ((ManagedPersistenceUnitInfoImpl) unit).destroy();
           }
           info.managedUnits.clear();
-          if (info.listener != null) {
-              info.listener.persistenceBundleDestroyed(containerContext, persistenceBundle);
-          }
-          // unget services
-          for (ServiceReference ref : info.references) {
-              containerContext.ungetService(ref);
+          // unget agent service
+          if (info.agentReference != null) {
+              containerContext.ungetService(info.agentReference);
           }
       }
   }
@@ -125,9 +85,8 @@ public class ManagedPersistenceUnitInfoF
   }
     
   private static class PersistenceBundleInfo {
-      private List<ServiceReference> references = new LinkedList<ServiceReference>();
       private Collection<ManagedPersistenceUnitInfo> managedUnits;
-      private ManagedPersistenceUnitInfoFactoryListener listener;
+      private ServiceReference agentReference;
   }
   
   //Code that can be used to attach a fragment for provider wiring