Author: ivol37 at gmail.com
Date: Mon Jan 24 10:36:27 2011
New Revision: 690

Log:
[AMDATU-275] Fixed warnings by explicitly closing repository models after 
retrieving them

Modified:
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
   
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
   
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
   
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
   
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
 (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseOntologyDataProvider.java
 Mon Jan 24 10:36:27 2011
@@ -103,8 +103,13 @@
                         + "'");
                 }
 
-                ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfsUrl), 
Syntax.RdfXml, m_modelSet.getDefaultModel());
-                ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfUrl), 
Syntax.RdfXml, m_modelSet.getDefaultModel());
+                Model model = m_modelSet.getDefaultModel();
+                try {
+                    ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfsUrl), 
Syntax.RdfXml, model);
+                    ModelUtils.loadFromFile(ConversionUtil.urlToFile(rdfUrl), 
Syntax.RdfXml, model);
+                } finally {
+                    model.close();
+                }
 
                 // Build the rest of the test data
                 buildCourses();
@@ -122,11 +127,11 @@
 
     // Build the course triples. Most courses are available for all educations 
and grades
     private void buildCourses() {
+        Model model = m_modelSet.getDefaultModel();
         try {
             // Determine base URL for all ontologies
             String baseUrl = m_courseService.getOntologyBaseUrl();
 
-            Model model = m_modelSet.getDefaultModel();
             URI courseType = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_COURSE_URI);
             URI gradeProp = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_GRADE_PROP_URI);
             URI educationProp = model.createURI(baseUrl + 
EDUCA_ONTOLOGY_EDUCATION_PROP_URI);
@@ -175,6 +180,8 @@
             }
         } catch (IOException e) {
             m_logService.log(LogService.LOG_ERROR, "Failed to store Courses in 
RDF database", e);
+        } finally {
+            model.close();
         }
     }
 
@@ -188,32 +195,40 @@
         String baseUrl = m_courseService.getOntologyBaseUrl();
         String queryString = "SELECT ?subject WHERE { ?subject a <" + baseUrl 
+ EDUCA_ONTOLOGY_PERSON_URI + ">}";
         Model model = m_modelSet.getDefaultModel();
-        QueryResultTable result = model.sparqlSelect(queryString);
-        ClosableIterator<QueryRow> iterator = result.iterator();
         try {
-            if (iterator.hasNext()) {
-                return Boolean.TRUE;
+            QueryResultTable result = model.sparqlSelect(queryString);
+            ClosableIterator<QueryRow> iterator = result.iterator();
+            try {
+                if (iterator.hasNext()) {
+                    return Boolean.TRUE;
+                }
+            } finally {
+                iterator.close();
             }
         } finally {
-            iterator.close();
+            model.close();
         }
         return Boolean.FALSE;
     }
 
     private List<String> getSubjects(String subjectUri) {
         Model model = m_modelSet.getDefaultModel();
-        URI uri = model.createURI(subjectUri);
-        String query = "SELECT ?subject WHERE { ?subject a <" + uri + ">}";
-        QueryResultTable result = model.sparqlSelect(query);
-        ClosableIterator<QueryRow> iterator = result.iterator();
         ArrayList<String> subjects = new ArrayList<String>();
         try {
-            while (iterator.hasNext()) {
-                QueryRow bs = iterator.next();
-                subjects.add(bs.getValue("subject").toString());
+            URI uri = model.createURI(subjectUri);
+            String query = "SELECT ?subject WHERE { ?subject a <" + uri + ">}";
+            QueryResultTable result = model.sparqlSelect(query);
+            ClosableIterator<QueryRow> iterator = result.iterator();
+            try {
+                while (iterator.hasNext()) {
+                    QueryRow bs = iterator.next();
+                    subjects.add(bs.getValue("subject").toString());
+                }
+            } finally {
+                iterator.close();
             }
         } finally {
-            iterator.close();
+            model.close();
         }
         return subjects;
     }

Modified: 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
==============================================================================
--- 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
  (original)
+++ 
trunk/amdatu-example/course-service/src/main/java/org/amdatu/example/course/service/service/CourseServiceImpl.java
  Mon Jan 24 10:36:27 2011
@@ -70,21 +70,25 @@
 
         ArrayList<Course> courses = new ArrayList<Course>();
         Model model = m_modelSet.getDefaultModel();
-        QueryResultTable result = model.sparqlSelect(sparqlQuery);
-        ClosableIterator<QueryRow> iterator = result.iterator();
         try {
-            while (iterator.hasNext()) {
-                QueryRow queryRow = iterator.next();
-                String course = queryRow.getLiteralValue("coursename");
-                String grade = queryRow.getLiteralValue("gradename");
-                String education = queryRow.getLiteralValue("educationname");
-                Course c = new Course(course);
-                c.setGrade(grade);
-                c.setEducation(education);
-                courses.add(c);
+            QueryResultTable result = model.sparqlSelect(sparqlQuery);
+            ClosableIterator<QueryRow> iterator = result.iterator();
+            try {
+                while (iterator.hasNext()) {
+                    QueryRow queryRow = iterator.next();
+                    String course = queryRow.getLiteralValue("coursename");
+                    String grade = queryRow.getLiteralValue("gradename");
+                    String education = 
queryRow.getLiteralValue("educationname");
+                    Course c = new Course(course);
+                    c.setGrade(grade);
+                    c.setEducation(education);
+                    courses.add(c);
+                }
+            } finally {
+                iterator.close();
             }
         } finally {
-            iterator.close();
+            model.close();
         }
         return courses;
     }

Modified: 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
      (original)
+++ 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/SesameService.java
      Mon Jan 24 10:36:27 2011
@@ -26,7 +26,7 @@
  * two query languages for searching through the RDF documents in a Sesame 
database: SeRQL and SPARQL.
  * This interface is deprecated, use the RDF2GO API instead. All methods 
however are still fully functioning, but
  * they will be removed in subsequent releases.
- * 
+ *
  * @author ivol
  */
 @Deprecated
@@ -35,7 +35,7 @@
      * Returns the Sesame repository that stores the RDF documents.
      * This method has been deprecated, use the RDF2GO API instead. To 
retrieve a ModelSet published by
      * the any RDF implementation define a service dependency on ModelSet 
instead.
-     * 
+     *
      * @return the Sesame repository that stores the RDF documents.
      */
     @Deprecated
@@ -46,7 +46,7 @@
      * This method has been deprecated, use the RDF2GO API instead. To import 
a RDF file use:
      * ModelUtils.loadFromFile(ConversionUtil.urlToFile(url), Syntax.RdfXml, 
m_modelSet.getDefaultModel());
      * NB: ConversionUtil is a utility class in the utilities bundle of the 
amdatu-libraries module.
-     * 
+     *
      * @param rdfFile The URL to the file to import.
      */
     @Deprecated
@@ -59,6 +59,7 @@
      * <pre>
      * ModelSet modelSet = m_sesameService.getModelSet();
      * Model model = modelSet.getDefaultModel();
+     * try {
      * QueryResultTable result = model.sparqlSelect("select ?subject");
      * try {
      * while (iterator.hasNext()) {
@@ -67,8 +68,12 @@
      * }
      * } finally {
      * iterator.close();
-     * } </pre>
-     * 
+     * }
+     * } finally {
+        * model.close();
+        * }
+        * </pre>
+     *
      * @param query
      * @param handler
      */
