javax-persistence/2_0/src/main/java/org/apache/aries/jpa/javax/persistence/EMFBuilderServiceResolver.java [34:100]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
public class EMFBuilderServiceResolver implements PersistenceProvider, ProviderUtil {

	
	
	private final ServiceTracker<Object, Object> tracker;
	
	public EMFBuilderServiceResolver(BundleContext context) {
		tracker = new ServiceTracker<Object, Object>(context, 
				"org.osgi.service.jpa.EntityManagerFactoryBuilder", null);
		
		tracker.open();
	}
	
	public void close() {
		tracker.close();
	}
	
	/**
	 * This method looks for a matching EntityManagerFactoryBuilder service to create the
	 * EMF with.
	 */
	@Override
	public EntityManagerFactory createEntityManagerFactory(String emName, @SuppressWarnings("rawtypes") Map map) {
		for (Entry<ServiceReference<Object>, Object> e : tracker.getTracked().entrySet()) {
			String serviceUnitName = String.valueOf(e.getKey().getProperty("osgi.unit.name"));
			
			if(serviceUnitName.equals(emName)) {
				try {
					Object emfBuilder = e.getValue();
					Method m = emfBuilder.getClass().getMethod("createEntityManagerFactory", Map.class);
					return (EntityManagerFactory) m.invoke(emfBuilder, map);
				} catch (Exception ex) {
					throw new PersistenceException("Failed to create an EntityManagerFactory for unit " +
							emName, ex);
				}
			}
		}
		return null;
	}

	/**
	 * This method is not intended to be used, as this PersistenceProvider is internal to
	 * the Spec API for supporting static factory usage (see OSGi JPA spec 127.7.1)
	 */
	@Override
	public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, @SuppressWarnings("rawtypes") Map map) {
		return null;
	}

	@Override
	public ProviderUtil getProviderUtil() {
		return this;
	}

	@Override
	public LoadState isLoadedWithoutReference(Object entity, String attributeName) {
		return LoadState.UNKNOWN;
	}

	@Override
	public LoadState isLoadedWithReference(Object entity, String attributeName) {
		return LoadState.UNKNOWN;
	}

	@Override
	public LoadState isLoaded(Object entity) {
		return LoadState.UNKNOWN;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



javax-persistence/2_1/src/main/java/org/apache/aries/jpa/javax/persistence/EMFBuilderServiceResolver.java [34:98]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
public class EMFBuilderServiceResolver implements PersistenceProvider, ProviderUtil {

	private final ServiceTracker<Object, Object> tracker;
	
	public EMFBuilderServiceResolver(BundleContext context) {
		tracker = new ServiceTracker<Object, Object>(context, 
				"org.osgi.service.jpa.EntityManagerFactoryBuilder", null);
		
		tracker.open();
	}
	
	public void close() {
		tracker.close();
	}
	
	/**
	 * This method looks for a matching EntityManagerFactoryBuilder service to create the
	 * EMF with.
	 */
	@Override
	public EntityManagerFactory createEntityManagerFactory(String emName, @SuppressWarnings("rawtypes") Map map) {
		for (Entry<ServiceReference<Object>, Object> e : tracker.getTracked().entrySet()) {
			String serviceUnitName = String.valueOf(e.getKey().getProperty("osgi.unit.name"));
			
			if(serviceUnitName.equals(emName)) {
				try {
					Object emfBuilder = e.getValue();
					Method m = emfBuilder.getClass().getMethod("createEntityManagerFactory", Map.class);
					return (EntityManagerFactory) m.invoke(emfBuilder, map);
				} catch (Exception ex) {
					throw new PersistenceException("Failed to create an EntityManagerFactory for unit " +
							emName, ex);
				}
			}
		}
		return null;
	}

	/**
	 * This method is not intended to be used, as this PersistenceProvider is internal to
	 * the Spec API for supporting static factory usage (see OSGi JPA spec 127.7.1)
	 */
	@Override
	public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, @SuppressWarnings("rawtypes") Map map) {
		return null;
	}

	@Override
	public ProviderUtil getProviderUtil() {
		return this;
	}

	@Override
	public LoadState isLoadedWithoutReference(Object entity, String attributeName) {
		return LoadState.UNKNOWN;
	}

	@Override
	public LoadState isLoadedWithReference(Object entity, String attributeName) {
		return LoadState.UNKNOWN;
	}

	@Override
	public LoadState isLoaded(Object entity) {
		return LoadState.UNKNOWN;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



