// // Check facet among self // check common facets // check Additional Facet Constraint // void AbstractNumericFacetValidator::inspectFacet(MemoryManager* const manager) { int thisFacetsDefined = getFacetsDefined(); XMLNumber *thisMaxInclusive = getMaxInclusive(); XMLNumber *thisMaxExclusive = getMaxExclusive(); XMLNumber *thisMinInclusive = getMinInclusive(); XMLNumber *thisMinExclusive = getMinExclusive(); if (!thisFacetsDefined) return; // non co-existence checking // check 4.3.8.c1 error: maxInclusive + maxExclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) ) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_max_Incl_Excl, manager); // non co-existence checking // check 4.3.9.c1 error: minInclusive + minExclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) ) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_min_Incl_Excl, manager); // // minExclusive < minInclusive <= maxInclusive < maxExclusive // // check 4.3.7.c1 must: minInclusive <= maxInclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) ) { int result = compareValues(thisMinInclusive, thisMaxInclusive); if ( result == 1 || result == INDETERMINATE ) { REPORT_FACET_ERROR(thisMinInclusive , thisMaxInclusive , XMLExcepts::FACET_maxIncl_minIncl , manager) } }
AxisChar* Integer::serialize(const xsd__integer* value) throw (AxisSoapException) { #ifdef ENABLE_AXISTRACE if (axiscpp::AxisTrace::isTraceOn()) axiscpp::AxisTrace::traceEntry("Integer", "serialize", this, 1, TRACETYPE_POINTER, sizeof(xsd__integer), ((void*)&value)); /* AUTOINSERTED TRACE */ #endif MinInclusive* minInclusive = getMinInclusive(); if (minInclusive->isSet()) { if ( *value < minInclusive->getMinInclusiveAsLONGLONG() ) { AxisString exceptionMessage = "Value to be serialized is less than MinInclusive specified for this type. MinInclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, minInclusive->getMinInclusiveAsLONGLONG()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete minInclusive; MinExclusive* minExclusive = getMinExclusive(); if (minExclusive->isSet()) { if ( *value <= minExclusive->getMinExclusiveAsLONGLONG() ) { AxisString exceptionMessage = "Value to be serialized is less than or equal to MinExclusive specified for this type. MinExclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, minExclusive->getMinExclusiveAsLONGLONG()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete minExclusive; MaxInclusive* maxInclusive = getMaxInclusive(); if (maxInclusive->isSet()) { if ( *value > maxInclusive->getMaxInclusiveAsLONGLONG() ) { AxisString exceptionMessage = "Value to be serialized is greater than MaxInclusive specified for this type. MaxInclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, maxInclusive->getMaxInclusiveAsLONGLONG()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete maxInclusive; MaxExclusive* maxExclusive = getMaxExclusive(); if (maxExclusive->isSet()) { if ( *value >= maxExclusive->getMaxExclusiveAsLONGLONG() ) { AxisString exceptionMessage = "Value to be serialized is greater than or equal to MaxExclusive specified for this type. MaxExclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, maxExclusive->getMaxExclusiveAsLONGLONG()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, PRINTF_LONGLONG_FORMAT_SPECIFIER, *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete maxExclusive; AxisString formatSpecifier = "%"; int valueSize = 80; TotalDigits* totalDigits = getTotalDigits(); if (totalDigits->isSet()) { valueSize = totalDigits->getTotalDigits() + 1; AxisChar* digits = new char[10]; AxisSprintf (digits, 10, "%i", totalDigits->getTotalDigits()); formatSpecifier += digits; delete [] digits; } delete totalDigits; formatSpecifier += PRINTF_LONGLONG_FORMAT_SPECIFIER_CHARS; AxisChar* serializedValue = new char[valueSize]; AxisSprintf (serializedValue, valueSize, formatSpecifier.c_str(), *value); IAnySimpleType::serialize(serializedValue); delete [] serializedValue; { #ifdef ENABLE_AXISTRACE AxisChar* traceRet = (m_Buf); if (axiscpp::AxisTrace::isTraceOn()) axiscpp::AxisTrace::traceExit("Integer", "serialize", this, 0, TRACETYPE_STRING, 0, ((void*)&traceRet)); /* AUTOINSERTED TRACE */ return traceRet; #else return m_Buf; #endif } }
AxisChar* Float::serialize(const xsd__float* value) throw (AxisSoapException) { #ifdef ENABLE_AXISTRACE if (axiscpp::AxisTrace::isTraceOn()) axiscpp::AxisTrace::traceEntry("Float", "serialize", this, 1, TRACETYPE_POINTER, sizeof(xsd__float), ((void*)&value)); /* AUTOINSERTED TRACE */ #endif MinInclusive* minInclusive = getMinInclusive(); if (minInclusive->isSet()) { if ( *value < static_cast<float>(minInclusive->getMinInclusiveAsDouble()) ) { AxisString exceptionMessage = "Value to be serialized is less than MinInclusive specified for this type. MinInclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, "%f", minInclusive->getMinInclusiveAsDouble()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, "%f", *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete minInclusive; MinExclusive* minExclusive = getMinExclusive(); if (minExclusive->isSet()) { if ( *value <= static_cast<float>(minExclusive->getMinExclusiveAsDouble()) ) { AxisString exceptionMessage = "Value to be serialized is less than or equal to MinExclusive specified for this type. MinExclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, "%f", minExclusive->getMinExclusiveAsDouble()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, "%f", *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete minExclusive; MaxInclusive* maxInclusive = getMaxInclusive(); if (maxInclusive->isSet()) { if ( *value > static_cast<float>(maxInclusive->getMaxInclusiveAsDouble()) ) { AxisString exceptionMessage = "Value to be serialized is greater than MaxInclusive specified for this type. MaxInclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, "%f", maxInclusive->getMaxInclusiveAsDouble()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, "%f", *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete maxInclusive; MaxExclusive* maxExclusive = getMaxExclusive(); if (maxExclusive->isSet()) { if ( *value >= static_cast<float>(maxExclusive->getMaxExclusiveAsDouble()) ) { AxisString exceptionMessage = "Value to be serialized is greater than or equal to MaxExclusive specified for this type. MaxExclusive = "; AxisChar* length = new AxisChar[25]; sprintf(length, "%f", maxExclusive->getMaxExclusiveAsDouble()); exceptionMessage += length; exceptionMessage += ", Value = "; sprintf(length, "%f", *value); exceptionMessage += length; exceptionMessage += "."; delete [] length; throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR, const_cast<AxisChar*>(exceptionMessage.c_str())); } } delete maxExclusive; AxisChar* serializedValue = new char[80]; AxisSprintf (serializedValue, 80, "%.6g", *value); IAnySimpleType::serialize(serializedValue); delete [] serializedValue; { #ifdef ENABLE_AXISTRACE AxisChar* traceRet = (m_Buf); if (axiscpp::AxisTrace::isTraceOn()) axiscpp::AxisTrace::traceExit("Float", "serialize", this, 0, TRACETYPE_STRING, 0, ((void*)&traceRet)); /* AUTOINSERTED TRACE */ return traceRet; #else return m_Buf; #endif } }