001: /*
002: * (c) Copyright 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
003: * All rights reserved.
004: * [See end of file]
005: */
006:
007: package com.hp.hpl.jena;
008:
009: import java.util.*;
010: import java.security.AccessController;
011: import java.security.PrivilegedAction;
012:
013: /** Methods and constants that define features of the curren the environment.
014: * Primarily for other parts of the Jena framework.
015: *
016: * @author Andy Seaborne
017: * @version $Id: JenaRuntime.java,v 1.11 2008/01/02 12:11:22 andy_seaborne Exp $
018: */
019:
020: public class JenaRuntime {
021: /** The JVM does not implement java.security (correctly) */
022: public static final String featureNoSecurity = "http://jena.hpl.hp.com/2004/07/feature/noSecurity";
023:
024: /** The JVM does not implement java.nio.charset.Charset operations (correctly) */
025: public static final String featureNoCharset = "http://jena.hpl.hp.com/2004/07/feature/noCharset";
026:
027: static Map features = new HashMap();
028: static {
029: // Note getSystemProperty uses featureNoSecurity but works if it
030: // has not been initialized
031: if (getSystemProperty(featureNoSecurity) != null)
032: setFeature(featureNoSecurity);
033:
034: if (getSystemProperty(featureNoCharset) != null)
035: setFeature(featureNoCharset);
036: }
037:
038: public static void setFeature(String featureName) {
039: features.put(featureName, "true");
040: }
041:
042: public static boolean runUnder(String featureName) {
043: return features.containsKey(featureName);
044: }
045:
046: public static boolean runNotUnder(String featureName) {
047: return !features.containsKey(featureName);
048: }
049:
050: static final String lineSeparator = getSystemProperty(
051: "line.separator", "\n");
052:
053: public static String getLineSeparator() {
054: return lineSeparator;
055: }
056:
057: public static String getSystemProperty(String propName) {
058: return getSystemProperty(propName, null);
059: }
060:
061: public static String getSystemProperty(final String propName,
062: String defaultValue) {
063: try {
064: return System.getProperty(propName, defaultValue);
065: } catch (SecurityException ex) {
066: if (runUnder(featureNoSecurity))
067: return defaultValue;
068: try {
069: PrivilegedAction a = new PrivilegedAction() {
070: public Object run() {
071: return System.getProperty(propName);
072: }
073: };
074: return (String) AccessController.doPrivileged(a);
075: } catch (Exception ex2) {
076: // Give up
077: return defaultValue;
078: }
079: }
080: }
081: }
082:
083: /*
084: * (c) Copyright 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
085: * All rights reserved.
086: *
087: * Redistribution and use in source and binary forms, with or without
088: * modification, are permitted provided that the following conditions
089: * are met:
090: * 1. Redistributions of source code must retain the above copyright
091: * notice, this list of conditions and the following disclaimer.
092: * 2. Redistributions in binary form must reproduce the above copyright
093: * notice, this list of conditions and the following disclaimer in the
094: * documentation and/or other materials provided with the distribution.
095: * 3. The name of the author may not be used to endorse or promote products
096: * derived from this software without specific prior written permission.
097: *
098: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
099: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
100: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
101: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
102: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
103: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
104: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
105: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
106: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
107: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
108: */
|