public Object addingService()

in jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EMFTracker.java [62:87]


    public Object addingService(ServiceReference reference) {
        String unitName = (String)reference.getProperty(JPA_UNIT_NAME);
        if (unitName == null) {
            return null;
        }
        BundleContext puContext = reference.getBundle().getBundleContext();
        TrackedEmf tracked = new TrackedEmf();
        tracked.emf = (EntityManagerFactory)puContext.getService(reference);
        tracked.emSupplier = new EMSupplierImpl(unitName, tracked.emf, coordinator);
        tracked.emSupplierReg = puContext.registerService(EmSupplier.class, tracked.emSupplier,
                                                         getEmSupplierProps(unitName));

        EntityManager emProxy = createProxy(tracked.emSupplier);
        tracked.emProxyReg = puContext.registerService(EntityManager.class, emProxy,
                                                         getEmSupplierProps(unitName));
        
        if (getTransactionType(tracked.emf) == PersistenceUnitTransactionType.RESOURCE_LOCAL) {
            JpaTemplate txManager = new ResourceLocalJpaTemplate(tracked.emSupplier, coordinator);
            tracked.rlTxManagerReg = puContext.registerService(JpaTemplate.class, txManager,
                                                          rlTxManProps(unitName));
        } else {
            tracked.tmTracker = new TMTracker(puContext, tracked.emSupplier, unitName, coordinator);
            tracked.tmTracker.open();
        }
        return tracked;
    }