You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/12/17 19:23:08 UTC

svn commit: r1551647 - /jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java

Author: andy
Date: Tue Dec 17 18:23:07 2013
New Revision: 1551647

URL: http://svn.apache.org/r1551647
Log:
JENA-328 : Armour the file access code against SecurityExceptions.

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java?rev=1551647&r1=1551646&r2=1551647&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/NodeValue.java Tue Dec 17 18:23:07 2013
@@ -18,44 +18,9 @@
 
 package com.hp.hpl.jena.sparql.expr;
 
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSD ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDboolean ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDdate ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDdateTime ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDdecimal ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDdouble ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDduration ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDfloat ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDgDay ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDgMonth ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDgMonthDay ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDgYear ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDgYearMonth ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDinteger ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDstring ;
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDtime ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_BOOLEAN ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_DATE ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_DATETIME ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_DIFFERENT ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_DURATION ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_G_DAY ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_G_MONTH ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_G_MONTHDAY ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_G_YEAR ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_G_YEARMONTH ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_LANG ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_NODE ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_NUM ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_STRING ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_TIME ;
-import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.VSPACE_UNKNOWN ;
-import static javax.xml.datatype.DatatypeConstants.DAYS ;
-import static javax.xml.datatype.DatatypeConstants.HOURS ;
-import static javax.xml.datatype.DatatypeConstants.MINUTES ;
-import static javax.xml.datatype.DatatypeConstants.MONTHS ;
-import static javax.xml.datatype.DatatypeConstants.SECONDS ;
-import static javax.xml.datatype.DatatypeConstants.YEARS ;
+import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.* ;
+import static com.hp.hpl.jena.sparql.expr.ValueSpaceClassification.* ;
+import static javax.xml.datatype.DatatypeConstants.* ;
 
 import java.io.File ;
 import java.io.FileInputStream ;
@@ -207,26 +172,32 @@ public abstract class NodeValue extends 
         // Step 1. Try the system property
         String dtfClass = System.getProperty(DatatypeFactory.DATATYPEFACTORY_PROPERTY);
         
-        // Step 2. Otherwise, try property in jaxp.properties
-        if (dtfClass == null && jaxpPropFile.exists() && jaxpPropFile.canRead()) {
-            Properties jaxp = new Properties();
-            InputStream in = null;
-            try {
-                in = new FileInputStream(jaxpPropFile);
-                jaxp.load(in);
-                dtfClass = jaxp.getProperty(DatatypeFactory.DATATYPEFACTORY_PROPERTY);
-            } catch (Exception e) {
-                log.warn("Issue loading jaxp.properties", e);
-            } finally {
-                if (in != null) {
-                    try {
-                        in.close();
-                    } catch (IOException ex) {
-                        log.warn("Issue closing jaxp.properties ", ex);
+        try {
+            // Step 2. Otherwise, try property in jaxp.properties
+            if (dtfClass == null && jaxpPropFile.exists() && jaxpPropFile.canRead()) {
+                Properties jaxp = new Properties();
+                InputStream in = null;
+                try {
+                    in = new FileInputStream(jaxpPropFile);
+                    jaxp.load(in);
+                    dtfClass = jaxp.getProperty(DatatypeFactory.DATATYPEFACTORY_PROPERTY);
+                } catch (Exception e) {
+                    log.warn("Issue loading jaxp.properties", e);
+                } finally {
+                    if (in != null) {
+                        try {
+                            in.close();
+                        } catch (IOException ex) {
+                            log.warn("Issue closing jaxp.properties ", ex);
+                        }
                     }
                 }
             }
         }
+        // File.exists and File.canRead may throw  SecurityException (probably AccessControlException)
+        catch (SecurityException ex) {
+            log.warn("Security exception try to get jaxp.properties: "+ex.getMessage()) ;
+        }
         
         // Step 3. Otherwise try the service approach
         if (dtfClass == null) {