You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by gg...@apache.org on 2019/04/20 23:31:46 UTC

[xalan-java] annotated tag jaxp-2_13_2004 created (now 1ac9d8a)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to annotated tag jaxp-2_13_2004
in repository https://gitbox.apache.org/repos/asf/xalan-java.git.


      at 1ac9d8a  (tag)
 tagging 37b5da2cf10d20a6db751089d7235a5cf098251c (commit)
      by No Author
      on Fri Feb 13 01:11:39 2004 +0000

- Log -----------------------------------------------------------------
This commit was manufactured by cvs2svn to create tag \'jaxp-2_13_2004\'.
-----------------------------------------------------------------------

This annotated tag includes the following new commits:

     new 37b5da2  This commit was manufactured by cvs2svn to create tag 'jaxp-2_13_2004'.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xalan.apache.org
For additional commands, e-mail: dev-help@xalan.apache.org


[xalan-java] 01/01: This commit was manufactured by cvs2svn to create tag 'jaxp-2_13_2004'.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to annotated tag jaxp-2_13_2004
in repository https://gitbox.apache.org/repos/asf/xalan-java.git

commit 37b5da2cf10d20a6db751089d7235a5cf098251c
Author: No Author <de...@apache.org>
AuthorDate: Fri Feb 13 01:11:39 2004 +0000

    This commit was manufactured by cvs2svn to create tag
    'jaxp-2_13_2004'.
---
 .../apache/xalan/extensions/ExtensionHandler.java  |  2 +-
 .../xalan/extensions/ExtensionHandlerGeneral.java  |  2 +-
 .../utils => xalan/extensions}/ObjectFactory.java  | 40 +++++++++++++--------
 .../extensions}/SecuritySupport.java               | 20 +++++------
 .../extensions}/SecuritySupport12.java             | 18 +++++-----
 src/org/apache/xalan/lib/Extensions.java           |  2 +-
 .../{xml/utils => xalan/lib}/ObjectFactory.java    | 41 ++++++++++++++--------
 .../serializer => xalan/lib}/SecuritySupport.java  | 20 +++++------
 .../lib}/SecuritySupport12.java                    | 18 +++++-----
 .../xalan/lib/sql/DefaultConnectionPool.java       |  2 +-
 .../utils => xalan/lib/sql}/ObjectFactory.java     | 40 +++++++++++++--------
 .../lib/sql}/SecuritySupport.java                  | 20 +++++------
 .../lib/sql}/SecuritySupport12.java                | 18 +++++-----
 src/org/apache/xalan/xslt/EnvironmentCheck.java    |  2 +-
 .../{xml/utils => xalan/xslt}/ObjectFactory.java   | 40 +++++++++++++--------
 src/org/apache/xalan/xslt/Process.java             |  2 +-
 .../serializer => xalan/xslt}/SecuritySupport.java | 20 +++++------
 .../xslt}/SecuritySupport12.java                   | 18 +++++-----
 .../xsltc/cmdline}/ObjectFactory.java              | 40 +++++++++++++--------
 .../xsltc/cmdline}/SecuritySupport.java            | 20 +++++------
 .../xsltc/cmdline}/SecuritySupport12.java          | 18 +++++-----
 src/org/apache/xalan/xsltc/cmdline/Transform.java  |  2 +-
 .../xsltc/compiler/FunctionAvailableCall.java      |  2 +-
 .../apache/xalan/xsltc/compiler/FunctionCall.java  |  2 +-
 .../xsltc/compiler}/ObjectFactory.java             | 40 +++++++++++++--------
 src/org/apache/xalan/xsltc/compiler/Parser.java    |  2 +-
 .../xsltc/compiler}/SecuritySupport.java           | 20 +++++------
 .../xsltc/compiler}/SecuritySupport12.java         | 18 +++++-----
 .../xsltc/compiler/util}/ObjectFactory.java        | 40 +++++++++++++--------
 .../xalan/xsltc/compiler/util/ObjectType.java      |  2 +-
 .../xsltc/compiler/util}/SecuritySupport.java      | 20 +++++------
 .../xsltc/compiler/util}/SecuritySupport12.java    | 18 +++++-----
 src/org/apache/xalan/xsltc/dom/NodeSortRecord.java |  1 -
 .../xalan/xsltc/dom/NodeSortRecordFactory.java     |  2 +-
 .../utils => xalan/xsltc/dom}/ObjectFactory.java   | 40 +++++++++++++--------
 .../xsltc/dom}/SecuritySupport.java                | 20 +++++------
 .../xsltc/dom}/SecuritySupport12.java              | 18 +++++-----
 .../apache/xalan/xsltc/dom/XSLTCDTMManager.java    |  2 +-
 .../utils => xalan/xsltc/trax}/ObjectFactory.java  | 40 +++++++++++++--------
 .../xsltc/trax}/SecuritySupport.java               | 20 +++++------
 .../xsltc/trax}/SecuritySupport12.java             | 18 +++++-----
 .../xsltc/trax/SmartTransformerFactoryImpl.java    |  2 +-
 src/org/apache/xalan/xsltc/trax/TemplatesImpl.java |  2 +-
 .../xalan/xsltc/trax/TransformerFactoryImpl.java   |  2 +-
 src/org/apache/xml/dtm/DTMManager.java             |  2 +-
 .../apache/xml/{utils => dtm}/ObjectFactory.java   | 40 +++++++++++++--------
 .../xml/{serializer => dtm}/SecuritySupport.java   | 20 +++++------
 .../xml/{serializer => dtm}/SecuritySupport12.java | 18 +++++-----
 .../xml/dtm/ref/IncrementalSAXSource_Xerces.java   |  2 +-
 .../xml/{utils => dtm/ref}/ObjectFactory.java      | 40 +++++++++++++--------
 .../{serializer => dtm/ref}/SecuritySupport.java   | 21 +++++------
 .../{serializer => dtm/ref}/SecuritySupport12.java | 18 +++++-----
 src/org/apache/xml/serializer/CharInfo.java        |  2 +-
 src/org/apache/xml/serializer/Encodings.java       |  2 +-
 .../xml/{utils => serializer}/ObjectFactory.java   | 40 +++++++++++++--------
 src/org/apache/xml/serializer/SecuritySupport.java | 18 +++++-----
 .../apache/xml/serializer/SecuritySupport12.java   | 16 ++++-----
 .../apache/xml/serializer/SerializerFactory.java   |  2 +-
 src/org/apache/xml/utils/ObjectFactory.java        |  9 +++--
 src/org/apache/xpath/compiler/FuncLoader.java      |  2 +-
 .../utils => xpath/compiler}/ObjectFactory.java    | 40 +++++++++++++--------
 .../compiler}/SecuritySupport.java                 | 20 +++++------
 .../compiler}/SecuritySupport12.java               | 18 +++++-----
 .../apache/xpath/functions/FuncSystemProperty.java |  2 +-
 .../utils => xpath/functions}/ObjectFactory.java   | 40 +++++++++++++--------
 .../apache/xpath/functions/SecuritySupport.java    | 18 +++++-----
 .../apache/xpath/functions/SecuritySupport12.java  | 16 ++++-----
 src/trax/trax.properties                           | 11 ------
 68 files changed, 657 insertions(+), 496 deletions(-)