@@ -78,7 +83,7 @@
     /**
      * Retrieve a list of subject URI's that are instances of the specified 
class.
      * This method has been deprecated, use the RDF2GO API instead.
-     * 
+     *
      * @param classURI The URI of the class of which the subjects must be 
instances
      * @return List of resource URI's of the selected subjects
      */

Modified: 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
  (original)
+++ 
trunk/amdatu-semanticweb/sesame/src/main/java/org/amdatu/semanticweb/sesame/service/SesameServiceImpl.java
  Mon Jan 24 10:36:27 2011
@@ -168,17 +168,21 @@
         ValueFactory factory = m_repository.getValueFactory();
         URI uri = factory.createURI(subjectUri);
         String query = "SELECT ?subject WHERE { ?subject a <" + uri + ">}";
-        Model model = m_rdf2goModelSet.getDefaultModel();
-        QueryResultTable result = model.sparqlSelect(query);
-        ClosableIterator<QueryRow> iterator = result.iterator();
         ArrayList<String> subjects = new ArrayList<String>();
+        Model model = m_rdf2goModelSet.getDefaultModel();
         try {
-            while (iterator.hasNext()) {
-                QueryRow bs = iterator.next();
-                subjects.add(bs.getValue("subject").toString());
+            QueryResultTable result = model.sparqlSelect(query);
+            ClosableIterator<QueryRow> iterator = result.iterator();
+            try {
+                while (iterator.hasNext()) {
+                    QueryRow bs = iterator.next();
+                    subjects.add(bs.getValue("subject").toString());
+                }
+            } finally {
+                iterator.close();
             }
         } finally {
-            iterator.close();
+            model.close();
         }
         return subjects;
     }

Modified: 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
==============================================================================
--- 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  (original)
+++ 
trunk/amdatu-semanticweb/sparqlendpoint/src/main/java/org/amdatu/semanticweb/sparqlendpoint/service/SPARQLEndpointServiceImpl.java
  Mon Jan 24 10:36:27 2011
@@ -121,9 +121,9 @@
         @DefaultValue("1") @QueryParam("startIndex") final int startIndex,
         @DefaultValue("0") @QueryParam("endIndex") final int endIndexParam) {
         JSONObject jsonObject = new JSONObject();
+        Model model = m_modelSet.getDefaultModel();
         try {
             m_logService.log(LogService.LOG_DEBUG, "Executing SPARQL query: " 
+ query);
-            Model model = m_modelSet.getDefaultModel();
             QueryResultTable result = model.sparqlSelect(query);
             List<String> names = result.getVariables();
             ClosableIterator<QueryRow> iterator = result.iterator();
@@ -161,10 +161,11 @@
             jsonObject.put("lastStartIndex", (resultRow - 1) - ((resultRow - 
1) % MAX_ROW_COUNT));
             jsonObject.put("batchSize", MAX_ROW_COUNT);
             jsonObject.put("resultCount", resultRow - 1);
-        }
-        catch (JSONException e) {
+        } catch (JSONException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not execute SPARQL 
query '" + query + "'", e);
             throw new WebApplicationException(e);
+        } finally {
+            model.close();
         }
         return Response.ok(jsonObject.toString(), 
MediaType.APPLICATION_JSON_TYPE).cacheControl(m_cacheControl).build();
     }

Reply via email to