1 31 32 package org.opencms.setup.comptest; 33 34 import org.opencms.i18n.CmsEncoder; 35 import org.opencms.setup.CmsSetupBean; 36 37 import java.io.ByteArrayInputStream ; 38 39 import org.apache.xerces.impl.Version; 40 import org.apache.xerces.parsers.DOMParser; 41 42 import org.w3c.dom.Document ; 43 import org.xml.sax.InputSource ; 44 45 54 public class CmsSetupTestXercesVersion implements I_CmsSetupTest { 55 56 57 public static final String TEST_NAME = "XML Parser"; 58 59 62 public String getName() { 63 64 return TEST_NAME; 65 } 66 67 70 public CmsSetupTestResult execute(CmsSetupBean setupBean) throws Exception { 71 72 CmsSetupTestResult testResult = new CmsSetupTestResult(this); 73 74 DOMParser parser = new DOMParser(); 75 String document = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test>test</test>\n"; 76 parser.parse(new InputSource (new ByteArrayInputStream (document.getBytes(CmsEncoder.ENCODING_UTF_8)))); 77 Document doc = parser.getDocument(); 78 79 String versionStr = null; 81 int xercesVersion = 0; 82 83 try { 84 doc.getClass().getMethod("getXmlEncoding", new Class [] {}).invoke(doc, new Object [] {}); 85 versionStr = Version.getVersion(); 86 xercesVersion = 2; 87 } catch (Throwable t) { 88 } 90 if (versionStr == null) { 91 try { 92 doc.getClass().getMethod("getEncoding", new Class [] {}).invoke(doc, new Object [] {}); 93 versionStr = "Xerces version 1"; 94 xercesVersion = 1; 95 } catch (Throwable t) { 96 } 98 } 99 100 switch (xercesVersion) { 101 case 2: 102 testResult.setResult(versionStr); 103 testResult.setHelp("OpenCms 6.0 requires Xerces version 2 to run. Usually this should be available as part of the servlet environment."); 104 testResult.setGreen(); 105 break; 106 case 1: 107 testResult.setResult(versionStr); 108 testResult.setRed(); 109 testResult.setInfo("OpenCms 6.0 requires Xerces version 2 to run, your Xerces version is 1. " 110 + "Usually Xerces 2 should be installed by default as part of the servlet environment."); 111 testResult.setHelp(testResult.getInfo()); 112 break; 113 default: 114 if (versionStr == null) { 115 versionStr = "Unknown version"; 116 } 117 testResult.setResult(versionStr); 118 testResult.setRed(); 119 testResult.setInfo("OpenCms 6.0 requires Xerces version 2 to run. " 120 + "Usually Xerces 2 should be installed by default as part of the servlet environment."); 121 testResult.setHelp(testResult.getInfo()); 122 } 123 return testResult; 124 } 125 } 126 | Popular Tags |