diff --git a/src/org/apache/xalan/extensions/ExtensionHandler.java b/src/org/apache/xalan/extensions/ExtensionHandler.java
index 4d365ae..f7fd5bf 100644
--- a/src/org/apache/xalan/extensions/ExtensionHandler.java
+++ b/src/org/apache/xalan/extensions/ExtensionHandler.java
@@ -65,7 +65,7 @@ import org.apache.xalan.templates.ElemTemplateElement;
 import org.apache.xalan.templates.Stylesheet;
 import org.apache.xalan.transformer.TransformerImpl;
 import org.apache.xpath.functions.FuncExtFunction;
-import org.apache.xml.utils.ObjectFactory;
+
 
 /**
  * Abstract base class for handling an extension namespace for XPath.
diff --git a/src/org/apache/xalan/extensions/ExtensionHandlerGeneral.java b/src/org/apache/xalan/extensions/ExtensionHandlerGeneral.java
index 96b29dc..900e873 100644
--- a/src/org/apache/xalan/extensions/ExtensionHandlerGeneral.java
+++ b/src/org/apache/xalan/extensions/ExtensionHandlerGeneral.java
@@ -73,7 +73,7 @@ import org.apache.xalan.templates.Stylesheet;
 import org.apache.xalan.transformer.TransformerImpl;
 import org.apache.xml.dtm.DTMIterator;
 import org.apache.xml.dtm.ref.DTMNodeList;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xml.utils.StringVector;
 import org.apache.xml.utils.SystemIDResolver;
 import org.apache.xpath.XPathProcessorException;
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/extensions/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/extensions/ObjectFactory.java
index 3dcf92a..7302c1b
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/extensions/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.extensions;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/extensions/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/extensions/SecuritySupport.java
index cf69b16..c647419
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/extensions/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.extensions;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/extensions/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/extensions/SecuritySupport12.java
index 8c4713e..4043e1d
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/extensions/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.extensions;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/lib/Extensions.java b/src/org/apache/xalan/lib/Extensions.java
index 8d2e883..2b46346 100644
--- a/src/org/apache/xalan/lib/Extensions.java
+++ b/src/org/apache/xalan/lib/Extensions.java
@@ -69,7 +69,7 @@ import org.apache.xpath.NodeSet;
 import org.apache.xpath.objects.XBoolean;
 import org.apache.xpath.objects.XNumber;
 import org.apache.xpath.objects.XObject;
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.w3c.dom.Document;
 import org.w3c.dom.DocumentFragment;
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/lib/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/lib/ObjectFactory.java
index 3dcf92a..065faf2
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/lib/ObjectFactory.java
@@ -53,7 +53,8 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.lib;
+
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +80,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +133,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +160,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +207,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +235,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +289,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +407,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +466,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +490,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +547,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +629,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/lib/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/lib/SecuritySupport.java
index cf69b16..db79980
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/lib/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.lib;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/lib/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/lib/SecuritySupport12.java
index 8c4713e..a840d7f
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/lib/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.lib;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/lib/sql/DefaultConnectionPool.java b/src/org/apache/xalan/lib/sql/DefaultConnectionPool.java
index 030ddcb..4c86e5d 100644
--- a/src/org/apache/xalan/lib/sql/DefaultConnectionPool.java
+++ b/src/org/apache/xalan/lib/sql/DefaultConnectionPool.java
@@ -67,7 +67,7 @@ import java.util.Vector;
 
 import org.apache.xalan.res.XSLMessages;
 import org.apache.xalan.res.XSLTErrorResources;
-import org.apache.xml.utils.ObjectFactory;
+
 
 /**
  * For internal connectiones, i.e. Connection information supplies in the
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/lib/sql/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/lib/sql/ObjectFactory.java
index 3dcf92a..dbed753
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/lib/sql/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.lib.sql;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/lib/sql/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/lib/sql/SecuritySupport.java
index cf69b16..4d547d5
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/lib/sql/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.lib.sql;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/lib/sql/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/lib/sql/SecuritySupport12.java
index 8c4713e..90c83b5
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/lib/sql/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.lib.sql;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/xslt/EnvironmentCheck.java b/src/org/apache/xalan/xslt/EnvironmentCheck.java
index bd0d9c9..abf09db 100644
--- a/src/org/apache/xalan/xslt/EnvironmentCheck.java
+++ b/src/org/apache/xalan/xslt/EnvironmentCheck.java
@@ -66,7 +66,7 @@ import java.util.Hashtable;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xslt/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xslt/ObjectFactory.java
index 3dcf92a..b96f7de
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xslt/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xslt;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xalan/xslt/Process.java b/src/org/apache/xalan/xslt/Process.java
index 939ada6..86e042c 100644
--- a/src/org/apache/xalan/xslt/Process.java
+++ b/src/org/apache/xalan/xslt/Process.java
@@ -90,7 +90,7 @@ import org.apache.xalan.trace.PrintTraceListener;
 import org.apache.xalan.trace.TraceManager;
 import org.apache.xalan.transformer.XalanProperties;
 import org.apache.xml.utils.DefaultErrorHandler;
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xslt/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xslt/SecuritySupport.java
index cf69b16..9349fac
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xslt/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xslt;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xslt/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xslt/SecuritySupport12.java
index 8c4713e..f62d65c
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xslt/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xslt;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xsltc/cmdline/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xsltc/cmdline/ObjectFactory.java
index 3dcf92a..c2bc107
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xsltc/cmdline/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xsltc.cmdline;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xsltc/cmdline/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xsltc/cmdline/SecuritySupport.java
index cf69b16..ec1bda9
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xsltc/cmdline/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.cmdline;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xsltc/cmdline/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xsltc/cmdline/SecuritySupport12.java
index 8c4713e..a4b4089
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xsltc/cmdline/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.cmdline;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/xsltc/cmdline/Transform.java b/src/org/apache/xalan/xsltc/cmdline/Transform.java
index 8035a49..69ca677 100644
--- a/src/org/apache/xalan/xsltc/cmdline/Transform.java
+++ b/src/org/apache/xalan/xsltc/cmdline/Transform.java
@@ -80,7 +80,7 @@ import org.apache.xalan.xsltc.DOMEnhancedForDTM;
 import org.apache.xalan.xsltc.dom.XSLTCDTMManager;
 import org.apache.xalan.xsltc.runtime.AbstractTranslet;
 import org.apache.xalan.xsltc.runtime.Constants;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xalan.xsltc.runtime.Parameter;
 import org.apache.xalan.xsltc.runtime.output.TransletOutputHandlerFactory;
 import org.apache.xml.serializer.SerializationHandler;
diff --git a/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java b/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java
index 4828dde..428ea96 100644
--- a/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java
+++ b/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java
@@ -75,7 +75,7 @@ import org.apache.xalan.xsltc.compiler.util.MethodGenerator;
 import org.apache.xalan.xsltc.compiler.util.Type;
 import org.apache.xalan.xsltc.compiler.util.TypeCheckError;
 import org.apache.xalan.xsltc.compiler.util.Util;
-import org.apache.xml.utils.ObjectFactory;
+
 
 final class FunctionAvailableCall extends FunctionCall {
 
diff --git a/src/org/apache/xalan/xsltc/compiler/FunctionCall.java b/src/org/apache/xalan/xsltc/compiler/FunctionCall.java
index 2a7f667..afa0375 100644
--- a/src/org/apache/xalan/xsltc/compiler/FunctionCall.java
+++ b/src/org/apache/xalan/xsltc/compiler/FunctionCall.java
@@ -95,7 +95,7 @@ import org.apache.xalan.xsltc.compiler.util.ObjectType;
 import org.apache.xalan.xsltc.compiler.util.ReferenceType;
 import org.apache.xalan.xsltc.compiler.util.Type;
 import org.apache.xalan.xsltc.compiler.util.TypeCheckError;
-import org.apache.xml.utils.ObjectFactory;
+
 
 class FunctionCall extends Expression {
 
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xsltc/compiler/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xsltc/compiler/ObjectFactory.java
index 3dcf92a..9702f13
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xsltc/compiler/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xsltc.compiler;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xalan/xsltc/compiler/Parser.java b/src/org/apache/xalan/xsltc/compiler/Parser.java
index abd6784..1b61789 100644
--- a/src/org/apache/xalan/xsltc/compiler/Parser.java
+++ b/src/org/apache/xalan/xsltc/compiler/Parser.java
@@ -87,7 +87,7 @@ import org.apache.xalan.xsltc.compiler.util.MethodType;
 import org.apache.xalan.xsltc.compiler.util.Type;
 import org.apache.xalan.xsltc.compiler.util.TypeCheckError;
 import org.apache.xalan.xsltc.runtime.AttributeList;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xsltc/compiler/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xsltc/compiler/SecuritySupport.java
index cf69b16..4c4571d
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xsltc/compiler/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.compiler;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xsltc/compiler/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xsltc/compiler/SecuritySupport12.java
index 8c4713e..cead24e
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xsltc/compiler/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.compiler;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xsltc/compiler/util/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xsltc/compiler/util/ObjectFactory.java
index 3dcf92a..2b8e1d0
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xsltc/compiler/util/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xsltc.compiler.util;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java b/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java
index 0f31317..94389c7 100644
--- a/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java
+++ b/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java
@@ -74,7 +74,7 @@ import org.apache.bcel.generic.Instruction;
 import org.apache.bcel.generic.InstructionList;
 import org.apache.bcel.generic.PUSH;
 import org.apache.xalan.xsltc.compiler.Constants;
-import org.apache.xml.utils.ObjectFactory;
+
 
 public final class ObjectType extends Type {
     
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xsltc/compiler/util/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xsltc/compiler/util/SecuritySupport.java
index cf69b16..e75b963
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xsltc/compiler/util/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.compiler.util;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xsltc/compiler/util/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xsltc/compiler/util/SecuritySupport12.java
index 8c4713e..4fc7cd7
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xsltc/compiler/util/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.compiler.util;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/xsltc/dom/NodeSortRecord.java b/src/org/apache/xalan/xsltc/dom/NodeSortRecord.java
index 51dcd90..36c3132 100644
--- a/src/org/apache/xalan/xsltc/dom/NodeSortRecord.java
+++ b/src/org/apache/xalan/xsltc/dom/NodeSortRecord.java
@@ -73,7 +73,6 @@ import org.apache.xalan.xsltc.CollatorFactory;
 import org.apache.xalan.xsltc.DOM;
 import org.apache.xalan.xsltc.TransletException;
 import org.apache.xalan.xsltc.runtime.AbstractTranslet;
-import org.apache.xml.utils.ObjectFactory;
 
 /**
  * Base class for sort records containing application specific sort keys 
diff --git a/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java b/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java
index 1b59a71..9987105 100644
--- a/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java
+++ b/src/org/apache/xalan/xsltc/dom/NodeSortRecordFactory.java
@@ -68,7 +68,7 @@ import org.apache.xalan.xsltc.DOM;
 import org.apache.xalan.xsltc.Translet;
 import org.apache.xalan.xsltc.TransletException;
 import org.apache.xalan.xsltc.runtime.AbstractTranslet;
-import org.apache.xml.utils.ObjectFactory;
+
 
 public class NodeSortRecordFactory {
 
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xsltc/dom/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xsltc/dom/ObjectFactory.java
index 3dcf92a..fc356b9
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xsltc/dom/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xsltc.dom;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xsltc/dom/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xsltc/dom/SecuritySupport.java
index cf69b16..07f3c20
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xsltc/dom/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.dom;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xsltc/dom/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xsltc/dom/SecuritySupport12.java
index 8c4713e..31f37ed
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xsltc/dom/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.dom;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/xsltc/dom/XSLTCDTMManager.java b/src/org/apache/xalan/xsltc/dom/XSLTCDTMManager.java
index ac79ae1..4d4eabb 100644
--- a/src/org/apache/xalan/xsltc/dom/XSLTCDTMManager.java
+++ b/src/org/apache/xalan/xsltc/dom/XSLTCDTMManager.java
@@ -68,7 +68,7 @@ import org.apache.xml.dtm.DTMWSFilter;
 import org.apache.xml.dtm.ref.DTMManagerDefault;
 import org.apache.xml.res.XMLErrorResources;
 import org.apache.xml.res.XMLMessages;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xml.utils.SystemIDResolver;
 import org.apache.xalan.xsltc.trax.DOM2SAX;
 
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xalan/xsltc/trax/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xalan/xsltc/trax/ObjectFactory.java
index 3dcf92a..3ceee7b
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xalan/xsltc/trax/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xalan.xsltc.trax;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xalan/xsltc/trax/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xalan/xsltc/trax/SecuritySupport.java
index cf69b16..a1e8f44
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xalan/xsltc/trax/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.trax;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xalan/xsltc/trax/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xalan/xsltc/trax/SecuritySupport12.java
index 8c4713e..c3f00db
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xalan/xsltc/trax/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xalan.xsltc.trax;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java b/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java
index 03976e3..efaf3a6 100644
--- a/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java
@@ -80,7 +80,7 @@ import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
-import org.apache.xml.utils.ObjectFactory;
+
 import org.xml.sax.XMLFilter;
 
 /**
diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java
index 8bfd942..29933e3 100644
--- a/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java
@@ -83,7 +83,7 @@ import org.apache.xalan.xsltc.Translet;
 import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
 import org.apache.xalan.xsltc.runtime.AbstractTranslet;
 import org.apache.xalan.xsltc.runtime.Hashtable;
-import org.apache.xml.utils.ObjectFactory;
+
 
 public final class TemplatesImpl implements Templates, Serializable {
 
diff --git a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
index 9bceb21..08a84e3 100644
--- a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
@@ -108,7 +108,7 @@ import org.apache.xalan.xsltc.compiler.XSLTC;
 import org.apache.xalan.xsltc.compiler.util.ErrorMsg;
 import org.apache.xalan.xsltc.dom.XSLTCDTMManager;
 
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLFilter;
diff --git a/src/org/apache/xml/dtm/DTMManager.java b/src/org/apache/xml/dtm/DTMManager.java
index 0346b34..7cca8c8 100644
--- a/src/org/apache/xml/dtm/DTMManager.java
+++ b/src/org/apache/xml/dtm/DTMManager.java
@@ -58,7 +58,7 @@ package org.apache.xml.dtm;
 
 import org.apache.xml.res.XMLErrorResources;
 import org.apache.xml.res.XMLMessages;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xml.utils.PrefixResolver;
 import org.apache.xml.utils.XMLStringFactory;
 
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xml/dtm/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xml/dtm/ObjectFactory.java
index 3dcf92a..4610a6e
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xml/dtm/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xml.dtm;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xml/dtm/SecuritySupport.java
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xml/dtm/SecuritySupport.java
index cf69b16..1dc4827 100644
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xml/dtm/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xml.dtm;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xml/dtm/SecuritySupport12.java
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xml/dtm/SecuritySupport12.java
index 8c4713e..6b305ac 100644
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xml/dtm/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xml.dtm;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xml/dtm/ref/IncrementalSAXSource_Xerces.java b/src/org/apache/xml/dtm/ref/IncrementalSAXSource_Xerces.java
index 7674268..8eaa137 100644
--- a/src/org/apache/xml/dtm/ref/IncrementalSAXSource_Xerces.java
+++ b/src/org/apache/xml/dtm/ref/IncrementalSAXSource_Xerces.java
@@ -64,7 +64,7 @@ import java.lang.reflect.Method;
 import org.apache.xerces.parsers.SAXParser;
 import org.apache.xml.res.XMLErrorResources;
 import org.apache.xml.res.XMLMessages;
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xml/dtm/ref/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xml/dtm/ref/ObjectFactory.java
index 3dcf92a..8fb66f9
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xml/dtm/ref/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xml.dtm.ref;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xml/dtm/ref/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xml/dtm/ref/SecuritySupport.java
index cf69b16..38eb82a
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xml/dtm/ref/SecuritySupport.java
@@ -53,7 +53,8 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xml.dtm.ref;
+
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +114,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +150,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xml/dtm/ref/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xml/dtm/ref/SecuritySupport12.java
index 8c4713e..72534d3
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xml/dtm/ref/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xml.dtm.ref;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xml/serializer/CharInfo.java b/src/org/apache/xml/serializer/CharInfo.java
index 3aa68fa..9e70679 100644
--- a/src/org/apache/xml/serializer/CharInfo.java
+++ b/src/org/apache/xml/serializer/CharInfo.java
@@ -71,7 +71,7 @@ import javax.xml.transform.TransformerException;
 import org.apache.xml.res.XMLErrorResources;
 import org.apache.xml.res.XMLMessages;
 import org.apache.xml.utils.CharKey;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xml.utils.SystemIDResolver;
 import org.apache.xml.utils.WrappedRuntimeException;
 
diff --git a/src/org/apache/xml/serializer/Encodings.java b/src/org/apache/xml/serializer/Encodings.java
index 6f36b22..d7da8e7 100644
--- a/src/org/apache/xml/serializer/Encodings.java
+++ b/src/org/apache/xml/serializer/Encodings.java
@@ -70,7 +70,7 @@ import java.util.StringTokenizer;
 import java.security.PrivilegedAction;
 import java.security.AccessController;
 
-import org.apache.xml.utils.ObjectFactory;
+
 
 /**
  * Provides information about encodings. Depends on the Java runtime
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xml/serializer/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xml/serializer/ObjectFactory.java
index 3dcf92a..2c79ad4
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xml/serializer/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xml.serializer;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xml/serializer/SecuritySupport.java
index cf69b16..ec0c910 100644
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xml/serializer/SecuritySupport.java
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xml/serializer/SecuritySupport12.java
index 8c4713e..a338fb4 100644
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xml/serializer/SecuritySupport12.java
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xml/serializer/SerializerFactory.java b/src/org/apache/xml/serializer/SerializerFactory.java
index e63a66b..88f8941 100644
--- a/src/org/apache/xml/serializer/SerializerFactory.java
+++ b/src/org/apache/xml/serializer/SerializerFactory.java
@@ -63,7 +63,7 @@ import javax.xml.transform.OutputKeys;
 
 import org.apache.xml.res.XMLErrorResources;
 import org.apache.xml.res.XMLMessages;
-import org.apache.xml.utils.ObjectFactory;
+
 import org.xml.sax.ContentHandler;
 
 /**
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xml/utils/ObjectFactory.java
index 3dcf92a..c4519d7 100644
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xml/utils/ObjectFactory.java
@@ -81,14 +81,17 @@ import java.io.InputStreamReader;
  *
  * @version $Id:  $
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -534,7 +537,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
diff --git a/src/org/apache/xpath/compiler/FuncLoader.java b/src/org/apache/xpath/compiler/FuncLoader.java
index b31e1c6..367fa83 100644
--- a/src/org/apache/xpath/compiler/FuncLoader.java
+++ b/src/org/apache/xpath/compiler/FuncLoader.java
@@ -58,7 +58,7 @@ package org.apache.xpath.compiler;
 
 import javax.xml.transform.TransformerException;
 
-import org.apache.xml.utils.ObjectFactory;
+
 import org.apache.xpath.functions.Function;
 
 /**
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xpath/compiler/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xpath/compiler/ObjectFactory.java
index 3dcf92a..09e9cd8
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xpath/compiler/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xpath.compiler;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xml/serializer/SecuritySupport.java b/src/org/apache/xpath/compiler/SecuritySupport.java
old mode 100644
new mode 100755
similarity index 90%
copy from src/org/apache/xml/serializer/SecuritySupport.java
copy to src/org/apache/xpath/compiler/SecuritySupport.java
index cf69b16..dc60e95
--- a/src/org/apache/xml/serializer/SecuritySupport.java
+++ b/src/org/apache/xpath/compiler/SecuritySupport.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xpath.compiler;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xml/serializer/SecuritySupport12.java b/src/org/apache/xpath/compiler/SecuritySupport12.java
old mode 100644
new mode 100755
similarity index 92%
copy from src/org/apache/xml/serializer/SecuritySupport12.java
copy to src/org/apache/xpath/compiler/SecuritySupport12.java
index 8c4713e..21dc0a5
--- a/src/org/apache/xml/serializer/SecuritySupport12.java
+++ b/src/org/apache/xpath/compiler/SecuritySupport12.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.serializer;
+package org.apache.xpath.compiler;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/org/apache/xpath/functions/FuncSystemProperty.java b/src/org/apache/xpath/functions/FuncSystemProperty.java
index 45422e2..019a05d 100644
--- a/src/org/apache/xpath/functions/FuncSystemProperty.java
+++ b/src/org/apache/xpath/functions/FuncSystemProperty.java
@@ -60,7 +60,7 @@ import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.util.Properties;
 
-import org.apache.xml.utils.ObjectFactory;
+
 
 import org.apache.xpath.XPathContext;
 import org.apache.xpath.objects.XNumber;
diff --git a/src/org/apache/xml/utils/ObjectFactory.java b/src/org/apache/xpath/functions/ObjectFactory.java
old mode 100644
new mode 100755
similarity index 95%
copy from src/org/apache/xml/utils/ObjectFactory.java
copy to src/org/apache/xpath/functions/ObjectFactory.java
index 3dcf92a..687e8e2
--- a/src/org/apache/xml/utils/ObjectFactory.java
+++ b/src/org/apache/xpath/functions/ObjectFactory.java
@@ -53,7 +53,7 @@
  * Foundation, please see <http://www.apache.org/>.
  */
 
