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