hillion 02/05/07 00:17:11 Modified: sources/org/apache/batik/dom/events AbstractEvent.java sources/org/apache/batik/util ApplicationSecurityEnforcer.java Log: - Fixed a small bug with events, - removed debug traces. Revision Changes Path 1.3 +3 -3 xml-batik/sources/org/apache/batik/dom/events/AbstractEvent.java Index: AbstractEvent.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/events/AbstractEvent.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractEvent.java 23 Oct 2000 09:44:44 -0000 1.2 +++ AbstractEvent.java 7 May 2002 07:17:11 -0000 1.3 @@ -16,7 +16,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: AbstractEvent.java,v 1.2 2000/10/23 09:44:44 hillion Exp $ + * @version $Id: AbstractEvent.java,v 1.3 2002/05/07 07:17:11 hillion Exp $ */ public abstract class AbstractEvent implements Event { /** @@ -156,7 +156,7 @@ * of event flow. */ public void preventDefault() { - this.preventDefault = true; + this.preventDefault = false; } /** @@ -203,7 +203,7 @@ } void preventDefault(boolean state) { - this.preventDefault = state; + this.preventDefault = !state; } void setCurrentTarget(EventTarget currentTarget) { 1.3 +256 -260 xml-batik/sources/org/apache/batik/util/ApplicationSecurityEnforcer.java Index: ApplicationSecurityEnforcer.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/ApplicationSecurityEnforcer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ApplicationSecurityEnforcer.java 3 May 2002 07:41:46 -0000 1.2 +++ ApplicationSecurityEnforcer.java 7 May 2002 07:17:11 -0000 1.3 @@ -1,260 +1,256 @@ -/***************************************************************************** - * Copyright (C) The Apache Software Foundation. All rights reserved. * - * ------------------------------------------------------------------------- * - * This software is published under the terms of the Apache Software License * - * version 1.1, a copy of which has been included with this distribution in * - * the LICENSE file. * - *****************************************************************************/ - -package org.apache.batik.util; - -import java.net.URL; - -import java.security.Policy; - -/** - * This is a helper class which helps applications enforce secure - * script execution. - * <br /> - * It is used by the Squiggle browser as well as the rasterizer. - * <br /> - * This class can install a <tt>SecurityManager</tt> for an application - * and resolves whether the application runs in a development - * environment or from a jar file (in other words, it resolves code-base - * issues for the application). - * <br /> - * - * @author <a mailto="[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: ApplicationSecurityEnforcer.java,v 1.2 2002/05/03 07:41:46 vhardy Exp $ - */ -public class ApplicationSecurityEnforcer { - /** - * Message for the SecurityException thrown when there is already - * a SecurityManager installed at the time Squiggle tries - * to install its own security settings. - */ - public static final String EXCEPTION_ALIEN_SECURITY_MANAGER - = "ApplicationSecurityEnforcer.message.security.exception.alien.security.manager"; - - /** - * Message for the NullPointerException thrown when no policy - * file can be found. - */ - public static final String EXCEPTION_NO_POLICY_FILE - = "ApplicationSecurityEnforcer.message.null.pointer.exception.no.policy.file"; - - /** - * System property for specifying an additional policy file. - */ - public static final String PROPERTY_JAVA_SECURITY_POLICY - = "java.security.policy"; - - /** - * Files in a jar file have a URL with the jar protocol - */ - public static final String JAR_PROTOCOL - = "jar:"; - - /** - * Used in jar file urls to separate the jar file name - * from the referenced file - */ - public static final String JAR_URL_FILE_SEPARATOR - = "!/"; - - /** - * System property for App's development base directory - */ - public static final String PROPERTY_APP_DEV_BASE - = "app.dev.base"; - - /** - * System property for App's jars base directory - */ - public static final String PROPERTY_APP_JAR_BASE - = "app.jar.base"; - - /** - * Directory where classes are expanded in the development - * version - */ - public static final String APP_MAIN_CLASS_DIR - = "classes/"; - - /** - * The application's main entry point - */ - protected Class appMainClass; - - /** - * The application's security policy - */ - protected String securityPolicy; - - /** - * The jar file into which the application is packaged - */ - protected String appJarFile; - - /** - * The resource name for the application's main class - */ - protected String appMainClassRelativeURL; - - /** - * Keeps track of the last SecurityManager installed - */ - protected SecurityManager lastSecurityManagerInstalled; - - /** - * @param appClass class of the applications's main entry point - * @param securityPolicy resource for the security policy which - * should be enforced for the application. - * @param appJarFile the Jar file into which the application is - * packaged. - */ - public ApplicationSecurityEnforcer(Class appMainClass, - String securityPolicy, - String appJarFile){ - this.appMainClass = appMainClass; - this.securityPolicy = securityPolicy; - this.appJarFile = appJarFile; - this.appMainClassRelativeURL = - appMainClass.getName().replace('.', '/') - + - ".class"; - - } - - /** - * Enforces security by installing a <tt>SecurityManager</tt>. - * This will throw a <tt>SecurityException</tt> if installing - * a <tt>SecurityManager</tt> requires overriding an existing - * <tt>SecurityManager</tt>. In other words, this method will - * not install a new <tt>SecurityManager</tt> if there is - * already one it did not install in place. - */ - public void enforceSecurity(boolean enforce){ - SecurityManager sm = System.getSecurityManager(); - if (sm != null && sm != lastSecurityManagerInstalled) { - // Throw a Security exception: we do not want to override - // an 'alien' SecurityManager with either null or - // a new SecurityManager. - throw new SecurityException - (Messages.getString(EXCEPTION_ALIEN_SECURITY_MANAGER)); - } - - if (enforce) { - // We want to install a SecurityManager. - if (sm == null) { - installSecurityManager(); - System.err.println("installed SecurityManager"); - } - } else { - if (sm != null) { - System.setSecurityManager(null); - lastSecurityManagerInstalled = null; - System.err.println("Removed SecurityManager"); - } - } - } - - /** - * Installs a SecurityManager on behalf of the application - */ - public void installSecurityManager(){ - Policy policy = Policy.getPolicy(); - SecurityManager securityManager = new SecurityManager(); - - // Specify app's security policy in the - // system property. - ClassLoader cl = appMainClass.getClassLoader(); - URL url = cl.getResource(securityPolicy); - - if (url == null) { - throw new NullPointerException - (Messages.formatMessage(EXCEPTION_NO_POLICY_FILE, - new Object[]{securityPolicy})); - } - - System.setProperty(PROPERTY_JAVA_SECURITY_POLICY, - url.toString()); - - // - // The following detects whether the application is running in the - // development environment, in which case it will set the - // app.dev.base property or if it is running in the binary - // distribution, in which case it will set the app.jar.base - // property. These properties are expanded in the security - // policy files. - // Property expansion is used to provide portability of the - // policy files between various code bases (e.g., file base, - // server base, etc..). - // - url = cl.getResource(appMainClassRelativeURL); - if (url == null){ - // Something is really wrong: we would be running a class - // which can't be found.... - throw new Error(appMainClassRelativeURL); - } - - String expandedMainClassName = url.toString(); - if (expandedMainClassName.startsWith(JAR_PROTOCOL) ) { - setJarBase(expandedMainClassName); - } else { - setDevBase(expandedMainClassName); - } - - // Install new security manager - System.setSecurityManager(securityManager); - lastSecurityManagerInstalled = securityManager; - - // Forces re-loading of the security policy - policy.refresh(); - - System.out.println("Enforcing secure script execution"); - } - - private void setJarBase(String expandedMainClassName){ - expandedMainClassName = expandedMainClassName.substring(JAR_PROTOCOL.length()); - - int codeBaseEnd = - expandedMainClassName.indexOf(appJarFile + - JAR_URL_FILE_SEPARATOR + - appMainClassRelativeURL); - - if (codeBaseEnd == -1){ - // Something is seriously wrong. This should *never* happen - // as the APP_SECURITY_POLICY_URL is such that it will be - // a substring of its corresponding URL value - throw new Error(); - } - - String appCodeBase = expandedMainClassName.substring(0, codeBaseEnd); - System.setProperty(PROPERTY_APP_JAR_BASE, appCodeBase); - } - - /** - * Position the app.dev.base property for expansion in - * the policy file used when App is running in its - * development version - */ - private void setDevBase(String expandedMainClassName){ - int codeBaseEnd = - expandedMainClassName.indexOf(APP_MAIN_CLASS_DIR + - appMainClassRelativeURL); - - if (codeBaseEnd == -1){ - // Something is seriously wrong. This should *never* happen - // as the APP_SECURITY_POLICY_URL is such that it will be - // a substring of its corresponding URL value - throw new Error(); - } - - String appCodeBase = expandedMainClassName.substring(0, codeBaseEnd); - System.setProperty(PROPERTY_APP_DEV_BASE, appCodeBase); - } - - -} - +/***************************************************************************** + * Copyright (C) The Apache Software Foundation. All rights reserved. * + * ------------------------------------------------------------------------- * + * This software is published under the terms of the Apache Software License * + * version 1.1, a copy of which has been included with this distribution in * + * the LICENSE file. * + *****************************************************************************/ + +package org.apache.batik.util; + +import java.net.URL; + +import java.security.Policy; + +/** + * This is a helper class which helps applications enforce secure + * script execution. + * <br /> + * It is used by the Squiggle browser as well as the rasterizer. + * <br /> + * This class can install a <tt>SecurityManager</tt> for an application + * and resolves whether the application runs in a development + * environment or from a jar file (in other words, it resolves code-base + * issues for the application). + * <br /> + * + * @author <a mailto="[EMAIL PROTECTED]">Vincent Hardy</a> + * @version $Id: ApplicationSecurityEnforcer.java,v 1.3 2002/05/07 07:17:11 hillion Exp $ + */ +public class ApplicationSecurityEnforcer { + /** + * Message for the SecurityException thrown when there is already + * a SecurityManager installed at the time Squiggle tries + * to install its own security settings. + */ + public static final String EXCEPTION_ALIEN_SECURITY_MANAGER + = "ApplicationSecurityEnforcer.message.security.exception.alien.security.manager"; + + /** + * Message for the NullPointerException thrown when no policy + * file can be found. + */ + public static final String EXCEPTION_NO_POLICY_FILE + = "ApplicationSecurityEnforcer.message.null.pointer.exception.no.policy.file"; + + /** + * System property for specifying an additional policy file. + */ + public static final String PROPERTY_JAVA_SECURITY_POLICY + = "java.security.policy"; + + /** + * Files in a jar file have a URL with the jar protocol + */ + public static final String JAR_PROTOCOL + = "jar:"; + + /** + * Used in jar file urls to separate the jar file name + * from the referenced file + */ + public static final String JAR_URL_FILE_SEPARATOR + = "!/"; + + /** + * System property for App's development base directory + */ + public static final String PROPERTY_APP_DEV_BASE + = "app.dev.base"; + + /** + * System property for App's jars base directory + */ + public static final String PROPERTY_APP_JAR_BASE + = "app.jar.base"; + + /** + * Directory where classes are expanded in the development + * version + */ + public static final String APP_MAIN_CLASS_DIR + = "classes/"; + + /** + * The application's main entry point + */ + protected Class appMainClass; + + /** + * The application's security policy + */ + protected String securityPolicy; + + /** + * The jar file into which the application is packaged + */ + protected String appJarFile; + + /** + * The resource name for the application's main class + */ + protected String appMainClassRelativeURL; + + /** + * Keeps track of the last SecurityManager installed + */ + protected SecurityManager lastSecurityManagerInstalled; + + /** + * @param appClass class of the applications's main entry point + * @param securityPolicy resource for the security policy which + * should be enforced for the application. + * @param appJarFile the Jar file into which the application is + * packaged. + */ + public ApplicationSecurityEnforcer(Class appMainClass, + String securityPolicy, + String appJarFile){ + this.appMainClass = appMainClass; + this.securityPolicy = securityPolicy; + this.appJarFile = appJarFile; + this.appMainClassRelativeURL = + appMainClass.getName().replace('.', '/') + + + ".class"; + + } + + /** + * Enforces security by installing a <tt>SecurityManager</tt>. + * This will throw a <tt>SecurityException</tt> if installing + * a <tt>SecurityManager</tt> requires overriding an existing + * <tt>SecurityManager</tt>. In other words, this method will + * not install a new <tt>SecurityManager</tt> if there is + * already one it did not install in place. + */ + public void enforceSecurity(boolean enforce){ + SecurityManager sm = System.getSecurityManager(); + if (sm != null && sm != lastSecurityManagerInstalled) { + // Throw a Security exception: we do not want to override + // an 'alien' SecurityManager with either null or + // a new SecurityManager. + throw new SecurityException + (Messages.getString(EXCEPTION_ALIEN_SECURITY_MANAGER)); + } + + if (enforce) { + // We want to install a SecurityManager. + if (sm == null) { + installSecurityManager(); + } + } else { + if (sm != null) { + System.setSecurityManager(null); + lastSecurityManagerInstalled = null; + } + } + } + + /** + * Installs a SecurityManager on behalf of the application + */ + public void installSecurityManager(){ + Policy policy = Policy.getPolicy(); + SecurityManager securityManager = new SecurityManager(); + + // Specify app's security policy in the + // system property. + ClassLoader cl = appMainClass.getClassLoader(); + URL url = cl.getResource(securityPolicy); + + if (url == null) { + throw new NullPointerException + (Messages.formatMessage(EXCEPTION_NO_POLICY_FILE, + new Object[]{securityPolicy})); + } + + System.setProperty(PROPERTY_JAVA_SECURITY_POLICY, + url.toString()); + + // + // The following detects whether the application is running in the + // development environment, in which case it will set the + // app.dev.base property or if it is running in the binary + // distribution, in which case it will set the app.jar.base + // property. These properties are expanded in the security + // policy files. + // Property expansion is used to provide portability of the + // policy files between various code bases (e.g., file base, + // server base, etc..). + // + url = cl.getResource(appMainClassRelativeURL); + if (url == null){ + // Something is really wrong: we would be running a class + // which can't be found.... + throw new Error(appMainClassRelativeURL); + } + + String expandedMainClassName = url.toString(); + if (expandedMainClassName.startsWith(JAR_PROTOCOL) ) { + setJarBase(expandedMainClassName); + } else { + setDevBase(expandedMainClassName); + } + + // Install new security manager + System.setSecurityManager(securityManager); + lastSecurityManagerInstalled = securityManager; + + // Forces re-loading of the security policy + policy.refresh(); + } + + private void setJarBase(String expandedMainClassName){ + expandedMainClassName = expandedMainClassName.substring(JAR_PROTOCOL.length()); + + int codeBaseEnd = + expandedMainClassName.indexOf(appJarFile + + JAR_URL_FILE_SEPARATOR + + appMainClassRelativeURL); + + if (codeBaseEnd == -1){ + // Something is seriously wrong. This should *never* happen + // as the APP_SECURITY_POLICY_URL is such that it will be + // a substring of its corresponding URL value + throw new Error(); + } + + String appCodeBase = expandedMainClassName.substring(0, codeBaseEnd); + System.setProperty(PROPERTY_APP_JAR_BASE, appCodeBase); + } + + /** + * Position the app.dev.base property for expansion in + * the policy file used when App is running in its + * development version + */ + private void setDevBase(String expandedMainClassName){ + int codeBaseEnd = + expandedMainClassName.indexOf(APP_MAIN_CLASS_DIR + + appMainClassRelativeURL); + + if (codeBaseEnd == -1){ + // Something is seriously wrong. This should *never* happen + // as the APP_SECURITY_POLICY_URL is such that it will be + // a substring of its corresponding URL value + throw new Error(); + } + + String appCodeBase = expandedMainClassName.substring(0, codeBaseEnd); + System.setProperty(PROPERTY_APP_DEV_BASE, appCodeBase); + } + + +} +
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]