void AbstractParam::readParameters(const YAML::Node &yamlNode) { for ( YAML::const_iterator it = yamlNode.begin(); it != yamlNode.end(); ++it ) { std::string key = READ_NODE_AS_STRING(it->first); if (key == Keys::Description) setDescription(READ_NODE_AS_STRING(it->second)); else if (key == Keys::Default) setDefaultValue(READ_NODE_AS_STRING(it->second)); else if (key == Keys::DisplayName) setDisplayName(READ_NODE_AS_STRING(it->second)); else if (key == Keys::Example) setExample(READ_NODE_AS_STRING(it->second)); else if (key == Keys::Maximum) setMaximum(READ_NODE_AS_LONG(it->second)); else if (key == Keys::Minimum) setMinimum(READ_NODE_AS_LONG(it->second)); else if (key == Keys::MaxLength) setMaxLength(READ_NODE_AS_INT(it->second)); else if (key == Keys::MinLength) setMinLength(READ_NODE_AS_INT(it->second)); else if (key == Keys::Pattern) setPattern(READ_NODE_AS_STRING(it->second)); else if (key == Keys::Repeat) setRepeat(READ_NODE_AS_BOOL(it->second)); else if (key == Keys::Required) setRequired(READ_NODE_AS_BOOL(it->second)); else if (key == Keys::Type) setType(READ_NODE_AS_STRING(it->second)); else if (key == Keys::Enum) { YAML::Node enumNode = it->second; for ( YAML::const_iterator tt = enumNode.begin(); tt != enumNode.end(); ++tt ) setEnumeration(READ_NODE_AS_STRING(*tt)); } } }
// // Assign facets // assign common facets // assign additional facet // void AbstractStringValidator::assignFacet(MemoryManager* const manager) { RefHashTableOf<KVStringPair>* facets = getFacets(); if (!facets) return; XMLCh* key; RefHashTableOfEnumerator<KVStringPair> e(facets, false, manager); while (e.hasMoreElements()) { KVStringPair pair = e.nextElement(); key = pair.getKey(); XMLCh* value = pair.getValue(); if (XMLString::equals(key, SchemaSymbols::fgELT_LENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_Len, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_Len, value, manager); setLength(val); setFacetsDefined(DatatypeValidator::FACET_LENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MINLENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_minLen, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_minLen, value, manager); setMinLength(val); setFacetsDefined(DatatypeValidator::FACET_MINLENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXLENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_maxLen, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_maxLen, value, manager); setMaxLength(val); setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { setPattern(value); if (getPattern()) setFacetsDefined(DatatypeValidator::FACET_PATTERN); // do not construct regex until needed } else if (XMLString::equals(key, SchemaSymbols::fgATT_FIXED)) { unsigned int val; bool retStatus; try { retStatus = XMLString::textToBin(value, val, fMemoryManager); } catch (RuntimeException&) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } if (!retStatus) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } setFixed(val); //no setFacetsDefined here } // // else if (XMLString::equals(key, SchemaSymbols::fgELT_SPECIAL_TOKEN)) // TODO // // Note: whitespace is taken care of by TraverseSchema. // else { assignAdditionalFacet(key, value, manager); } }//while }//end of assigneFacet()