-package org.apache.xml.utils;
+package org.apache.xpath.functions;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -79,16 +79,19 @@ import java.io.InputStreamReader;
  * class and modified to be used as a general utility for creating objects 
  * dynamically.
  *
- * @version $Id:  $
+ * @version $Id$
  */
-public class ObjectFactory {
+class ObjectFactory {
 
     //
     // Constants
     //
 
     // name of default properties file to look for in JDK's jre/lib directory
-    private static final String DEFAULT_PROPERTIES_FILENAME = "xalan.properties";
+    private static final String DEFAULT_PROPERTIES_FILENAME =
+                                                     "xalan.properties";
+
+    private static final String SERVICES_PATH = "META-INF/services";
 
     /** Set to true for debugging */
     private static final boolean DEBUG = false;
@@ -129,7 +132,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, String fallbackClassName)
+    static Object createObject(String factoryId, String fallbackClassName)
         throws ConfigurationError {
         return createObject(factoryId, null, fallbackClassName);
     } // createObject(String,String):Object
@@ -156,7 +159,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Object createObject(String factoryId, 
+    static Object createObject(String factoryId, 
                                       String propertiesFilename,
                                       String fallbackClassName)
         throws ConfigurationError
@@ -203,7 +206,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId) 
+    static Class lookUpFactoryClass(String factoryId) 
         throws ConfigurationError
     {
         return lookUpFactoryClass(factoryId, null, null);
@@ -231,7 +234,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static Class lookUpFactoryClass(String factoryId,
+    static Class lookUpFactoryClass(String factoryId,
                                            String propertiesFilename,
                                            String fallbackClassName)
         throws ConfigurationError
@@ -285,7 +288,7 @@ public class ObjectFactory {
      *
      * @exception ObjectFactory.ConfigurationError
      */
-    public static String lookUpFactoryClassName(String factoryId,
+    static String lookUpFactoryClassName(String factoryId,
                                                 String propertiesFilename,
                                                 String fallbackClassName)
     {
@@ -403,7 +406,7 @@ public class ObjectFactory {
      * Figure out which ClassLoader to use.  For JDK 1.2 and later use
      * the context ClassLoader.
      */
-    public static ClassLoader findClassLoader()
+    static ClassLoader findClassLoader()
         throws ConfigurationError
     { 
         SecuritySupport ss = SecuritySupport.getInstance();
@@ -462,7 +465,7 @@ public class ObjectFactory {
     /**
      * Create an instance of a class using the specified ClassLoader
      */ 
-    public static Object newInstance(String className, ClassLoader cl,
+    static Object newInstance(String className, ClassLoader cl,
                                       boolean doFallback)
         throws ConfigurationError
     {
@@ -486,10 +489,19 @@ public class ObjectFactory {
     /**
      * Find a Class using the specified ClassLoader
      */ 
-    public static Class findProviderClass(String className, ClassLoader cl,
+    static Class findProviderClass(String className, ClassLoader cl,
                                            boolean doFallback)
         throws ClassNotFoundException, ConfigurationError
     {
+      
+        SecurityManager security = System.getSecurityManager();
+        try{
+            if (security != null)
+                security.checkPackageAccess(className);
+        }catch(SecurityException e){
+            throw e;
+        }
+
         Class providerClass;
         if (cl == null) {
             // XXX Use the bootstrap ClassLoader.  There is no way to
@@ -534,7 +546,7 @@ public class ObjectFactory {
     private static String findJarServiceProviderName(String factoryId)
     {
         SecuritySupport ss = SecuritySupport.getInstance();
-        String serviceId = "META-INF/services/" + factoryId;
+        String serviceId = SERVICES_PATH + factoryId;
         InputStream is = null;
 
         // First try the Context ClassLoader
@@ -616,7 +628,7 @@ public class ObjectFactory {
     /**
      * A configuration error.
      */
-    public static class ConfigurationError 
+    static class ConfigurationError 
         extends Error {
 
         //
diff --git a/src/org/apache/xpath/functions/SecuritySupport.java b/src/org/apache/xpath/functions/SecuritySupport.java
index 9b72c62..31ddf0f 100644
--- a/src/org/apache/xpath/functions/SecuritySupport.java
+++ b/src/org/apache/xpath/functions/SecuritySupport.java
@@ -113,33 +113,33 @@ class SecuritySupport {
      * Return an appropriate instance of this class, depending on whether
      * we're on a JDK 1.1 or J2SE 1.2 (or later) system.
      */
-    public static SecuritySupport getInstance() {
+    static SecuritySupport getInstance() {
 	return (SecuritySupport)securitySupport;
     }
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
 	return null;
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return null;
     }
 
-    public ClassLoader getParentClassLoader(ClassLoader cl) {
+    ClassLoader getParentClassLoader(ClassLoader cl) {
         return null;
     }
 
-    public String getSystemProperty(String propName) {
+    String getSystemProperty(String propName) {
         return System.getProperty(propName);
     }
 
-    public FileInputStream getFileInputStream(File file)
+    FileInputStream getFileInputStream(File file)
         throws FileNotFoundException
     {
         return new FileInputStream(file);
     }
 
-    public InputStream getResourceAsStream(ClassLoader cl, String name) {
+    InputStream getResourceAsStream(ClassLoader cl, String name) {
         InputStream ris;
         if (cl == null) {
             ris = ClassLoader.getSystemResourceAsStream(name);
@@ -149,11 +149,11 @@ class SecuritySupport {
         return ris;
     }
     
-    public boolean getFileExists(File f) {
+    boolean getFileExists(File f) {
         return f.exists();
     }
     
-    public long getLastModified(File f) {
+    long getLastModified(File f) {
         return f.lastModified();
     }    
 }
diff --git a/src/org/apache/xpath/functions/SecuritySupport12.java b/src/org/apache/xpath/functions/SecuritySupport12.java
index 79a2eb2..702c19e 100644
--- a/src/org/apache/xpath/functions/SecuritySupport12.java
+++ b/src/org/apache/xpath/functions/SecuritySupport12.java
@@ -76,7 +76,7 @@ import java.util.Properties;
  */
 class SecuritySupport12 extends SecuritySupport {
 
-    public ClassLoader getContextClassLoader() {
+    ClassLoader getContextClassLoader() {
         return (ClassLoader)
                 AccessController.doPrivileged(new PrivilegedAction() {
             public Object run() {
@@ -89,7 +89,7 @@ class SecuritySupport12 extends SecuritySupport {
         });
     }
 
-    public ClassLoader getSystemClassLoader() {
+    ClassLoader getSystemClassLoader() {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -102,7 +102,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public ClassLoader getParentClassLoader(final ClassLoader cl) {
+    ClassLoader getParentClassLoader(final ClassLoader cl) {
         return (ClassLoader)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -118,7 +118,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public String getSystemProperty(final String propName) {
+    String getSystemProperty(final String propName) {
         return (String)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -127,7 +127,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
 
-    public FileInputStream getFileInputStream(final File file)
+    FileInputStream getFileInputStream(final File file)
         throws FileNotFoundException
     {
         try {
@@ -142,7 +142,7 @@ class SecuritySupport12 extends SecuritySupport {
         }
     }
 
-    public InputStream getResourceAsStream(final ClassLoader cl,
+    InputStream getResourceAsStream(final ClassLoader cl,
                                            final String name)
     {
         return (InputStream)
@@ -159,7 +159,7 @@ class SecuritySupport12 extends SecuritySupport {
             });
     }
     
-    public boolean getFileExists(final File f) {
+    boolean getFileExists(final File f) {
     return ((Boolean)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
@@ -168,7 +168,7 @@ class SecuritySupport12 extends SecuritySupport {
             })).booleanValue();
     }
     
-    public long getLastModified(final File f) {
+    long getLastModified(final File f) {
     return ((Long)
             AccessController.doPrivileged(new PrivilegedAction() {
                 public Object run() {
diff --git a/src/trax/trax.properties b/src/trax/trax.properties
deleted file mode 100644
index e593c39..0000000
--- a/src/trax/trax.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Revision$ $Date$
-#
-# Note: This properties file is provided for illustrative purposes
-#       only and is not part of the interface definition.
-#       This properties file is located in the implementation JAR
-#       and different implementations will specify different
-#       implementation classes and output methods.
-#
-
-# The TRaX Stylesheet processor
-trax.processor.xslt=org.apache.xalan.processor.StylesheetProcessor


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xalan.apache.org
For additional commands, e-mail: dev-help@xalan.apache.org