You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/09/12 23:25:46 UTC
svn commit: r1881669 [2/2] - in
/xmlbeans/trunk/src/main/java/org/apache/xmlbeans: ./ impl/tool/ impl/util/
impl/values/
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XSTCTester.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XSTCTester.java?rev=1881669&r1=1881668&r2=1881669&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XSTCTester.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/tool/XSTCTester.java Sat Sep 12 23:25:46 2020
@@ -15,38 +15,26 @@
package org.apache.xmlbeans.impl.tool;
-import org.apache.xmlbeans.SystemProperties;
-import org.apache.xmlbeans.impl.xb.ltgfmt.TestsDocument;
+import org.apache.xmlbeans.*;
import org.apache.xmlbeans.impl.xb.ltgfmt.FileDesc;
-import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlError;
-import org.apache.xmlbeans.XmlCalendar;
+import org.apache.xmlbeans.impl.xb.ltgfmt.TestsDocument;
import java.io.File;
-import java.io.PrintWriter;
-import java.io.FileWriter;
import java.io.IOException;
-import java.util.Collection;
-import java.util.ArrayList;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Date;
-import java.util.regex.Pattern;
+import java.io.PrintWriter;
import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.*;
+import java.util.regex.Pattern;
-public class XSTCTester
-{
- public static void printUsage()
- {
+public class XSTCTester {
+ public static void printUsage() {
System.out.println("Usage: xstc [-showpass] [-errcode] foo_LTGfmt.xml ...");
}
- public static void main(String[] args) throws IOException
- {
- Set flags = new HashSet();
+ public static void main(String[] args) throws IOException {
+ Set<String> flags = new HashSet<>();
flags.add("h");
flags.add("help");
flags.add("usage");
@@ -55,27 +43,25 @@ public class XSTCTester
flags.add("errcode");
long start = System.currentTimeMillis();
-
+
CommandLine cl = new CommandLine(args, flags, Collections.EMPTY_SET);
- if (cl.getOpt("h") != null || cl.getOpt("help") != null || cl.getOpt("usage") != null)
- {
+ if (cl.getOpt("h") != null || cl.getOpt("help") != null || cl.getOpt("usage") != null) {
printUsage();
System.exit(0);
return;
}
- if (cl.getOpt("version") != null)
- {
+ if (cl.getOpt("version") != null) {
CommandLine.printVersion();
System.exit(0);
return;
}
String[] badopts = cl.getBadOpts();
- if (badopts.length > 0)
- {
- for (int i = 0; i < badopts.length; i++)
- System.out.println("Unrecognized option: " + badopts[i]);
+ if (badopts.length > 0) {
+ for (String badopt : badopts) {
+ System.out.println("Unrecognized option: " + badopt);
+ }
printUsage();
System.exit(0);
return;
@@ -90,103 +76,101 @@ public class XSTCTester
boolean errcode = (cl.getOpt("errcode") != null);
File[] allFiles = cl.getFiles();
- Collection ltgFiles = new ArrayList();
+ Collection<File> ltgFiles = new ArrayList<>();
Harness harness = new XMLBeanXSTCHarness();
-
- for (int i = 0; i < allFiles.length; i++)
- {
- if (allFiles[i].getName().indexOf("LTG") >= 0)
- ltgFiles.add(allFiles[i]);
+
+ for (File allFile : allFiles) {
+ if (allFile.getName().contains("LTG")) {
+ ltgFiles.add(allFile);
+ }
}
-
+
File resultsFile = new File("out.html");
- PrintWriter writer = new PrintWriter(new FileWriter(resultsFile));
- writer.println("<html>");
- writer.println("<style>td {border-bottom: 1px solid black} xmp {white-space: normal; word-wrap: break-word; word-break: break-all} </style>");
- writer.println("<body>");
-
- writer.println("<script language='JavaScript' type='text/javascript'>");
- writer.println("var w;");
- writer.println("function openWindow(schema, instance) {");
- writer.println(" if (w == null) {");
- writer.println(" w = window.open('about:blank', 'xstc');");
- writer.println(" }");
- writer.println(" if (w.closed) {");
- writer.println(" w = window.open('about:blank', 'xstc');");
- writer.println(" }");
- writer.println(" w.document.open();");
- writer.println(" w.document.write(\"<frameset rows=*,*><frame src='\" + schema + \"'><frame src='\" + instance + \"'></frameset>\");");
- writer.println(" w.document.close();");
- writer.println(" w.focus();");
- writer.println("}");
- writer.println("</script>");
-
- writer.println("<h1>XML Schema Test Collection Results</h1>");
- writer.println("<p>Run on " + (new XmlCalendar(new Date())) + "</p>");
- writer.println("<p>Values in schema or instance valid columns are results from compiling or validating respectively.");
- writer.println("Red or orange background mean the test failed.</p>");
- writer.println("<table style='border: 1px solid black' cellpadding=0 cellspacing=0>");
- writer.println("<tr><td witdh=10%>id</td><td width=70%>Description</td><td width=10%>sch v</td><td width=10%>ins v</td></tr>");
- int failures = 0;
- int cases = 0;
- for (Iterator i = ltgFiles.iterator(); i.hasNext(); )
- {
- File ltgFile = (File)i.next();
- System.out.println("Processing test cases in " + ltgFile);
- Collection ltgErrors = new ArrayList();
- TestCase[] testCases = parseLTGFile(ltgFile, ltgErrors);
- Collection results = new ArrayList();
- if (testCases != null) for (int j = 0; j < testCases.length; j++)
- {
- TestCaseResult result = new TestCaseResult();
- result.testCase = testCases[j];
- harness.runTestCase(result);
- cases += 1;
- if (!result.succeeded(errcode))
- failures += 1;
- else if (!showpass)
- continue;
- results.add(result);
- }
- writer.println("<tr><td colspan=4 bgcolor=skyblue>" + ltgFile + "</td></tr>");
- if (!ltgErrors.isEmpty())
- {
- writer.println("<tr><td>Errors within the LTG file:");
- writer.println("<xmp>");
- for (Iterator j = ltgErrors.iterator(); j.hasNext(); )
- writer.println(j.next());
- writer.println("</xmp>");
- writer.println("</td></tr>");
- }
- else
- {
- if (results.size() == 0)
- writer.println("<tr><td colspan=4 bgcolor=green>Nothing to report</td></tr>");
- }
- if (results == null)
- continue;
- for (Iterator j = results.iterator(); j.hasNext() ;)
- {
- summarizeResultAsHTMLTableRows((TestCaseResult)j.next(), writer, errcode);
- }
- }
- writer.println("<tr><td colspan=4>Summary: " + failures + " failures out of " + cases + " cases run.</td></tr>");
- writer.println("</table>");
- writer.close();
-
+ try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(resultsFile.toPath(), StandardCharsets.ISO_8859_1))) {
+ writer.println("<html>");
+ writer.println("<style>td {border-bottom: 1px solid black} xmp {white-space: normal; word-wrap: break-word; word-break: break-all} </style>");
+ writer.println("<body>");
+
+ writer.println("<script language='JavaScript' type='text/javascript'>");
+ writer.println("var w;");
+ writer.println("function openWindow(schema, instance) {");
+ writer.println(" if (w == null) {");
+ writer.println(" w = window.open('about:blank', 'xstc');");
+ writer.println(" }");
+ writer.println(" if (w.closed) {");
+ writer.println(" w = window.open('about:blank', 'xstc');");
+ writer.println(" }");
+ writer.println(" w.document.open();");
+ writer.println(" w.document.write(\"<frameset rows=*,*><frame src='\" + schema + \"'><frame src='\" + instance + \"'></frameset>\");");
+ writer.println(" w.document.close();");
+ writer.println(" w.focus();");
+ writer.println("}");
+ writer.println("</script>");
+
+ writer.println("<h1>XML Schema Test Collection Results</h1>");
+ writer.println("<p>Run on " + (new XmlCalendar(new Date())) + "</p>");
+ writer.println("<p>Values in schema or instance valid columns are results from compiling or validating respectively.");
+ writer.println("Red or orange background mean the test failed.</p>");
+ writer.println("<table style='border: 1px solid black' cellpadding=0 cellspacing=0>");
+ writer.println("<tr><td witdh=10%>id</td><td width=70%>Description</td><td width=10%>sch v</td><td width=10%>ins v</td></tr>");
+ int failures = 0;
+ int cases = 0;
+ for (File ltgFile : ltgFiles) {
+ System.out.println("Processing test cases in " + ltgFile);
+ Collection<String> ltgErrors = new ArrayList<>();
+ TestCase[] testCases = parseLTGFile(ltgFile, ltgErrors);
+ final Collection<TestCaseResult> results = new ArrayList<>();
+ if (testCases != null) {
+ for (TestCase testCase : testCases) {
+ TestCaseResult result = new TestCaseResult();
+ result.testCase = testCase;
+ harness.runTestCase(result);
+ cases += 1;
+ if (!result.succeeded(errcode)) {
+ failures += 1;
+ } else if (!showpass) {
+ continue;
+ }
+ results.add(result);
+ }
+ }
+ writer.println("<tr><td colspan=4 bgcolor=skyblue>" + ltgFile + "</td></tr>");
+ if (!ltgErrors.isEmpty()) {
+ writer.println("<tr><td>Errors within the LTG file:");
+ writer.println("<xmp>");
+ for (String ltgError : ltgErrors) {
+ writer.println(ltgError);
+ }
+ writer.println("</xmp>");
+ writer.println("</td></tr>");
+ } else {
+ if (results.size() == 0) {
+ writer.println("<tr><td colspan=4 bgcolor=green>Nothing to report</td></tr>");
+ }
+ }
+ for (TestCaseResult result : results) {
+ summarizeResultAsHTMLTableRows(result, writer, errcode);
+ }
+ }
+ writer.println("<tr><td colspan=4>Summary: " + failures + " failures out of " + cases + " cases run.</td></tr>");
+ writer.println("</table>");
+ }
+
long finish = System.currentTimeMillis();
- System.out.println("Time run tests: " + ((double)(finish - start) / 1000.0) + " seconds" );
-
+ System.out.println("Time run tests: " + ((double) (finish - start) / 1000.0) + " seconds");
+
// Launch results
System.out.println("Results output to " + resultsFile);
- if (SystemProperties.getProperty("os.name").toLowerCase().indexOf("windows") >= 0)
+ String osName = SystemProperties.getProperty("os.name");
+ assert (osName != null);
+ if (osName.toLowerCase(Locale.ROOT).contains("windows")) {
Runtime.getRuntime().exec("cmd /c start iexplore \"" + resultsFile.getAbsolutePath() + "\"");
- else
+ } else {
Runtime.getRuntime().exec("mozilla file://" + resultsFile.getAbsolutePath());
+ }
}
-
- public static class TestCase
- {
+
+ public static class TestCase {
private File ltgFile;
private String id;
private String origin;
@@ -199,176 +183,152 @@ public class XSTCTester
private boolean rvExpected;
private String errorCode;
- public File getLtgFile()
- {
+ public File getLtgFile() {
return ltgFile;
}
- public String getId()
- {
+ public String getId() {
return id;
}
- public String getOrigin()
- {
+ public String getOrigin() {
return origin;
}
- public String getDescription()
- {
+ public String getDescription() {
return description;
}
- public File getSchemaFile()
- {
+ public File getSchemaFile() {
return schemaFile;
}
- public File getInstanceFile()
- {
+ public File getInstanceFile() {
return instanceFile;
}
- public File getResourceFile()
- {
+ public File getResourceFile() {
return resourceFile;
}
- public boolean isSvExpected()
- {
+ public boolean isSvExpected() {
return svExpected;
}
- public boolean isIvExpected()
- {
+ public boolean isIvExpected() {
return ivExpected;
}
- public boolean isRvExpected()
- {
+ public boolean isRvExpected() {
return rvExpected;
}
- public String getErrorCode()
- {
+ public String getErrorCode() {
return errorCode;
}
}
-
- public static class TestCaseResult
- {
+
+ public static class TestCaseResult {
private TestCase testCase;
private boolean svActual;
- private Collection svMessages = new ArrayList();
+ private final Collection<XmlError> svMessages = new ArrayList<>();
private boolean ivActual;
- private Collection ivMessages = new ArrayList();
+ private final Collection<XmlError> ivMessages = new ArrayList<>();
private boolean crash;
- public TestCase getTestCase()
- {
+ public TestCase getTestCase() {
return testCase;
}
- public boolean isSvActual()
- {
+ public boolean isSvActual() {
return svActual;
}
- public void setSvActual(boolean svActual)
- {
+ public void setSvActual(boolean svActual) {
this.svActual = svActual;
}
- public boolean isIvActual()
- {
+ public boolean isIvActual() {
return ivActual;
}
- public void setIvActual(boolean ivActual)
- {
+ public void setIvActual(boolean ivActual) {
this.ivActual = ivActual;
}
- public Collection getSvMessages()
- {
+ public Collection<XmlError> getSvMessages() {
return Collections.unmodifiableCollection(svMessages);
}
- public void addSvMessages(Collection svMessages)
- {
+ public void addSvMessages(Collection<XmlError> svMessages) {
this.svMessages.addAll(svMessages);
}
- public Collection getIvMessages()
- {
+ public Collection<XmlError> getIvMessages() {
return Collections.unmodifiableCollection(ivMessages);
}
- public void addIvMessages(Collection ivMessages)
- {
+ public void addIvMessages(Collection<XmlError> ivMessages) {
this.ivMessages.addAll(ivMessages);
}
-
- public void setCrash(boolean crash)
- {
+
+ public void setCrash(boolean crash) {
this.crash = crash;
}
-
- public boolean isCrash()
- {
+
+ public boolean isCrash() {
return crash;
}
-
- public boolean succeeded(boolean errcode)
- {
+
+ public boolean succeeded(boolean errcode) {
boolean success = !crash &&
- (isIvActual() == testCase.isIvExpected()) &&
- (isSvActual() == testCase.isSvExpected());
- if (errcode && testCase.getErrorCode() != null)
+ (isIvActual() == testCase.isIvExpected()) &&
+ (isSvActual() == testCase.isSvExpected());
+ if (errcode && testCase.getErrorCode() != null) {
success &= errorReported(testCase.getErrorCode(), svMessages) || errorReported(testCase.getErrorCode(), ivMessages);
+ }
return success;
}
}
-
- public static interface Harness
- {
- public void runTestCase(TestCaseResult result);
+
+ public interface Harness {
+ void runTestCase(TestCaseResult result);
}
-
- public static String makeHTMLLink(File file, boolean value)
- {
- if (file == null)
+
+ public static String makeHTMLLink(File file, boolean value) {
+ if (file == null) {
return " ";
+ }
URI uri = file.getAbsoluteFile().toURI();
- return "<a href=\"" + uri + "\" target=_blank>" + Boolean.toString(value) + "</a>";
+ return "<a href=\"" + uri + "\" target=_blank>" + value + "</a>";
}
-
+
private static final Pattern leadingSpace = Pattern.compile("^\\s+", Pattern.MULTILINE);
-
- public static String makeHTMLDescription(TestCase testCase)
- {
+
+ public static String makeHTMLDescription(TestCase testCase) {
StringBuilder sb = new StringBuilder();
sb.append("<a class=noline href='javascript:openWindow(\"");
- if (testCase.getSchemaFile() == null)
+ if (testCase.getSchemaFile() == null) {
sb.append("about:No schema");
- else
+ } else {
sb.append(testCase.getSchemaFile().getAbsolutePath().replaceAll("\\\\", "\\\\\\\\"));
+ }
sb.append("\", \"");
- if (testCase.getInstanceFile() == null)
+ if (testCase.getInstanceFile() == null) {
sb.append("about:No instance");
- else
+ } else {
sb.append(testCase.getInstanceFile().getAbsolutePath().replaceAll("\\\\", "\\\\\\\\"));
+ }
sb.append("\")'><xmp>");
sb.append(leadingSpace.matcher(testCase.getDescription()).replaceAll(""));
sb.append("</xmp></a>");
return sb.toString();
}
-
- public static void summarizeResultAsHTMLTableRows(TestCaseResult result, PrintWriter out, boolean errcode)
- {
+
+ public static void summarizeResultAsHTMLTableRows(TestCaseResult result, PrintWriter out, boolean errcode) {
TestCase testCase = result.getTestCase();
boolean errorRow = errcode && testCase.getErrorCode() != null;
@@ -377,131 +337,134 @@ public class XSTCTester
boolean sRight = testCase.getSchemaFile() == null || testCase.isSvExpected() == result.isSvActual();
boolean iRight = testCase.getInstanceFile() == null || testCase.isIvExpected() == result.isIvActual();
boolean codeRight = true;
- if (errorRow)
+ if (errorRow) {
codeRight = (errorReported(testCase.getErrorCode(), result.svMessages) || errorReported(testCase.getErrorCode(), result.ivMessages));
+ }
out.println(result.isCrash() ? "<tr bgcolor=black color=white>" : "<tr>");
int idRowSpan = 1 + (errorRow ? 1 : 0) + (messagesRow ? 1 : 0);
out.println("<td rowspan=" + idRowSpan + " valign=top>" + testCase.getId() + "</td>");
out.println("<td valign=top>" + makeHTMLDescription(testCase) + "</td>");
String sLinks;
- if (testCase.getResourceFile() == null)
+ if (testCase.getResourceFile() == null) {
sLinks = makeHTMLLink(testCase.getSchemaFile(), result.isSvActual());
- else
+ } else {
sLinks = makeHTMLLink(testCase.getSchemaFile(), result.isSvActual()) + "<br>" + makeHTMLLink(testCase.getResourceFile(), result.isSvActual());
-
+ }
+
out.println((sRight ? "<td valign=top>" : result.isSvActual() ? "<td bgcolor=orange valign=top>" : "<td bgcolor=red valign=top>") + sLinks + "</td>");
out.println((iRight ? "<td valign=top>" : result.isIvActual() ? "<td bgcolor=orange valign=top>" : "<td bgcolor=red valign=top>") + makeHTMLLink(testCase.getInstanceFile(), result.isIvActual()) + "</td>");
out.println("</tr>");
- if (errorRow)
- {
+ if (errorRow) {
out.println("<tr>");
out.println((codeRight ? "<td colspan=4 valid=top>" : "<td colspan=4 bgcolor=orange valign=top>") + "expected error: " + testCase.getErrorCode() + "</td>");
out.println("</tr>");
}
- if (messagesRow)
- {
- if (!result.succeeded(errcode))
+ if (messagesRow) {
+ if (!result.succeeded(errcode)) {
out.println("<tr><td colspan=4 bgcolor=yellow><xmp>");
- else
+ } else {
out.println("<tr><td colspan=4><xmp>");
- for (Iterator j = result.getSvMessages().iterator(); j.hasNext(); )
- out.println(j.next());
- for (Iterator j = result.getIvMessages().iterator(); j.hasNext(); )
- out.println(j.next());
+ }
+ for (XmlError s : result.getSvMessages()) {
+ out.println(s);
+ }
+ for (XmlError xmlError : result.getIvMessages()) {
+ out.println(xmlError);
+ }
out.println("</xmp></tr></td>");
}
}
-
- public static TestCase[] parseLTGFile(File ltgFile, Collection outerErrors)
- {
- Collection errors = new ArrayList();
- try
- {
+
+ public static TestCase[] parseLTGFile(File ltgFile, Collection<String> outerErrors) {
+ Collection<XmlError> errors = new ArrayList<>();
+ try {
XmlOptions ltgOptions = new XmlOptions();
ltgOptions.setLoadSubstituteNamespaces(Collections.singletonMap("", "http://www.bea.com/2003/05/xmlbean/ltgfmt"));
ltgOptions.setErrorListener(errors);
ltgOptions.setLoadLineNumbers();
TestsDocument doc = TestsDocument.Factory.parse(ltgFile, ltgOptions);
- if (!doc.validate(ltgOptions))
+ if (!doc.validate(ltgOptions)) {
throw new Exception("Document " + ltgFile + " not valid.");
-
+ }
+
org.apache.xmlbeans.impl.xb.ltgfmt.TestCase[] testCases = doc.getTests().getTestArray();
-
- Collection result = new ArrayList();
- for (int i = 0; i < testCases.length; i++)
- {
+
+ Collection<TestCase> result = new ArrayList<>();
+ for (org.apache.xmlbeans.impl.xb.ltgfmt.TestCase testCase : testCases) {
TestCase newCase = new TestCase();
newCase.ltgFile = ltgFile;
- newCase.id = testCases[i].getId();
- newCase.origin = testCases[i].getOrigin();
- newCase.description = testCases[i].getDescription();
- FileDesc[] filedescs = testCases[i].getFiles().getFileArray();
- testCases[i].getOrigin();
- for (int j = 0; j < filedescs.length; j++)
- {
- String dir = filedescs[j].getFolder();
- String filename = filedescs[j].getFileName();
+ newCase.id = testCase.getId();
+ newCase.origin = testCase.getOrigin();
+ newCase.description = testCase.getDescription();
+ FileDesc[] filedescs = testCase.getFiles().getFileArray();
+ testCase.getOrigin();
+ for (FileDesc filedesc : filedescs) {
+ String dir = filedesc.getFolder();
+ String filename = filedesc.getFileName();
File theFile = new File(ltgFile.getParentFile(), dir + "/" + filename);
- if (!theFile.exists() || !theFile.isFile() || !theFile.canRead())
- {
- outerErrors.add(XmlError.forObject("Can't read file " + theFile, filedescs[j]).toString());
+ if (!theFile.exists() || !theFile.isFile() || !theFile.canRead()) {
+ outerErrors.add(XmlError.forObject("Can't read file " + theFile, filedesc).toString());
continue;
}
-
- switch (filedescs[j].getRole().intValue())
- {
+
+ switch (filedesc.getRole().intValue()) {
case FileDesc.Role.INT_INSTANCE:
- if (newCase.instanceFile != null)
- outerErrors.add(XmlError.forObject("More than one instance file speicifed - ignoring all but last", filedescs[j]).toString());
+ if (newCase.instanceFile != null) {
+ outerErrors.add(XmlError.forObject("More than one instance file speicifed - ignoring all but last", filedesc).toString());
+ }
newCase.instanceFile = theFile;
- newCase.ivExpected = filedescs[j].getValidity();
+ newCase.ivExpected = filedesc.getValidity();
break;
-
+
case FileDesc.Role.INT_SCHEMA:
- if (newCase.schemaFile != null)
- outerErrors.add(XmlError.forObject("More than one schema file speicifed - ignoring all but last", filedescs[j]).toString());
+ if (newCase.schemaFile != null) {
+ outerErrors.add(XmlError.forObject("More than one schema file speicifed - ignoring all but last", filedesc).toString());
+ }
newCase.schemaFile = theFile;
- newCase.svExpected = filedescs[j].getValidity();
+ newCase.svExpected = filedesc.getValidity();
break;
-
+
case FileDesc.Role.INT_RESOURCE:
- if (newCase.resourceFile != null)
- outerErrors.add(XmlError.forObject("More than one resource file speicifed - ignoring all but last", filedescs[j]).toString());
+ if (newCase.resourceFile != null) {
+ outerErrors.add(XmlError.forObject("More than one resource file speicifed - ignoring all but last", filedesc).toString());
+ }
newCase.resourceFile = theFile;
- newCase.rvExpected = filedescs[j].getValidity();
+ newCase.rvExpected = filedesc.getValidity();
break;
-
+
default:
- throw new XmlException(XmlError.forObject("Unexpected file role", filedescs[j]));
+ throw new XmlException(XmlError.forObject("Unexpected file role", filedesc));
}
- if (filedescs[j].getCode() != null)
- newCase.errorCode = filedescs[j].getCode().getID();
+ if (filedesc.getCode() != null) {
+ newCase.errorCode = filedesc.getCode().getID();
+ }
}
result.add(newCase);
}
- return (TestCase[])result.toArray(new TestCase[result.size()]);
- }
- catch (Exception e)
- {
- if (errors.isEmpty())
+ return result.toArray(new TestCase[0]);
+ } catch (Exception e) {
+ if (errors.isEmpty()) {
outerErrors.add(e.getMessage());
- else for (Iterator i = errors.iterator(); i.hasNext(); )
- outerErrors.add(i.next().toString());
+ } else {
+ for (XmlError error : errors) {
+ outerErrors.add(error.toString());
+ }
+ }
return null;
}
}
- public static boolean errorReported(String errorCode, Collection set)
- {
- if (errorCode == null || set == null || set.size() == 0)
+ public static boolean errorReported(String errorCode, Collection<XmlError> set) {
+ if (errorCode == null || set == null || set.size() == 0) {
return false;
+ }
- for (Iterator i = set.iterator(); i.hasNext(); )
- {
- if (errorCode.equals(((XmlError)i.next()).getErrorCode()))
+ for (XmlError xmlError : set) {
+ if (errorCode.equals(xmlError.getErrorCode())) {
return true;
+ }
}
return false;
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/FilerImpl.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/FilerImpl.java?rev=1881669&r1=1881668&r2=1881669&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/FilerImpl.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/util/FilerImpl.java Sat Sep 12 23:25:46 2020
@@ -1,77 +1,66 @@
/* Copyright 2004 The Apache Software Foundation
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.xmlbeans.impl.util;
import org.apache.xmlbeans.Filer;
+import org.apache.xmlbeans.impl.repackage.Repackager;
-import java.io.IOException;
-import java.io.File;
-import java.io.Writer;
-import java.io.FileReader;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
+import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CodingErrorAction;
-import java.util.Set;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.ArrayList;
-
-import org.apache.xmlbeans.impl.repackage.Repackager;
+import java.util.Set;
/**
* This implementation of Filer writes to disk.
*/
-public class FilerImpl implements Filer
-{
- private File classdir;
- private File srcdir;
- private Repackager repackager;
- private boolean verbose;
- private List sourceFiles;
- private boolean incrSrcGen;
- private Set seenTypes;
+public class FilerImpl implements Filer {
+ private final File classdir;
+ private final File srcdir;
+ private final Repackager repackager;
+ private final boolean verbose;
+ private final List<File> sourceFiles;
+ private final boolean incrSrcGen;
+ private Set<String> seenTypes;
private static final Charset CHARSET;
- static
- {
+ static {
Charset temp = null;
- try
- {
+ try {
temp = Charset.forName(System.getProperty("file.encoding"));
+ } catch (Exception ignored) {
}
- catch (Exception e) {}
CHARSET = temp;
}
- public FilerImpl(File classdir, File srcdir, Repackager repackager, boolean verbose, boolean incrSrcGen)
- {
+ public FilerImpl(File classdir, File srcdir, Repackager repackager, boolean verbose, boolean incrSrcGen) {
this.classdir = classdir;
this.srcdir = srcdir;
this.repackager = repackager;
this.verbose = verbose;
- this.sourceFiles = (sourceFiles != null ? sourceFiles : new ArrayList());
+ this.sourceFiles = new ArrayList<>();
this.incrSrcGen = incrSrcGen;
- if (this.incrSrcGen)
- seenTypes = new HashSet();
+ if (this.incrSrcGen) {
+ seenTypes = new HashSet<>();
+ }
}
/**
@@ -79,18 +68,17 @@ public class FilerImpl implements Filer
*
* @param typename fully qualified type name
* @return a stream to write the type to
- * @throws java.io.IOException
*/
- public OutputStream createBinaryFile(String typename) throws IOException
- {
- if (verbose)
+ public OutputStream createBinaryFile(String typename) throws IOException {
+ if (verbose) {
System.err.println("created binary: " + typename);
+ }
// KHK: for now the typename will already be a relative filename for the binary
//String filename = typename.replace('.', File.separatorChar) + ".xsb";
File source = new File(classdir, typename);
source.getParentFile().mkdirs();
- return new FileOutputStream( source );
+ return new FileOutputStream(source);
}
/**
@@ -98,57 +86,51 @@ public class FilerImpl implements Filer
*
* @param typename fully qualified type name
* @return a stream to write the type to
- * @throws java.io.IOException
*/
- public Writer createSourceFile(String typename) throws IOException
- {
- if (incrSrcGen)
+ public Writer createSourceFile(String typename) throws IOException {
+ if (incrSrcGen) {
seenTypes.add(typename);
+ }
- if (typename.indexOf('$') > 0)
- {
+ if (typename.indexOf('$') > 0) {
typename =
- typename.substring( 0, typename.lastIndexOf( '.' ) ) + "." +
- typename.substring( typename.indexOf( '$' ) + 1 );
+ typename.substring(0, typename.lastIndexOf('.')) + "." +
+ typename.substring(typename.indexOf('$') + 1);
}
String filename = typename.replace('.', File.separatorChar) + ".java";
File sourcefile = new File(srcdir, filename);
sourcefile.getParentFile().mkdirs();
- if (verbose)
+ if (verbose) {
System.err.println("created source: " + sourcefile.getAbsolutePath());
+ }
sourceFiles.add(sourcefile);
- if (incrSrcGen && sourcefile.exists())
- {
+ if (incrSrcGen && sourcefile.exists()) {
// Generate the file in a buffer and then compare it to the
// file already on disk
return new IncrFileWriter(sourcefile, repackager);
- }
- else
- {
+ } else {
return repackager == null ?
- (Writer) writerForFile( sourcefile ) :
- (Writer) new RepackagingWriter( sourcefile, repackager );
+ writerForFile(sourcefile) :
+ new RepackagingWriter(sourcefile, repackager);
}
}
- public List getSourceFiles()
- {
- return new ArrayList(sourceFiles);
+ public List<File> getSourceFiles() {
+ return new ArrayList<>(sourceFiles);
}
- public Repackager getRepackager()
- {
+ public Repackager getRepackager() {
return repackager;
}
- private static final Writer writerForFile(File f) throws IOException
- {
- if (CHARSET == null)
- return new FileWriter(f);
+ private static Writer writerForFile(File f) throws IOException {
+ if (CHARSET == null) {
+ return Files.newBufferedWriter(f.toPath(), StandardCharsets.ISO_8859_1);
+ }
FileOutputStream fileStream = new FileOutputStream(f);
CharsetEncoder ce = CHARSET.newEncoder();
@@ -156,19 +138,16 @@ public class FilerImpl implements Filer
return new OutputStreamWriter(fileStream, ce);
}
- static class IncrFileWriter extends StringWriter
- {
- private File _file;
- private Repackager _repackager;
+ static class IncrFileWriter extends StringWriter {
+ private final File _file;
+ private final Repackager _repackager;
- public IncrFileWriter(File file, Repackager repackager)
- {
+ public IncrFileWriter(File file, Repackager repackager) {
_file = file;
_repackager = repackager;
}
- public void close() throws IOException
- {
+ public void close() throws IOException {
super.close();
// This is where all the real work happens
@@ -176,56 +155,39 @@ public class FilerImpl implements Filer
_repackager.repackage(getBuffer()) :
getBuffer();
String str = sb.toString();
- List diffs = new ArrayList();
- StringReader sReader = new StringReader(str);
- FileReader fReader = new FileReader(_file);
+ List<String> diffs = new ArrayList<>();
- try
- {
+ try (StringReader sReader = new StringReader(str);
+ FileReader fReader = new FileReader(_file)) {
Diff.readersAsText(sReader, "<generated>",
fReader, _file.getName(), diffs);
}
- finally
- {
- sReader.close();
- fReader.close();
- }
- if (diffs.size() > 0)
- {
+ if (diffs.size() > 0) {
// Diffs encountered, replace the file on disk with text from
// the buffer
- Writer fw = writerForFile(_file);
- try
- { fw.write(str); }
- finally
- { fw.close(); }
+ try (Writer fw = writerForFile(_file)) {
+ fw.write(str);
+ }
}
- else
- ; // If no diffs, don't do anything
}
}
- static class RepackagingWriter extends StringWriter
- {
- public RepackagingWriter ( File file, Repackager repackager )
- {
+ static class RepackagingWriter extends StringWriter {
+ public RepackagingWriter(File file, Repackager repackager) {
_file = file;
_repackager = repackager;
}
- public void close ( ) throws IOException
- {
+ public void close() throws IOException {
super.close();
- Writer fw = writerForFile( _file );
- try
- { fw.write( _repackager.repackage( getBuffer() ).toString() ); }
- finally
- { fw.close(); }
+ try (Writer fw = writerForFile(_file)) {
+ fw.write(_repackager.repackage(getBuffer()).toString());
+ }
}
- private File _file;
- private Repackager _repackager;
+ private final File _file;
+ private final Repackager _repackager;
}
}
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java?rev=1881669&r1=1881668&r2=1881669&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaBase64Holder.java Sat Sep 12 23:25:46 2020
@@ -110,7 +110,7 @@ public abstract class JavaBase64Holder e
//because computing hashcode is expensive we'll cache it
protected boolean _hashcached = false;
protected int hashcode = 0;
- protected static MessageDigest md5;
+ protected static final MessageDigest md5;
static {
try {
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java?rev=1881669&r1=1881668&r2=1881669&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/JavaHexBinaryHolder.java Sat Sep 12 23:25:46 2020
@@ -111,7 +111,7 @@ public abstract class JavaHexBinaryHolde
//because computing hashcode is expensive we'll cache it
protected boolean _hashcached = false;
protected int hashcode = 0;
- protected static MessageDigest md5;
+ protected static final MessageDigest md5;
static {
try {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org