void StringToIntegralValidatorXMLConverter<IntegralType>::convertValidator( const RCP<const ParameterEntryValidator> validator, XMLObject& xmlObj, const ValidatortoIDMap& /*validatorIDsMap*/) const { RCP<const StringToIntegralParameterEntryValidator<IntegralType> > castedValidator = rcp_dynamic_cast< const StringToIntegralParameterEntryValidator<IntegralType> >( validator, true); RCP<const Array<std::string> > stringValues = castedValidator->validStringValues(); RCP<const Array<std::string> > stringDocValues = castedValidator->getStringDocs(); bool hasStringDocs = !(stringDocValues.is_null()) && (stringDocValues->size() != 0); for (int i =0; i<stringValues->size(); ++i) { XMLObject stringTag(getStringTagName()); stringTag.addAttribute(getStringValueAttributeName(), (*stringValues)[i]); stringTag.addAttribute(getIntegralValueAttributeName(), castedValidator->getIntegralValue((*stringValues)[i])); if (hasStringDocs) { stringTag.addAttribute( getStringDocAttributeName(), (*stringDocValues)[i]); } xmlObj.addChild(stringTag); } xmlObj.addAttribute(getDefaultParameterAttributeName(), castedValidator->getDefaultParameterName()); xmlObj.addAttribute(getIntegralValueAttributeName(), TypeNameTraits<IntegralType>::name()); }
void StringValidatorXMLConverter::convertValidator( const RCP<const ParameterEntryValidator> validator, XMLObject& xmlObj, const ValidatortoIDMap& /*validatorIDsMap*/) const { RCP<const StringValidator> castedValidator = rcp_dynamic_cast<const StringValidator>(validator); if(!is_null(validator->validStringValues())){ Array<std::string>::const_iterator it = validator->validStringValues()->begin(); for(; it != validator->validStringValues()->end(); ++it){ XMLObject stringTag(getStringTagName()); stringTag.addAttribute(getStringValueAttributeName(), *it); xmlObj.addChild(stringTag); } } }
void XMLPathTraversalTest() { typedef std::map<std::basic_string<wchar_t>, std::basic_string<wchar_t> > AttributesType; TagElement<wchar_t> rootTag(L"root"); TagElement<wchar_t> childTag1(L"child1"); TagElement<wchar_t> childTag1_(L"child1"); TagElement<wchar_t> childTag2(L"child2"); StringElement<wchar_t> stringTag(L"string"); CommentElement<wchar_t> commentTag(L"comment"); rootTag.addChild(&childTag1); rootTag.addChild(&childTag2); rootTag.addChild(&childTag1_); childTag1.addChild(&stringTag); childTag1_.addChild(&commentTag); CPPUNIT_ASSERT(rootTag.children.size() == 3); CPPUNIT_ASSERT(dynamic_cast<TagElement<wchar_t>*> (rootTag.getChildElement(L"child1"))->getTagName() == L"child1"); CPPUNIT_ASSERT(dynamic_cast<TagElement<wchar_t>*> (rootTag.getChildElement(L"child2"))->getTagName() == L"child2"); std::vector<Element<wchar_t>*> result; XMLPath<wchar_t> path_root(L"/root"); result = path_root.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 1); CPPUNIT_ASSERT(result[0] == &rootTag); XMLPath<wchar_t> path_roots(L"/root[]"); result = path_roots.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 1); CPPUNIT_ASSERT(result[0] == &rootTag); XMLPath<wchar_t> path_child1(L"/root/child1"); result = path_child1.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 1); CPPUNIT_ASSERT(result[0] == &childTag1); XMLPath<wchar_t> path_child1s(L"/root/child1[]"); result = path_child1s.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 2); CPPUNIT_ASSERT(result[0] == &childTag1); CPPUNIT_ASSERT(result[1] == &childTag1_); XMLPath<wchar_t> path_text(L"/root/child1[]/#text"); result = path_text.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 1); CPPUNIT_ASSERT(result[0] == &stringTag); XMLPath<wchar_t> path_comment(L"/root/child1[]/#comment"); result = path_comment.evaluate(&rootTag); CPPUNIT_ASSERT(result.size() == 1); CPPUNIT_ASSERT(result[0] == &commentTag); rootTag.removeChild(&childTag1); rootTag.removeChild(&childTag2); rootTag.removeChild(&childTag1_); childTag1.removeChild(&stringTag); childTag1_.removeChild(&commentTag); }