You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by bo...@apache.org on 2008/03/10 15:10:21 UTC
svn commit: r635560 [5/5] - in /xerces/c/trunk:
Projects/MacOS/Xcode/XercesLib/XercesLib.xcode/
Projects/Win32/BCB6/Xerces-all/XercesLib/
Projects/Win32/BCC.551/Xerces-all/XercesLib/
Projects/Win32/VC6/xerces-all/XercesLib/ Projects/Win32/VC7.1/xerces-...
Modified: xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.cpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.cpp Mon Mar 10 07:10:09 2008
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -32,117 +32,74 @@
#include <xercesc/validators/common/SimpleContentModel.hpp>
#include <xercesc/validators/schema/XSDLocator.hpp>
#include <xercesc/internal/XTemplateSerializer.hpp>
-#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/util/XMLInitializer.hpp>
XERCES_CPP_NAMESPACE_BEGIN
// ---------------------------------------------------------------------------
-// Local static data
-// ---------------------------------------------------------------------------
-static bool sAnyTypeMutexRegistered = false;
-static XMLMutex* sAnyTypeMutex = 0;
-static XMLRegisterCleanup anyTypeCleanup;
-
-
-// ---------------------------------------------------------------------------
// ComplexTypeInfo: Static member data
// ---------------------------------------------------------------------------
ComplexTypeInfo* ComplexTypeInfo::fAnyType = 0;
+void XMLInitializer::initializeComplexTypeInfo()
+{
+ // create type name
+ XMLCh typeName[128];
+ XMLSize_t nsLen = XMLString::stringLen(SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+
+ XMLString::copyString(typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ typeName[nsLen] = chComma;
+ XMLString::copyString(typeName + nsLen + 1, SchemaSymbols::fgATTVAL_ANYTYPE);
-// ---------------------------------------------------------------------------
-// ComplexTypeInfo: Static meber methods
-// ---------------------------------------------------------------------------
-void ComplexTypeInfo::reinitAnyType() {
+ // Create and initialize 'anyType'
+ ComplexTypeInfo::fAnyType = new ComplexTypeInfo();
+
+ ContentSpecNode* term = new ContentSpecNode
+ (
+ new QName
+ (
+ XMLUni::fgZeroLenString
+ , XMLUni::fgZeroLenString
+ , 1
+ )
+ , false
+ );
+ term->setType(ContentSpecNode::Any_Lax);
+ term->setMinOccurs(0);
+ term->setMaxOccurs(SchemaSymbols::XSD_UNBOUNDED);
- delete fAnyType;
- fAnyType = 0;
+ ContentSpecNode* particle = new ContentSpecNode
+ (
+ ContentSpecNode::ModelGroupSequence
+ , term
+ , 0
+ );
- // delete local static data
- delete sAnyTypeMutex;
- sAnyTypeMutex = 0;
- sAnyTypeMutexRegistered = false;
+ SchemaAttDef* attWildCard = new SchemaAttDef
+ (
+ XMLUni::fgZeroLenString
+ , XMLUni::fgZeroLenString
+ , 1
+ , XMLAttDef::Any_Any
+ , XMLAttDef::ProcessContents_Lax
+ );
+
+ ComplexTypeInfo::fAnyType->setTypeName(typeName);
+ ComplexTypeInfo::fAnyType->setBaseComplexTypeInfo(ComplexTypeInfo::fAnyType);
+ ComplexTypeInfo::fAnyType->setDerivedBy(SchemaSymbols::XSD_RESTRICTION);
+ ComplexTypeInfo::fAnyType->setContentType(SchemaElementDecl::Mixed_Complex);
+ ComplexTypeInfo::fAnyType->setContentSpec(particle);
+ ComplexTypeInfo::fAnyType->setAttWildCard(attWildCard);
}
-void XMLInitializer::initializeAnyType()
+void XMLInitializer::terminateComplexTypeInfo()
{
- ComplexTypeInfo::getAnyType(1);
+ delete ComplexTypeInfo::fAnyType;
+ ComplexTypeInfo::fAnyType = 0;
}
ComplexTypeInfo* ComplexTypeInfo::getAnyType(unsigned int emptyNSId)
{
- if (!sAnyTypeMutexRegistered)
- {
- if (!sAnyTypeMutex)
- {
- XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex);
- if (!sAnyTypeMutex)
- sAnyTypeMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager);
- }
-
- // Use a faux scope to synchronize while we do this
- {
- XMLMutexLock lock(sAnyTypeMutex);
-
- // If we got here first, then register it and set the registered flag
- if (!sAnyTypeMutexRegistered)
- {
- // create type name
- XMLCh typeName[128];
- XMLSize_t nsLen = XMLString::stringLen(SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
-
- XMLString::copyString(typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
- typeName[nsLen] = chComma;
- XMLString::copyString(typeName + nsLen + 1, SchemaSymbols::fgATTVAL_ANYTYPE);
-
- // Create and initialize 'anyType'
- fAnyType = new ComplexTypeInfo();
-
- ContentSpecNode* term = new ContentSpecNode
- (
- new QName
- (
- XMLUni::fgZeroLenString
- , XMLUni::fgZeroLenString
- , emptyNSId
- )
- , false
- );
- term->setType(ContentSpecNode::Any_Lax);
- term->setMinOccurs(0);
- term->setMaxOccurs(SchemaSymbols::XSD_UNBOUNDED);
-
- ContentSpecNode* particle = new ContentSpecNode
- (
- ContentSpecNode::ModelGroupSequence
- , term
- , 0
- );
-
- SchemaAttDef* attWildCard = new SchemaAttDef
- (
- XMLUni::fgZeroLenString
- , XMLUni::fgZeroLenString
- , emptyNSId
- , XMLAttDef::Any_Any
- , XMLAttDef::ProcessContents_Lax
- );
-
- fAnyType->setTypeName(typeName);
- fAnyType->setBaseComplexTypeInfo(fAnyType);
- fAnyType->setDerivedBy(SchemaSymbols::XSD_RESTRICTION);
- fAnyType->setContentType(SchemaElementDecl::Mixed_Complex);
- fAnyType->setContentSpec(particle);
- fAnyType->setAttWildCard(attWildCard);
-
- // register cleanup method
- anyTypeCleanup.registerCleanup(ComplexTypeInfo::reinitAnyType);
- sAnyTypeMutexRegistered = true;
- }
- }
- }
-
return fAnyType;
}
@@ -171,9 +128,9 @@
, fDatatypeValidator(0)
, fBaseComplexTypeInfo(0)
, fContentSpec(0)
- , fAttWildCard(0)
+ , fAttWildCard(0)
, fAttList(0)
- , fElements(0)
+ , fElements(0)
, fAttDefs(0)
, fContentModel(0)
, fFormattedModel(0)
@@ -199,7 +156,7 @@
delete fAttWildCard;
delete fAttDefs;
delete fAttList;
- delete fElements;
+ delete fElements;
delete fLocator;
delete fContentModel;
@@ -773,9 +730,9 @@
void ComplexTypeInfo::serialize(XSerializeEngine& serEng)
{
-
+
if (serEng.isStoring())
- {
+ {
serEng<<fAnonymous;
serEng<<fAbstract;
serEng<<fAdoptContentSpec;
@@ -802,7 +759,7 @@
serEng<<fAttList;
/***
- *
+ *
* Serialize RefVectorOf<SchemaElementDecl>* fElements;
* Serialize RefHash2KeysTableOf<SchemaAttDef>* fAttDefs;
***/
@@ -810,12 +767,12 @@
XTemplateSerializer::storeObject(fAttDefs, serEng);
/***
- * Don't serialize
+ * Don't serialize
*
* fContentModel;
* fFormattedModel;
- * fLocator;
- *
+ * fLocator;
+ *
* fContentSpecOrgURI: start of the array
* fContentSpecOrgURISize: size of the array
* fUniqueURI: the current last element in the array
@@ -850,7 +807,7 @@
serEng>>fAttList;
/***
- *
+ *
* Deserialize RefVectorOf<SchemaElementDecl>* fElements;
* Deserialize RefHash2KeysTableOf<SchemaAttDef>* fAttDefs;
***/
@@ -859,18 +816,18 @@
XTemplateSerializer::loadObject(&fAttDefs, 29, true, serEng);
/***
- * Don't deserialize
+ * Don't deserialize
*
* fFormattedModel;
- * fLocator;
- *
+ * fLocator;
+ *
* fContentSpecOrgURI: start of the array
* fContentSpecOrgURISize: size of the array
* fUniqueURI: the current last element in the array
***/
fFormattedModel = 0;
- fLocator = 0;
+ fLocator = 0;
fContentSpecOrgURI = 0;
fContentSpecOrgURISize = 0;
fUniqueURI = 0;
Modified: xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.hpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.hpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/ComplexTypeInfo.hpp Mon Mar 10 07:10:09 2008
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -145,7 +145,7 @@
/**
* Return a singleton that represents 'anyType'
*
- * @param emptyNSId the uri id of the empty namespace
+ * @param emptyNSId the uri id of the empty namespace
*/
static ComplexTypeInfo* getAnyType(unsigned int emptyNSId);
@@ -205,7 +205,7 @@
ContentSpecNode* fContentSpec;
SchemaAttDef* fAttWildCard;
SchemaAttDefList* fAttList;
- RefVectorOf<SchemaElementDecl>* fElements;
+ RefVectorOf<SchemaElementDecl>* fElements;
RefHash2KeysTableOf<SchemaAttDef>* fAttDefs;
XMLContentModel* fContentModel;
XMLCh* fFormattedModel;
@@ -214,6 +214,8 @@
MemoryManager* fMemoryManager;
static ComplexTypeInfo* fAnyType;
+
+ friend class XMLInitializer;
};
// ---------------------------------------------------------------------------
@@ -429,7 +431,7 @@
fMemoryManager->deallocate(fTypeName);//delete [] fTypeName;
fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName;
- fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri;
+ fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri;
if (typeName)
{
@@ -442,12 +444,12 @@
(length - index + 1) * sizeof(XMLCh)
); //new XMLCh[length - index + 1];
XMLString::subString(fTypeLocalName, fTypeName, index + 1, length, fMemoryManager);
-
+
fTypeUri = (XMLCh*) fMemoryManager->allocate
(
(index + 1) * sizeof(XMLCh)
); //new XMLCh[index + 1];
- XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager);
+ XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager);
}
else
{
Modified: xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.cpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.cpp Mon Mar 10 07:10:09 2008
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -29,7 +29,6 @@
#include <xercesc/util/XMLUniDefs.hpp>
#include <xercesc/util/Janitor.hpp>
#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/util/OutOfMemoryException.hpp>
@@ -64,15 +63,6 @@
chLatin_g, chLatin_l, chLatin_o, chLatin_b, chLatin_a, chLatin_l, chNull
};
-
-// ---------------------------------------------------------------------------
-// Static local data
-// ---------------------------------------------------------------------------
-static bool sGeneralAttCheckMutexRegistered = false;
-static XMLMutex* sGeneralAttCheckMutex = 0;
-static XMLRegisterCleanup sGeneralAttCheckCleanup;
-
-
// ---------------------------------------------------------------------------
// Static member data initialization
// ---------------------------------------------------------------------------
@@ -82,77 +72,38 @@
DatatypeValidator* GeneralAttributeCheck::fBooleanDV = 0;
DatatypeValidator* GeneralAttributeCheck::fAnyURIDV = 0;
-void XMLInitializer::initializeGeneralAttrCheckMap()
-{
- GeneralAttributeCheck *obj = new GeneralAttributeCheck();
- delete obj;
-}
-
-
-// ---------------------------------------------------------------------------
-// GeneralAttributeCheck: Constructors and Destructor
-// ---------------------------------------------------------------------------
-GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager)
- : fMemoryManager(manager)
- , fValidationContext(0)
- , fIDValidator(manager)
+void XMLInitializer::initializeGeneralAttributeCheck()
{
- mapElements();
+ GeneralAttributeCheck::initialize ();
}
-GeneralAttributeCheck::~GeneralAttributeCheck()
+void XMLInitializer::terminateGeneralAttributeCheck()
{
-}
+ delete GeneralAttributeCheck::fFacetsMap;
+ delete GeneralAttributeCheck::fAttMap;
+ GeneralAttributeCheck::fAttMap = 0;
+ GeneralAttributeCheck::fFacetsMap = 0;
-// ---------------------------------------------------------------------------
-// GeneralAttributeCheck: Setup methods
-// ---------------------------------------------------------------------------
-void GeneralAttributeCheck::setUpValidators() {
+ GeneralAttributeCheck::fNonNegIntDV = 0;
+ GeneralAttributeCheck::fBooleanDV = 0;
+ GeneralAttributeCheck::fAnyURIDV = 0;
+}
- DatatypeValidatorFactory dvFactory(fMemoryManager);
+void GeneralAttributeCheck::initialize()
+{
+ // Set up validators.
+ //
+ DatatypeValidatorFactory dvFactory;
- dvFactory.expandRegistryToFullSchemaSet();
fNonNegIntDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER);
fBooleanDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_BOOLEAN);
fAnyURIDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_ANYURI);
- // TO DO - add remaining valdiators
-}
-
-void GeneralAttributeCheck::mapElements()
-{
- if (!sGeneralAttCheckMutexRegistered)
- {
- if (!sGeneralAttCheckMutex)
- {
- XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex);
-
- if (!sGeneralAttCheckMutex)
- sGeneralAttCheckMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager);
- }
-
- // Use a faux scope to synchronize while we do this
- {
- XMLMutexLock lock(sGeneralAttCheckMutex);
-
- // If we got here first, then register it and set the registered flag
- if (!sGeneralAttCheckMutexRegistered)
- {
- // initialize
- setUpValidators();
- mapAttributes();
-
- // register for cleanup at Termination.
- sGeneralAttCheckCleanup.registerCleanup(GeneralAttributeCheck::reinitGeneralAttCheck);
- sGeneralAttCheckMutexRegistered = true;
- }
- }
- }
-}
-
-void GeneralAttributeCheck::mapAttributes() {
+ // TODO - add remaining valdiators
+ // Map attributes.
+ //
fAttMap = new ValueHashTableOf<unsigned short>(A_Count);
fAttMap->put((void*)SchemaSymbols::fgATT_ABSTRACT, A_Abstract);
@@ -191,6 +142,7 @@
fAttMap->put((void*)SchemaSymbols::fgATT_XPATH, A_XPath);
fFacetsMap = new ValueHashTableOf<unsigned short>(13);
+
fFacetsMap->put((void*) SchemaSymbols::fgELT_MINEXCLUSIVE, E_MinExclusive);
fFacetsMap->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, E_MinInclusive);
fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXEXCLUSIVE, E_MaxExclusive);
@@ -205,22 +157,18 @@
fFacetsMap->put((void*) SchemaSymbols::fgELT_PATTERN, E_Pattern);
}
+// ---------------------------------------------------------------------------
+// GeneralAttributeCheck: Constructors and Destructor
+// ---------------------------------------------------------------------------
+GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager)
+ : fMemoryManager(manager)
+ , fValidationContext(0)
+ , fIDValidator(manager)
+{
+}
-// -----------------------------------------------------------------------
-// Notification that lazy data has been deleted
-// -----------------------------------------------------------------------
-void
-GeneralAttributeCheck::reinitGeneralAttCheck() {
-
- delete sGeneralAttCheckMutex;
- sGeneralAttCheckMutex = 0;
- sGeneralAttCheckMutexRegistered = false;
-
- delete fAttMap;
- delete fFacetsMap;
-
- fAttMap = fFacetsMap = 0;
- fNonNegIntDV = fBooleanDV = fAnyURIDV = 0;
+GeneralAttributeCheck::~GeneralAttributeCheck()
+{
}
// ---------------------------------------------------------------------------
Modified: xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.hpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.hpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/GeneralAttributeCheck.hpp Mon Mar 10 07:10:09 2008
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -202,11 +202,6 @@
const bool isTopLevel = false,
ValueVectorOf<DOMNode*>* const nonXSAttList = 0);
- // -----------------------------------------------------------------------
- // Notification that lazy data has been deleted
- // -----------------------------------------------------------------------
- static void reinitGeneralAttCheck();
-
private:
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
@@ -215,13 +210,6 @@
GeneralAttributeCheck& operator=(const GeneralAttributeCheck&);
// -----------------------------------------------------------------------
- // Setup methods
- // -----------------------------------------------------------------------
- void setUpValidators();
- void mapElements();
- void mapAttributes();
-
- // -----------------------------------------------------------------------
// Validation methods
// -----------------------------------------------------------------------
void validate(const DOMElement* const elem, const XMLCh* const attName, const XMLCh* const attValue,
@@ -250,6 +238,11 @@
MemoryManager* fMemoryManager;
ValidationContext* fValidationContext;
IDDatatypeValidator fIDValidator;
+
+private:
+ static void initialize();
+
+ friend class XMLInitializer;
};
Modified: xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp Mon Mar 10 07:10:09 2008
@@ -77,7 +77,6 @@
fGroupElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(109, false, 128, fMemoryManager);
fNotationDeclPool = new (fMemoryManager) NameIdPool<XMLNotationDecl>(109, 128, fMemoryManager);
fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager);
- fDatatypeRegistry.expandRegistryToFullSchemaSet();
//REVISIT: use grammarPool to create
fGramDesc = new (fMemoryManager) XMLSchemaDescriptionImpl(XMLUni::fgXMLNSURIName, fMemoryManager);
Modified: xerces/c/trunk/src/xercesc/validators/schema/XSDErrorReporter.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/XSDErrorReporter.cpp?rev=635560&r1=635559&r2=635560&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/XSDErrorReporter.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/XSDErrorReporter.cpp Mon Mar 10 07:10:09 2008
@@ -5,9 +5,9 @@
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -24,7 +24,6 @@
#include <xercesc/framework/XMLValidityCodes.hpp>
#include <xercesc/framework/XMLErrorReporter.hpp>
#include <xercesc/util/XMLMsgLoader.hpp>
-#include <xercesc/util/XMLRegisterCleanup.hpp>
#include <xercesc/util/XMLInitializer.hpp>
#include <xercesc/validators/schema/XSDErrorReporter.hpp>
#include <xercesc/validators/schema/XSDLocator.hpp>
@@ -36,99 +35,27 @@
// ---------------------------------------------------------------------------
static XMLMsgLoader* gErrMsgLoader = 0;
static XMLMsgLoader* gValidMsgLoader = 0;
-static XMLMutex* sErrRprtrMutex = 0;
-static XMLRegisterCleanup errRprtrMutexCleanup;
-static XMLRegisterCleanup cleanupErrMsgLoader;
-static XMLRegisterCleanup cleanupValidMsgLoader;
-// ---------------------------------------------------------------------------
-// Local, static functions
-// ---------------------------------------------------------------------------
-static void reinitErrRprtrMutex()
-{
- delete sErrRprtrMutex;
- sErrRprtrMutex = 0;
-}
-
-static XMLMutex& getErrRprtrMutex()
-{
- if (!sErrRprtrMutex)
- {
- XMLMutexLock lockInit(XMLPlatformUtils::fgAtomicMutex);
-
- if (!sErrRprtrMutex)
- {
- sErrRprtrMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager);
- errRprtrMutexCleanup.registerCleanup(reinitErrRprtrMutex);
- }
- }
-
- return *sErrRprtrMutex;
-}
-
-static void reinitErrMsgLoader()
+void XMLInitializer::initializeXSDErrorReporter()
{
- delete gErrMsgLoader;
- gErrMsgLoader = 0;
-}
-
-static void reinitValidMsgLoader()
-{
- delete gValidMsgLoader;
- gValidMsgLoader = 0;
-}
+ gErrMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain);
-static XMLMsgLoader* getErrMsgLoader()
-{
if (!gErrMsgLoader)
- {
- XMLMutexLock lock(&getErrRprtrMutex());
-
- if (!gErrMsgLoader)
- {
- gErrMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain);
-
- if (!gErrMsgLoader)
- XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
- else
- cleanupErrMsgLoader.registerCleanup(reinitErrMsgLoader);
- }
- }
-
- return gErrMsgLoader;
-}
+ XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
+ gValidMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgValidityDomain);
-static XMLMsgLoader* getValidMsgLoader()
-{
if (!gValidMsgLoader)
- {
- XMLMutexLock lock(&getErrRprtrMutex());
-
- if (!gValidMsgLoader)
- {
- gValidMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgValidityDomain);
-
- if (!gValidMsgLoader)
- XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
- else
- cleanupValidMsgLoader.registerCleanup(reinitValidMsgLoader);
- }
- }
- return gValidMsgLoader;
+ XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain);
}
-void XMLInitializer::initializeXSDErrReporterMsgLoader()
+void XMLInitializer::terminateXSDErrorReporter()
{
- gErrMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain);
- if (gErrMsgLoader) {
- cleanupErrMsgLoader.registerCleanup(reinitErrMsgLoader);
- }
+ delete gErrMsgLoader;
+ gErrMsgLoader = 0;
- gValidMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgValidityDomain);
- if (gValidMsgLoader) {
- cleanupValidMsgLoader.registerCleanup(reinitValidMsgLoader);
- }
+ delete gValidMsgLoader;
+ gValidMsgLoader = 0;
}
// ---------------------------------------------------------------------------
@@ -159,13 +86,13 @@
//
const XMLSize_t msgSize = 1023;
XMLCh errText[msgSize + 1];
- XMLMsgLoader* msgLoader = getErrMsgLoader();
+ XMLMsgLoader* msgLoader = gErrMsgLoader;
XMLErrorReporter::ErrTypes errType = XMLErrs::errorType((XMLErrs::Codes) toEmit);
if (XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) {
errType = XMLValid::errorType((XMLValid::Codes) toEmit);
- msgLoader = getValidMsgLoader();
+ msgLoader = gValidMsgLoader;
}
if (!msgLoader->loadMsg(toEmit, errText, msgSize))
@@ -202,13 +129,13 @@
//
const XMLSize_t maxChars = 2047;
XMLCh errText[maxChars + 1];
- XMLMsgLoader* msgLoader = getErrMsgLoader();
+ XMLMsgLoader* msgLoader = gErrMsgLoader;
XMLErrorReporter::ErrTypes errType = XMLErrs::errorType((XMLErrs::Codes) toEmit);
if (XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) {
errType = XMLValid::errorType((XMLValid::Codes) toEmit);
- msgLoader = getValidMsgLoader();
+ msgLoader = gValidMsgLoader;
}
if (!msgLoader->loadMsg(toEmit, errText, maxChars, text1, text2, text3, text4, manager))
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org