neilg 2003/01/17 11:43:02 Modified: java/src/org/apache/xerces/impl/xs XMLSchemaLoader.java XMLSchemaValidator.java java/src/org/apache/xerces/impl/xs/models CMBuilder.java CMNodeFactory.java Log: CMNodeFactory should not be a singleton, since this could cause thread-safety issues. Revision Changes Path 1.15 +4 -4 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java Index: XMLSchemaLoader.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- XMLSchemaLoader.java 16 Jan 2003 23:03:08 -0000 1.14 +++ XMLSchemaLoader.java 17 Jan 2003 19:43:01 -0000 1.15 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 2000-2002 The Apache Software Foundation. + * Copyright (c) 2000-2003 The Apache Software Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -249,8 +249,8 @@ sHandler = new SubstitutionGroupHandler(fGrammarBucket); } fSubGroupHandler = sHandler; - //get the factory instance.. this class is singleton - CMNodeFactory nodeFactory = CMNodeFactory.newInstance() ; + //get an instance of the CMNodeFactory */ + CMNodeFactory nodeFactory = new CMNodeFactory() ; //REVISIT: shouldn't the SecurityManager be allowed to set, if an application tries to load standalone schema - nb. if(builder == null) { builder = new CMBuilder(nodeFactory); 1.131 +3 -3 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Index: XMLSchemaValidator.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java,v retrieving revision 1.130 retrieving revision 1.131 diff -u -r1.130 -r1.131 --- XMLSchemaValidator.java 16 Jan 2003 23:03:08 -0000 1.130 +++ XMLSchemaValidator.java 17 Jan 2003 19:43:01 -0000 1.131 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 1999-2002 The Apache Software Foundation. + * Copyright (c) 1999-2003 The Apache Software Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -1077,7 +1077,7 @@ // so that we can QNameDV.getCompiledForm() final XSSimpleType fQNameDV = (XSSimpleType)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_QNAME); - final CMNodeFactory nodeFactory = CMNodeFactory.newInstance(); + final CMNodeFactory nodeFactory = new CMNodeFactory(); /** used to build content models */ // REVISIT: create decl pool, and pass it to each traversers final CMBuilder fCMBuilder = new CMBuilder(nodeFactory); 1.17 +2 -11 xml-xerces/java/src/org/apache/xerces/impl/xs/models/CMBuilder.java Index: CMBuilder.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/models/CMBuilder.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- CMBuilder.java 17 Jan 2003 10:12:33 -0000 1.16 +++ CMBuilder.java 17 Jan 2003 19:43:02 -0000 1.17 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 2001, 2002 The Apache Software Foundation. All rights + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -94,15 +94,6 @@ fDeclPool = null; fNodeFactory = nodeFactory ; } - - public CMBuilder(XSDeclarationPool pool) { - fDeclPool = pool; - //xxx is this constructor used ? but there would be nothing wrong if factory is created.. but we dont have security manager set. - if(fNodeFactory == null) - { - fNodeFactory = CMNodeFactory.newInstance(); - } - }//CMBuilder public void setDeclPool(XSDeclarationPool declPool) { fDeclPool = declPool; 1.3 +13 -18 xml-xerces/java/src/org/apache/xerces/impl/xs/models/CMNodeFactory.java Index: CMNodeFactory.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/models/CMNodeFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CMNodeFactory.java 17 Jan 2003 10:12:33 -0000 1.2 +++ CMNodeFactory.java 17 Jan 2003 19:43:02 -0000 1.3 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 1999-2002 The Apache Software Foundation. All rights + * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -85,7 +85,7 @@ private int nodeCount = 0; //No. of nodes allowed. - private int maxNodelimit ; + private int maxNodeLimit ; /** @@ -94,20 +94,12 @@ */ private XMLErrorReporter fErrorReporter; - // stores defaults for different security holes (maxOccurlimit in current context) if it has + // stores defaults for different security holes (maxOccurLimit in current context) if it has // been set on the configuration. private SecurityManager fSecurityManager = null; - //static instance of CMNodeFactory.. - private static CMNodeFactory fNodeFactory ; - - /** instance of CMNodeFactory can't be created outside this class*/ - private CMNodeFactory() { - } - - /** Get the instance of CMNodeFactory, further call to this method will give same instance, its singleton class */ - public static CMNodeFactory newInstance(){ - return fNodeFactory != null ? fNodeFactory : new CMNodeFactory() ; + /** default constructor */ + public CMNodeFactory() { } public void reset(XMLComponentManager componentManager){ @@ -116,7 +108,7 @@ fSecurityManager = (SecurityManager)componentManager.getProperty(SECURITY_MANAGER); //we are setting the limit of number of nodes to 3times the maxOccur value.. if(fSecurityManager != null){ - maxNodelimit = fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY ; + maxNodeLimit = fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY ; } } catch (XMLConfigurationException e) { @@ -141,12 +133,15 @@ } public void nodeCountCheck(){ - if( fSecurityManager != null && nodeCount++ > maxNodelimit){ + if( fSecurityManager != null && nodeCount++ > maxNodeLimit){ if(DEBUG){ System.out.println("nodeCount = " + nodeCount ) ; - System.out.println("nodeLimit = " + maxNodelimit ) ; + System.out.println("nodeLimit = " + maxNodeLimit ) ; } - fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN, "maxOccurLimit", new Object[]{ new Integer(maxNodelimit) }, XMLErrorReporter.SEVERITY_FATAL_ERROR); + fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN, "maxOccurLimit", new Object[]{ new Integer(maxNodeLimit) }, XMLErrorReporter.SEVERITY_FATAL_ERROR); + // similarly to entity manager behaviour, take into accont + // behaviour if continue-after-fatal-error is set. + nodeCount = 0; } }//nodeCountCheck() @@ -178,7 +173,7 @@ String property = propertyId.substring(Constants.XERCES_PROPERTY_PREFIX.length()); if (property.equals(Constants.SECURITY_MANAGER_PROPERTY)) { fSecurityManager = (SecurityManager)value; - maxNodelimit = (fSecurityManager != null) ? fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY : 0 ; + maxNodeLimit = (fSecurityManager != null) ? fSecurityManager.getMaxOccurNodeLimit() * MULTIPLICITY : 0 ; return; } if (property.equals(Constants.ERROR_REPORTER_PROPERTY)) {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]