You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2010/01/07 08:44:08 UTC

svn commit: r896771 - in /incubator/aries/trunk/jpa/jpa-container/src: main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java

Author: timothyjward
Date: Thu Jan  7 07:44:06 2010
New Revision: 896771

URL: http://svn.apache.org/viewvc?rev=896771&view=rev
Log:
ARIES-80: Create a parser for persistence descriptors

Modified:
    incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java
    incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java

Modified: incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java?rev=896771&r1=896770&r2=896771&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/parsing/PersistenceDescriptorParser.java Thu Jan  7 07:44:06 2010
@@ -55,52 +55,49 @@
    * @param args
    * @throws PersistenceDescriptorParserException 
    */
-  public static Collection<ParsedPersistenceUnit> parse(Bundle b, Collection<PersistenceDescriptor> descriptors) throws PersistenceDescriptorParserException {
+  public static Collection<ParsedPersistenceUnit> parse(Bundle b, PersistenceDescriptor descriptor) throws PersistenceDescriptorParserException {
     Collection<ParsedPersistenceUnit> persistenceUnits = new ArrayList<ParsedPersistenceUnit>();
     //Parse each xml file in turn
-    for(PersistenceDescriptor descriptor : descriptors) {
-      SAXParserFactory parserFactory = SAXParserFactory.newInstance();
-      BufferedInputStream is = null;
-      try {
-        //Buffer the InputStream so we can mark it
-        is = new BufferedInputStream(descriptor.getInputStream(), 8192);
-        is.mark(8192);
-        SAXParser parser = parserFactory.newSAXParser();
-        try{
-          parser.parse(new UnclosableInputStream(is), new SchemaLocatingHandler());
-        } catch (EarlyParserReturn epr) {
-          //This is not really an exception, but a way to work out which
-          //version of the persistence schema to use in validation
-          Schema s = epr.getSchema();
+    SAXParserFactory parserFactory = SAXParserFactory.newInstance();
+    BufferedInputStream is = null;
+    try {
+      //Buffer the InputStream so we can mark it
+      is = new BufferedInputStream(descriptor.getInputStream(), 8192);
+      is.mark(8192);
+      SAXParser parser = parserFactory.newSAXParser();
+      try{
+        parser.parse(new UnclosableInputStream(is), new SchemaLocatingHandler());
+      } catch (EarlyParserReturn epr) {
+        //This is not really an exception, but a way to work out which
+        //version of the persistence schema to use in validation
+        Schema s = epr.getSchema();
+        
+        if(s != null) {
+          parserFactory.setSchema(s);
+          parserFactory.setNamespaceAware(true);
+          parser = parserFactory.newSAXParser();
+         
+          //Get back to the beginning of the stream
+          is.reset();
           
-          if(s != null) {
-            parserFactory.setSchema(s);
-            parserFactory.setNamespaceAware(true);
-            parser = parserFactory.newSAXParser();
-           
-            //Get back to the beginning of the stream
-            is.reset();
-            
-            JPAHandler handler = new JPAHandler(b, epr.getVersion());
-            parser.parse(is, handler);
-            persistenceUnits.addAll(handler.getPersistenceUnits());
-          } else {
-            //TODO Should we try without validation?
-          }
-            
+          JPAHandler handler = new JPAHandler(b, epr.getVersion());
+          parser.parse(is, handler);
+          persistenceUnits.addAll(handler.getPersistenceUnits());
+        } else {
+          //TODO Should we try without validation?
         }
-      } catch (Exception e) {
-        //TODO Log this error in parsing
-        System.out.println("Error parsing " + descriptor.getLocation() + " in bundle " + b.getSymbolicName() + "_" + b.getVersion());
+      }
+    } catch (Exception e) {
+      //TODO Log this error in parsing
+      System.out.println("Error parsing " + descriptor.getLocation() + " in bundle " + b.getSymbolicName() + "_" + b.getVersion());
+      e.printStackTrace();
+      throw new PersistenceDescriptorParserException(e);
+    } finally {
+      if(is != null) try {
+        is.close();
+      } catch (IOException e) {
+        //TODO Log this
         e.printStackTrace();
-        throw new PersistenceDescriptorParserException(e);
-      } finally {
-        if(is != null) try {
-          is.close();
-        } catch (IOException e) {
-          //TODO Log this
-          e.printStackTrace();
-        }
       }
     }
     return persistenceUnits;

Modified: incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java?rev=896771&r1=896770&r2=896771&view=diff
==============================================================================
--- incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java (original)
+++ incubator/aries/trunk/jpa/jpa-container/src/test/java/org/apache/aries/jpa/container/parsing/PersistenceXMLParsingTest.java Thu Jan  7 07:44:06 2010
@@ -56,12 +56,9 @@
       is = new FileInputStream(location);
       PersistenceDescriptor descriptor = new PersistenceDescriptor(location, is);
       
-      Collection<PersistenceDescriptor> descriptors = new ArrayList<PersistenceDescriptor>();
-      descriptors.add(descriptor);
-      
       Bundle b = Skeleton.newMock(Bundle.class);
       
-      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptors);
+      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptor);
       assertEquals("An incorrect number of persistence units has been returned.", 4, parsedUnits.size());
       
       List<ParsedPersistenceUnit> units = getList(parsedUnits);
@@ -208,13 +205,10 @@
       String location = "src/test/resources/file2/META-INF/persistence.xml";
       is = new FileInputStream(location);
       PersistenceDescriptor descriptor = new PersistenceDescriptor(location, is);
-      
-      Collection<PersistenceDescriptor> descriptors = new ArrayList<PersistenceDescriptor>();
-      descriptors.add(descriptor);
-      
+
       Bundle b = Skeleton.newMock(Bundle.class);
       
-      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptors);
+      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptor);
       assertEquals("An incorrect number of persistence units has been returned.", 0, parsedUnits.size());
     } finally {
       if(is != null)
@@ -232,12 +226,9 @@
       is = new FileInputStream(location);
       PersistenceDescriptor descriptor = new PersistenceDescriptor(location, is);
       
-      Collection<PersistenceDescriptor> descriptors = new ArrayList<PersistenceDescriptor>();
-      descriptors.add(descriptor);
-      
       Bundle b = Skeleton.newMock(Bundle.class);
       
-      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptors);
+      Collection<ParsedPersistenceUnit> parsedUnits = PersistenceDescriptorParser.parse(b, descriptor);
 
       fail("Parsing should not succeed");
     } finally {