testcmsxmlcontentwithvfs.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,409 行 · 第 1/5 页
JAVA
1,409 行
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
deepNestedSequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(1, deepNestedSequence.getElementCount());
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(2, nestedSequence.getElementCount());
nestedSequence.removeValue(1);
deepNestedSequence.removeValue(0);
// re-create the XML content
content = xmlcontent.toString();
System.out.println(content);
xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
deepNestedSequence = xmlcontent.getValueSequence("DeepCascade", Locale.ENGLISH);
assertEquals(0, deepNestedSequence.getElementCount());
nestedSequence = xmlcontent.getValueSequence("Cascade", Locale.ENGLISH);
assertEquals(1, nestedSequence.getElementCount());
}
/**
* Tests creation of the automatic XML schema XSD.
*
* @throws Exception in case something goes wrong
*/
public void testAutoXsd() throws Exception {
org.opencms.xml.CmsXmlEntityResolver resolver = new org.opencms.xml.CmsXmlEntityResolver(null);
org.xml.sax.InputSource source = resolver.resolveEntity(
null,
org.opencms.xml.CmsXmlContentDefinition.XSD_INCLUDE_OPENCMS);
byte[] bytes = org.opencms.util.CmsFileUtil.readFully(source.getByteStream());
String string = org.opencms.i18n.CmsEncoder.createString(bytes, "UTF-8");
System.out.println(string);
}
/**
* Test using a different XML content handler then the default handler.<p>
*
* @throws Exception in case something goes wrong
*/
public void testContentHandler() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing individual content handler for XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
// unmarshal content definition
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-definition-3.xsd", CmsEncoder.ENCODING_UTF_8);
CmsXmlContentDefinition definition = CmsXmlContentDefinition.unmarshal(content, SCHEMA_SYSTEM_ID_3, resolver);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_3, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now create the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-3.xml", CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
assertTrue(xmlcontent.hasValue("Html", Locale.ENGLISH));
assertTrue(xmlcontent.hasValue("VfsLink", Locale.ENGLISH));
assertSame(definition.getContentHandler().getClass().getName(), TestXmlContentHandler.class.getName());
}
/**
* Tests locale copy, move and remove operation on an XML content.<p>
*
* @throws Exception if the test fails
*/
public void testCopyMoveRemoveLocale() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing locale copy, move and remove operation on an XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String iso = "ISO-8859-1";
String content;
CmsXmlContent xmlcontent;
// unmarshal content definition
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-definition-8.xsd", CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_8, content.getBytes(iso));
// read an existing (empty) XML content with just one locale node
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-8.xml", iso);
xmlcontent = CmsXmlContentFactory.unmarshal(content, iso, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
List locales = xmlcontent.getLocales();
assertEquals(1, locales.size());
assertEquals(Locale.ENGLISH, locales.get(0));
xmlcontent.copyLocale(Locale.ENGLISH, Locale.GERMANY);
assertEquals(2, xmlcontent.getLocales().size());
assertTrue(xmlcontent.hasLocale(Locale.ENGLISH));
assertTrue(xmlcontent.hasLocale(Locale.GERMANY));
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
xmlcontent.moveLocale(Locale.GERMANY, Locale.FRENCH);
assertEquals(2, xmlcontent.getLocales().size());
assertTrue(xmlcontent.hasLocale(Locale.ENGLISH));
assertTrue(xmlcontent.hasLocale(Locale.FRENCH));
assertFalse(xmlcontent.hasLocale(Locale.GERMANY));
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
xmlcontent.removeLocale(Locale.ENGLISH);
assertEquals(1, xmlcontent.getLocales().size());
assertTrue(xmlcontent.hasLocale(Locale.FRENCH));
assertFalse(xmlcontent.hasLocale(Locale.ENGLISH));
assertFalse(xmlcontent.hasLocale(Locale.GERMANY));
assertEquals(Locale.FRENCH, xmlcontent.getLocales().get(0));
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
}
/**
* Test default values in the appinfo node using a nested XML content schema.<p>
*
* @throws Exception in case something goes wrong
*/
public void testDefaultNested() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing for default values in nested XML content schemas");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
// unmarshal content definition
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-definition-4.xsd", CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_4, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// now create the XML content
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-4.xml", CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
System.out.println(xmlcontent.toString());
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
I_CmsXmlContentValue value1;
value1 = xmlcontent.addValue(cms, "Title", Locale.ENGLISH, 0);
assertEquals("Test", value1.getStringValue(cms));
value1 = xmlcontent.addValue(cms, "Cascade[1]/Option", Locale.ENGLISH, 0);
assertEquals("Default value from the XML", value1.getStringValue(cms));
// check exact default mappings for nested content
value1 = xmlcontent.addValue(cms, "Cascade[1]/Option", Locale.ENGLISH, 1);
assertEquals("Default value from outer content definition", value1.getStringValue(cms));
// check generic default mappings for nested content
value1 = xmlcontent.addValue(cms, "Cascade[1]/VfsLink", Locale.ENGLISH, 1);
assertEquals("/default/for/all/from/outer.txt", value1.getStringValue(cms));
value1 = xmlcontent.addValue(cms, "Cascade[1]/VfsLink", Locale.ENGLISH, 2);
assertEquals("/default/for/all/from/outer.txt", value1.getStringValue(cms));
}
/**
* Test default values after a new XML content has been created.<p>
*
* @throws Exception in case the test fails
*/
public void testDefaultOnCreation() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing default values when creating an XML content resource");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
// create a new xml content article
String xmlContentFile = "/xmlcontent/article_0005.html";
cms.createResource(xmlContentFile, OpenCmsTestCase.ARTICLE_TYPEID);
CmsFile file = cms.readFile(xmlContentFile);
String content = new String(file.getContents(), CmsEncoder.ENCODING_UTF_8);
CmsXmlContent xmlcontent = CmsXmlContentFactory.unmarshal(content, CmsEncoder.ENCODING_UTF_8, resolver);
String value = xmlcontent.getStringValue(cms, "Title", Locale.ENGLISH);
assertEquals("Default title value", value);
value = xmlcontent.getStringValue(cms, "Release", Locale.ENGLISH);
assertEquals("1114525380000", value);
}
/**
* Test default values in the appinfo node using a nested XML content schema when creating a new content.<p>
*
* The nested content definition must be non-optional, and must have non-optional element.<p>
*
* @throws Exception in case something goes wrong
*/
public void testDefaultOnCreationWithNested() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing for default values in nested XML content schemas when creating a new content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String content;
// unmarshal content definitions
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-3b.xsd",
CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_3B, content.getBytes(CmsEncoder.ENCODING_UTF_8));
content = CmsFileUtil.readFile(
"org/opencms/xml/content/xmlcontent-definition-4b.xsd",
CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_4B, content.getBytes(CmsEncoder.ENCODING_UTF_8));
// create the content definition
CmsXmlContentDefinition cd = CmsXmlContentDefinition.unmarshal(content, SCHEMA_SYSTEM_ID_4B, resolver);
CmsXmlContent xmlcontent = CmsXmlContentFactory.createDocument(cms, Locale.ENGLISH, content, cd);
String value = xmlcontent.getStringValue(cms, "Title", Locale.ENGLISH);
assertEquals("Test", value);
value = xmlcontent.getStringValue(cms, "Cascade/Option", Locale.ENGLISH);
assertEquals("Default value from outer content definition", value);
value = xmlcontent.getStringValue(cms, "Cascade/Option[2]", Locale.ENGLISH);
assertEquals("Default value from outer content definition (for option node 2)", value);
value = xmlcontent.getStringValue(cms, "Cascade/VfsLink", Locale.ENGLISH);
assertEquals("/default/for/all/from/outer.txt", value);
}
/**
* Tests the Locale settings of XMLContents with only optional elements and no element present.<p>
*
* @throws Exception if the test fails
*/
public void testEmptyLocale() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing handling of empty locale nodes in XML content");
CmsXmlEntityResolver resolver = new CmsXmlEntityResolver(cms);
String iso = "ISO-8859-1";
String content;
CmsXmlContent xmlcontent;
// unmarshal content definition
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-definition-8.xsd", CmsEncoder.ENCODING_UTF_8);
// store content definition in entitiy resolver
CmsXmlEntityResolver.cacheSystemId(SCHEMA_SYSTEM_ID_8, content.getBytes(iso));
CmsXmlContentDefinition cd1 = CmsXmlContentDefinition.unmarshal(content, SCHEMA_SYSTEM_ID_8, resolver);
// read an existing (empty) XML content with just one locale node
content = CmsFileUtil.readFile("org/opencms/xml/content/xmlcontent-8.xml", iso);
xmlcontent = CmsXmlContentFactory.unmarshal(content, iso, resolver);
// validate the XML structure
xmlcontent.validateXmlStructure(resolver);
List locales = xmlcontent.getLocales();
assertEquals(1, locales.size());
assertEquals(Locale.ENGLISH, locales.get(0));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?