Author: cschneider
Date: Fri Feb  6 10:48:30 2015
New Revision: 1657778

URL: http://svn.apache.org/r1657778
Log:
[ARIES-1294] Refactor NSHandler

Added:
    
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/EMFServiceRefFactory.java
Modified:
    
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
    
aries/trunk/jpa/jpa-blueprint-aries/src/main/resources/OSGI-INF/blueprint/jpa.xml
    
aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java

Added: 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/EMFServiceRefFactory.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/EMFServiceRefFactory.java?rev=1657778&view=auto
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/EMFServiceRefFactory.java
 (added)
+++ 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/EMFServiceRefFactory.java
 Fri Feb  6 10:48:30 2015
@@ -0,0 +1,123 @@
+/**
+ * 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.aries.jpa.blueprint.aries.impl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.aries.blueprint.mutable.MutableRefMetadata;
+import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
+import org.apache.aries.jpa.container.PersistenceUnitConstants;
+import org.apache.aries.jpa.container.context.PersistenceContextProvider;
+import org.osgi.service.blueprint.reflect.BeanMetadata;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.blueprint.reflect.ReferenceMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EMFServiceRefFactory {
+    private static final Logger _logger = 
LoggerFactory.getLogger("org.apache.aries.jpa.blueprint.aries");
+    
+    /** The blueprint attribute value to make a bean eager */
+    private static final String ACTIVATION_EAGER = "EAGER";
+    
+    @SuppressWarnings("unchecked")
+    ComponentMetadata create(boolean isPersistenceUnit,
+        ParserContext ctx, String unitName) {
+      // Create a service reference for the EMF (it is an EMF for persistence
+      // contexts and units)
+      final MutableReferenceMetadata refMetadata = 
ctx.createMetadata(MutableReferenceMetadata.class);
+      refMetadata.setActivation(ACTIVATION_EAGER.equalsIgnoreCase(ctx
+              .getDefaultActivation()) ? ReferenceMetadata.ACTIVATION_EAGER
+              : ReferenceMetadata.ACTIVATION_LAZY);
+      refMetadata.setAvailability(ReferenceMetadata.AVAILABILITY_MANDATORY);
+      refMetadata.setInterface(EntityManagerFactory.class.getName());
+      String filter = createEMFServiceFilter(isPersistenceUnit, unitName);
+      refMetadata.setFilter(filter);
+      refMetadata.setTimeout(Integer.parseInt(ctx.getDefaultTimeout()));
+      refMetadata.setDependsOn((List<String>) Collections.EMPTY_LIST);
+      refMetadata.setId(ctx.generateId());
+
+      // Finally, if this is a persistence context we need to create the
+      // entity manager as the Target
+      ComponentMetadata target = isPersistenceUnit ? refMetadata
+              : createInjectionBeanMetedata(ctx, refMetadata);
+      return target;
+    }
+
+    private String createEMFServiceFilter(boolean isPersistenceUnit, String 
unitName) {
+        // Pick the right EMF by looking for the presence, or absence, of the
+        // PROXY_FACTORY service property
+        StringBuilder filter = new StringBuilder("(&");
+        // Persistence units do not have the property, persistence contexts do
+        if (isPersistenceUnit)
+            filter.append("(!(" + 
PersistenceContextProvider.PROXY_FACTORY_EMF_ATTRIBUTE + "=*))");
+        else
+            filter.append("(" + 
PersistenceContextProvider.PROXY_FACTORY_EMF_ATTRIBUTE + "=true)");
+
+        // Add the empty name filter if necessary
+        if (!"".equals(unitName))
+            filter.append("(" + PersistenceUnitConstants.OSGI_UNIT_NAME + "=" 
+ unitName + ")");
+        else
+            filter.append("(" + 
PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME + "=true)");
+
+        filter.append(")");
+        return filter.toString();
+    }
+    
+    /**
+     * This method turns a persistence context factory into an
+     * {@link EntityManager} using blueprint factories
+     * 
+     * @param ctx
+     *            the {@link ParserContext}
+     * @param factory
+     *            the reference bean for the persistence context factory
+     * @return
+     */
+    private ComponentMetadata createInjectionBeanMetedata(ParserContext ctx,
+        MutableReferenceMetadata factory) {
+
+        if (_logger.isDebugEnabled())
+            _logger.debug("Creating a managed persistence context definition 
for injection");
+
+        //We want the EntityManager objects created from this factory to be 
damped too
+        factory.setProxyChildBeanClasses(Arrays.asList(new 
Class<?>[]{EntityManager.class}));
+        
+        // Register the factory bean, and then create an entitymanager from it
+        
ctx.getComponentDefinitionRegistry().registerComponentDefinition(factory);
+
+        MutableBeanMetadata meta = 
ctx.createMetadata(MutableBeanMetadata.class);
+        MutableRefMetadata ref = ctx.createMetadata(MutableRefMetadata.class);
+        ref.setComponentId(factory.getId());
+        meta.setFactoryComponent(ref);
+        meta.setActivation(factory.getActivation());
+        meta.setFactoryMethod("createEntityManager");
+        meta.setScope(BeanMetadata.SCOPE_PROTOTYPE);
+        meta.setDestroyMethod("internalClose");
+
+        return meta;
+    }
+}

Modified: 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java?rev=1657778&r1=1657777&r2=1657778&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
 (original)
+++ 
aries/trunk/jpa/jpa-blueprint-aries/src/main/java/org/apache/aries/jpa/blueprint/aries/impl/NSHandler.java
 Fri Feb  6 10:48:30 2015
@@ -20,9 +20,7 @@ package org.apache.aries.jpa.blueprint.a
 
 import java.lang.reflect.Method;
 import java.net.URL;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,8 +38,6 @@ import org.apache.aries.blueprint.Namesp
 import org.apache.aries.blueprint.ParserContext;
 import org.apache.aries.blueprint.PassThroughMetadata;
 import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
-import org.apache.aries.blueprint.mutable.MutableRefMetadata;
-import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.aries.jpa.container.PersistenceUnitConstants;
 import org.apache.aries.jpa.container.context.PersistenceContextProvider;
 import org.apache.aries.jpa.container.sync.Synchronization;
@@ -54,11 +50,9 @@ import org.osgi.service.blueprint.reflec
 import org.osgi.service.blueprint.reflect.MapEntry;
 import org.osgi.service.blueprint.reflect.MapMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
-import org.osgi.service.blueprint.reflect.ReferenceMetadata;
 import org.osgi.service.blueprint.reflect.ValueMetadata;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -107,16 +101,6 @@ public class NSHandler implements Namesp
     private static final String ATTR_UNIT_NAME = "unitname";
     /** The default name to use if no unit name is specified */
     private static final String DEFAULT_UNIT_NAME = "";
-
-    /** A filter to find persistence units that specify an empty name */
-    public static final String EMPTY_UNIT_NAME_FILTER = "("
-            + PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME + "=true)";
-
-    /** The blueprint attribute value to make a bean eager */
-    private static final String ACTIVATION_EAGER = "EAGER";
-    
-    /** The interface to proxy for managed persistence contexts */
-    private static final Collection<Class<?>> IFACES = Arrays.asList(new 
Class<?>[] {EntityManager.class});
     
     /** The {@link PersistenceManager} to register contexts with */
     private PersistenceContextProvider manager;
@@ -130,6 +114,7 @@ public class NSHandler implements Namesp
     /**
      * Called by blueprint when we meet a JPA namespace element
      */
+    @Override
     public ComponentMetadata decorate(Node node, ComponentMetadata component,
             ParserContext context) {
         Element element = getValidNode(node, component);
@@ -137,16 +122,67 @@ public class NSHandler implements Namesp
 
         String property = element.getAttribute(ATTR_PROPERTY);
         property = property.isEmpty() ? null : property;
-        String index = element.getAttribute(ATTR_INDEX);
-        index = index.isEmpty() ? null : index;
+        int index = parseIndex(element.getAttribute(ATTR_INDEX));
         String unitName = parseUnitName(element);
         boolean isPersistenceUnit = TAG_UNIT.equals(element.getLocalName());
-        
-        if(property != null && index != null) {
-          _logger.error(MESSAGES.getMessage("invalid.property.and.index"));
+
+        ComponentMetadata emfRef = new 
EMFServiceRefFactory().create(isPersistenceUnit, context, unitName);
+        if(property != null && index != -1) {
+            _logger.error(MESSAGES.getMessage("invalid.property.and.index"));
         } else if (property != null) {
-            
-          if (_logger.isDebugEnabled()) {
+            logPropertyInjection(property, unitName, isPersistenceUnit);
+            bean.addProperty(property, emfRef);
+        } else {
+            logIndexInjection(index, unitName, isPersistenceUnit);
+            String className = isPersistenceUnit ? 
EntityManagerFactory.class.getName() : EntityManager.class.getName();
+            bean.addArgument(emfRef, className, index);
+        }
+        
+        // If this is a persistence context then register it with the manager
+        if (TAG_CONTEXT.equals(element.getLocalName())) {
+            Bundle client = getBlueprintBundle(context);
+
+            if (client != null) {
+                HashMap<String, Object> properties = new HashMap<String, 
Object>();
+                // Remember to add the PersistenceContextType so that we can 
create
+                // the correct type of
+                // EntityManager    
+                
properties.put(PersistenceContextProvider.PERSISTENCE_CONTEXT_TYPE, 
parseType(element));
+                properties.putAll(parseJPAProperties(element, context));
+                String clientInfo = client.getSymbolicName() + '/' + 
client.getVersion();
+                if (contextsAvailable.get()) {
+                    manager.registerContext(unitName, client, properties);
+                } else {
+                    
_logger.warn(MESSAGES.getMessage("no.persistence.context.provider", clientInfo, 
unitName, properties));
+                }
+                Synchronization sync = getSyncService(unitName, client);
+                if (sync != null) {
+                    
context.getComponentDefinitionRegistry().registerInterceptorWithComponent(component,
 createSyncInterceptor(sync));
+                } else {
+                    
_logger.error(MESSAGES.getMessage("no.synchronization.registered", clientInfo, 
unitName, properties));
+                }
+            } else {
+                _logger.debug("No bundle: this must be a dry, parse only 
run.");
+            }
+        }
+
+        return bean;
+    }
+
+    private int parseIndex(String indexSt) {
+        if (indexSt == null || indexSt.isEmpty()) {
+            return -1;
+        } else {
+            try {
+                return Integer.parseInt(indexSt);
+            } catch (NumberFormatException nfe) {
+                throw new 
IllegalArgumentException(MESSAGES.getMessage("index.not.a.number", indexSt), 
nfe);
+            }
+        }
+    }
+
+    private void logPropertyInjection(String property, String unitName, 
boolean isPersistenceUnit) {
+        if (_logger.isDebugEnabled()) {
               if (isPersistenceUnit)
                   _logger.debug("Creating blueprint injection metadata to 
inject the unit {} into bean property {}",
                                   new Object[] { unitName, property });
@@ -154,12 +190,10 @@ public class NSHandler implements Namesp
                   _logger.debug("Creating blueprint injection metadata to 
inject the context {} into bean property {}",
                                   new Object[] { unitName, property });
           }
+    }
 
-          bean.addProperty(property, createTargetMetadata(isPersistenceUnit, 
context, unitName));
-          
-        } else {
-          
-          if (_logger.isDebugEnabled()) {
+    private void logIndexInjection(Integer index, String unitName, boolean 
isPersistenceUnit) {
+        if (_logger.isDebugEnabled()) {
             if (isPersistenceUnit) {
                 if (index == null)
                     _logger.debug("Creating blueprint injection metadata to 
inject the unit {} as a constructor argument",
@@ -176,61 +210,6 @@ public class NSHandler implements Namesp
                         " with index {}", new Object[] { unitName, index });
             }
         }
-          
-          int i;
-          
-          if(index == null) {
-              i = -1;
-          } else {
-              try {
-                  i = Integer.parseInt(index);
-              } catch (NumberFormatException nfe) {
-                  throw new 
IllegalArgumentException(MESSAGES.getMessage("index.not.a.number", index), nfe);
-              }
-          }
-          
-          bean.addArgument(createTargetMetadata(isPersistenceUnit, context, 
unitName),
-              isPersistenceUnit ? EntityManagerFactory.class.getName() : 
EntityManager.class.getName(),
-              i);
-        }
-        
-        // If this is a persistence context then register it with the manager
-        if (TAG_CONTEXT.equals(element.getLocalName())) {
-            Bundle client = getBlueprintBundle(context);
-
-            if (client != null) {
-                HashMap<String, Object> properties = new HashMap<String, 
Object>();
-                // Remember to add the PersistenceContextType so that we can 
create
-                // the correct type of
-                // EntityManager    
-                
properties.put(PersistenceContextProvider.PERSISTENCE_CONTEXT_TYPE,
-                        parseType(element));
-                properties.putAll(parseJPAProperties(element, context));
-                if(contextsAvailable.get()) {
-                    manager.registerContext(unitName, client, properties);
-                } else {
-                    
_logger.warn(MESSAGES.getMessage("no.persistence.context.provider", 
client.getSymbolicName() + '/' + client.getVersion(), unitName, properties));
-                }
-                boolean foundSync = false;
-                try {
-                    Collection<ServiceReference<Synchronization>> refs = 
client.getBundleContext().getServiceReferences(Synchronization.class, "(" + 
PersistenceUnitConstants.OSGI_UNIT_NAME + "=" + unitName + ")");
-                    if (refs.size() > 0) {
-                        final Synchronization sync = 
client.getBundleContext().getService(refs.iterator().next());
-                        
context.getComponentDefinitionRegistry().registerInterceptorWithComponent(component,
 createSyncInterceptor(sync));
-                        foundSync = true;
-                    }
-                } catch (InvalidSyntaxException e) {
-                    // Ignore
-                }
-                if (!foundSync) {
-                    
_logger.error(MESSAGES.getMessage("no.synchronization.registered", 
client.getSymbolicName() + '/' + client.getVersion(), unitName, properties));
-                }
-            } else {
-                _logger.debug("No bundle: this must be a dry, parse only 
run.");
-            }
-        }
-
-        return bean;
     }
 
     private MutableBeanMetadata getValidBean(ComponentMetadata component, 
Element element) {
@@ -273,6 +252,19 @@ public class NSHandler implements Namesp
         return element;
     }
 
+    private Synchronization getSyncService(String unitName, Bundle client) {
+        try {
+            String filter = "(" + PersistenceUnitConstants.OSGI_UNIT_NAME + 
"=" + unitName + ")";
+            Collection<ServiceReference<Synchronization>> refs = 
client.getBundleContext().getServiceReferences(Synchronization.class, filter);
+            if (refs.size() > 0) {
+                return 
client.getBundleContext().getService(refs.iterator().next());
+            }
+        } catch (InvalidSyntaxException e) {
+            // Ignore
+        }
+        return null;
+    }
+
     private Interceptor createSyncInterceptor(final Synchronization sync) {
         return new Interceptor() {
             @Override
@@ -295,11 +287,13 @@ public class NSHandler implements Namesp
         };
     }
 
+    @Override
     public Set<Class> getManagedClasses() {
         // This is a no-op
         return null;
     }
 
+    @Override
     public URL getSchemaLocation(String namespace) {
         if(NS_URI_100.equals(namespace))
             return 
getClass().getResource("/org/apache/aries/jpa/blueprint/namespace/jpa.xsd");
@@ -309,6 +303,7 @@ public class NSHandler implements Namesp
             return null;
     }
 
+    @Override
     public Metadata parse(Element element, ParserContext context) {
         /*
          * The namespace does not define any top-level elements, so we should
@@ -338,85 +333,7 @@ public class NSHandler implements Namesp
         _logger.warn(MESSAGES.getMessage("jpa.support.gone"));
     }
     
-    @SuppressWarnings("unchecked")
-    private ComponentMetadata createTargetMetadata(boolean isPersistenceUnit,
-        ParserContext ctx, String unitName) {
-      // Create a service reference for the EMF (it is an EMF for persistence
-      // contexts and units)
-      final MutableReferenceMetadata refMetadata = 
ctx.createMetadata(MutableReferenceMetadata.class);
-      refMetadata.setActivation(ACTIVATION_EAGER.equalsIgnoreCase(ctx
-              .getDefaultActivation()) ? ReferenceMetadata.ACTIVATION_EAGER
-              : ReferenceMetadata.ACTIVATION_LAZY);
-      refMetadata.setAvailability(ReferenceMetadata.AVAILABILITY_MANDATORY);
-      refMetadata.setInterface(EntityManagerFactory.class.getName());
-
-      // Pick the right EMF by looking for the presence, or absence, of the
-      // PROXY_FACTORY service property
-      StringBuilder filter = new StringBuilder("(&");
-      // Persistence units do not have the property, persistence contexts do
-      if (isPersistenceUnit)
-          
filter.append("(!(").append(PersistenceContextProvider.PROXY_FACTORY_EMF_ATTRIBUTE)
-          .append("=*))");
-      else
-          
filter.append("(").append(PersistenceContextProvider.PROXY_FACTORY_EMF_ATTRIBUTE)
-                  .append("=true)");
-
-      // Add the empty name filter if necessary
-      if (!"".equals(unitName))
-          filter.append("(" + PersistenceUnitConstants.OSGI_UNIT_NAME + "="
-                  + unitName + ")");
-      else
-          filter.append(EMPTY_UNIT_NAME_FILTER);
-
-      filter.append(")");
-
-      refMetadata.setFilter(filter.toString());
-      refMetadata.setTimeout(Integer.parseInt(ctx.getDefaultTimeout()));
-      refMetadata.setDependsOn((List<String>) Collections.EMPTY_LIST);
-      refMetadata.setId(ctx.generateId());
-
-      // Finally, if this is a persistence context we need to create the
-      // entity manager as the Target
-      ComponentMetadata target = isPersistenceUnit ? refMetadata
-              : createInjectionBeanMetedata(ctx, refMetadata);
-      return target;
-    }
-
-    /**
-     * This method turns a persistence context factory into an
-     * {@link EntityManager} using blueprint factories
-     * 
-     * @param ctx
-     *            the {@link ParserContext}
-     * @param factory
-     *            the reference bean for the persistence context factory
-     * @return
-     */
-    private ComponentMetadata createInjectionBeanMetedata(ParserContext ctx,
-        MutableReferenceMetadata factory) {
-
-        if (_logger.isDebugEnabled())
-            _logger.debug("Creating a managed persistence context definition 
for injection");
-
-        //We want the EntityManager objects created from this factory to be 
damped too
-        
-        factory.setProxyChildBeanClasses(IFACES);
-        
-        // Register the factory bean, and then create an entitymanager from it
-        ctx.getComponentDefinitionRegistry().registerComponentDefinition(
-                factory);
-
-        MutableBeanMetadata meta = 
ctx.createMetadata(MutableBeanMetadata.class);
-        MutableRefMetadata ref = ctx.createMetadata(MutableRefMetadata.class);
-        ref.setComponentId(factory.getId());
-        meta.setFactoryComponent(ref);
-        meta.setActivation(factory.getActivation());
-        meta.setFactoryMethod("createEntityManager");
-        meta.setScope(BeanMetadata.SCOPE_PROTOTYPE);
-        meta.setDestroyMethod("internalClose");
-
-        return meta;
-    }
+    
 
     /**
      * Get hold of the blueprint bundle using the built in components

Modified: 
aries/trunk/jpa/jpa-blueprint-aries/src/main/resources/OSGI-INF/blueprint/jpa.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/src/main/resources/OSGI-INF/blueprint/jpa.xml?rev=1657778&r1=1657777&r2=1657778&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint-aries/src/main/resources/OSGI-INF/blueprint/jpa.xml
 (original)
+++ 
aries/trunk/jpa/jpa-blueprint-aries/src/main/resources/OSGI-INF/blueprint/jpa.xml
 Fri Feb  6 10:48:30 2015
@@ -38,7 +38,7 @@
   
   <reference id="persistenceContextProvider" availability="optional"
        
interface="org.apache.aries.jpa.container.context.PersistenceContextProvider">
-  <reference-listener ref="namespaceHandler" bind-method="contextAvailable"
+    <reference-listener ref="namespaceHandler" bind-method="contextAvailable"
             unbind-method="contextUnavailable"/>
   </reference>
 </blueprint>
\ No newline at end of file

Modified: 
aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java?rev=1657778&r1=1657777&r2=1657778&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
 (original)
+++ 
aries/trunk/jpa/jpa-blueprint-aries/src/test/java/org/apache/aries/jpa/blueprint/aries/test/NSHandlerTest.java
 Fri Feb  6 10:48:30 2015
@@ -44,6 +44,7 @@ import org.apache.aries.blueprint.reflec
 import org.apache.aries.blueprint.reflect.RefMetadataImpl;
 import org.apache.aries.blueprint.reflect.ReferenceMetadataImpl;
 import org.apache.aries.jpa.blueprint.aries.impl.NSHandler;
+import org.apache.aries.jpa.container.PersistenceUnitConstants;
 import org.apache.aries.jpa.container.context.PersistenceContextProvider;
 import org.apache.aries.unittest.mocks.MethodCall;
 import org.apache.aries.unittest.mocks.Skeleton;
@@ -63,6 +64,9 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
 public class NSHandlerTest {
+  private static final String EMPTY_UNIT_NAME_FILTER = "("
+          + PersistenceUnitConstants.EMPTY_PERSISTENCE_UNIT_NAME + "=true)";
+
   private Element root;
   private Element root_110;
   private NSHandler sut;
@@ -105,10 +109,12 @@ public class NSHandlerTest {
   }
   
   private static class ParserContextMock {
+    @SuppressWarnings("unused")
     public<T> T parseElement(Class<T> type, ComponentMetadata 
enclosingComponent, Element element) {
       return new Parser().parseElement(type, enclosingComponent, element);
     }
     
+    @SuppressWarnings("unused")
     public<T extends Metadata> T createMetadata(Class<T> clazz) {
       if (ReferenceMetadata.class.isAssignableFrom(clazz))
         return clazz.cast(new ReferenceMetadataImpl());
@@ -120,6 +126,7 @@ public class NSHandlerTest {
   }
   
   private class ComponentDefinitionRegistryMock {
+    @SuppressWarnings("unused")
     public ComponentMetadata getComponentDefinition(String id) {
       PassThroughMetadata bundleMeta =  
Skeleton.newMock(PassThroughMetadata.class);
       Skeleton.getSkeleton(bundleMeta).setReturnValue(
@@ -127,6 +134,7 @@ public class NSHandlerTest {
       return bundleMeta;
     }
     
+    @SuppressWarnings("unused")
     public void registerComponentDefinition(ComponentMetadata component) {
       registeredComponents.add(component);
     }
@@ -175,7 +183,7 @@ public class NSHandlerTest {
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
     assertEquals("emf2", property.getName());
-    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
 
+    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+EMPTY_UNIT_NAME_FILTER+")",
 
         reference.getFilter());
 
     assertTrue(registeredComponents.isEmpty());
@@ -190,7 +198,7 @@ public class NSHandlerTest {
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
     assertEquals("emf2", property.getName());
-    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
 
+    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+EMPTY_UNIT_NAME_FILTER+")",
 
         reference.getFilter());
 
     assertTrue(registeredComponents.isEmpty());
@@ -205,7 +213,7 @@ public class NSHandlerTest {
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
     assertEquals("emf3", property.getName());
-    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
+    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+EMPTY_UNIT_NAME_FILTER+")",
         reference.getFilter());
     
     assertTrue(registeredComponents.isEmpty());
@@ -220,7 +228,7 @@ public class NSHandlerTest {
     ReferenceMetadata reference = (ReferenceMetadata) property.getValue();
     
     assertEquals("emf3", property.getName());
-    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
+    
assertEquals("(&(!(org.apache.aries.jpa.proxy.factory=*))"+EMPTY_UNIT_NAME_FILTER+")",
         reference.getFilter());
     
     assertTrue(registeredComponents.isEmpty());
@@ -356,7 +364,7 @@ private void assertInnerBeanCorrect(Bean
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
     
     assertEquals(EntityManagerFactory.class.getName(), 
reference.getInterface());
-    
assertEquals("(&(org.apache.aries.jpa.proxy.factory=true)"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
 
+    
assertEquals("(&(org.apache.aries.jpa.proxy.factory=true)"+EMPTY_UNIT_NAME_FILTER+")",
 
         reference.getFilter());
     
     Map<String,Object> props = new HashMap<String, Object>();
@@ -380,7 +388,7 @@ private void assertInnerBeanCorrect(Bean
     ReferenceMetadata reference = (ReferenceMetadata) 
registeredComponents.get(0);
     
     assertEquals(EntityManagerFactory.class.getName(), 
reference.getInterface());
-    
assertEquals("(&(org.apache.aries.jpa.proxy.factory=true)"+NSHandler.EMPTY_UNIT_NAME_FILTER+")",
 
+    
assertEquals("(&(org.apache.aries.jpa.proxy.factory=true)"+EMPTY_UNIT_NAME_FILTER+")",
 
         reference.getFilter());
     
     Map<String,Object> props = new HashMap<String, Object>();
@@ -411,7 +419,7 @@ private void assertInnerBeanCorrect(Bean
   public void testNonIndexedArgs_110() {
       Element e = getTestElement("withUnitArg", root_110);
       BeanMetadata input = new BeanMetadataImpl();
-      Object output = sut.decorate(e, input, parserCtx);
+      sut.decorate(e, input, parserCtx);
       assertEquals("Wrong number of arguments",
           1 ,input.getArguments().size());
       assertEquals("Wrong class type", 
"javax.persistence.EntityManagerFactory",
@@ -428,7 +436,7 @@ private void assertInnerBeanCorrect(Bean
       
       e = getTestElement("withContextArg", root_110);
       input = new BeanMetadataImpl();
-      output = sut.decorate(e, input, parserCtx);
+      sut.decorate(e, input, parserCtx);
       
       assertEquals("Wrong number of arguments",
           1 ,input.getArguments().size());
@@ -462,7 +470,7 @@ private void assertConstructorInnerBean(
   public void testIndexedArgs_110() {
       Element e = getTestElement("withIndexedUnitArg", root_110);
       BeanMetadata input = new BeanMetadataImpl();
-      Object output = sut.decorate(e, input, parserCtx);
+      sut.decorate(e, input, parserCtx);
       assertEquals("Wrong number of arguments",
           1 ,input.getArguments().size());
       assertEquals("Wrong class type", 
"javax.persistence.EntityManagerFactory",
@@ -479,7 +487,7 @@ private void assertConstructorInnerBean(
       
       e = getTestElement("withIndexedContextArg", root_110);
       input = new BeanMetadataImpl();
-      output = sut.decorate(e, input, parserCtx);
+      sut.decorate(e, input, parserCtx);
       
       assertEquals("Wrong number of arguments",
           1 ,input.getArguments().size());
@@ -507,7 +515,7 @@ private void assertConstructorInnerBean(
       Element e = getTestElement("withInvalidIndexArg", root_110);
       BeanMetadata input = new BeanMetadataImpl();
       try {
-          Object output = sut.decorate(e, input, parserCtx);
+          sut.decorate(e, input, parserCtx);
           fail("Should throw an exception");
       } catch (IllegalArgumentException iae) {
           assertTrue("Wrong cause type", iae.getCause() instanceof 
NumberFormatException);


Reply via email to