Prepare for release
Fix Spotbugs errors
Replace XBeanDebug logging with Log4j
git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1887308 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build.xml b/build.xml
index 75ac5f8..a15b557 100644
--- a/build.xml
+++ b/build.xml
@@ -21,7 +21,7 @@
<property name="jdk.version.class" value="1.8" description="JDK version of generated class files"/>
<property name="compile.debug" value="true"/>
- <property name="version.base" value="4.0.1"/>
+ <property name="version.base" value="5.0.0"/>
<property name="version.rc" value=""/>
<property name="cases.location" location="src/test/resources"/>
@@ -978,7 +978,7 @@
effort="max"
failOnError="true">
<fileset dir="build">
- <include name="xmlbeans-4.0.1.jar"/>
+ <include name="xmlbeans-5.0.0.jar"/>
</fileset>
<auxClasspath path="${xml-apis.jar}"/>
<auxClasspath path="${saxon.jar}"/>
diff --git a/src/main/java/org/apache/xmlbeans/GDateBuilder.java b/src/main/java/org/apache/xmlbeans/GDateBuilder.java
index 4388b75..1d133ff 100644
--- a/src/main/java/org/apache/xmlbeans/GDateBuilder.java
+++ b/src/main/java/org/apache/xmlbeans/GDateBuilder.java
@@ -904,7 +904,7 @@
if (datemath) {
// days: may require renormalization
- _D += sign * day + carry;
+ _D += (long) sign * day + carry;
_normalizeDate();
}
}
@@ -918,11 +918,8 @@
return 30;
}
- if (month == 2) {
- return (_isLeapYear(year) ? 29 : 28);
- }
+ return month == 2 ? (_isLeapYear(year) ? 29 : 28) : 31;
- return 31;
}
/**
@@ -934,11 +931,8 @@
return 30;
}
- if (month == 2) {
- return 29;
- }
+ return month == 2 ? 29 : 31;
- return 31;
}
/**
@@ -1107,12 +1101,12 @@
long to1970Ms = 1000 * 60 * 60 * 24 * to1970Date;
to1970Ms += date.getMillisecond();
- to1970Ms += date.getSecond() * 1000;
- to1970Ms += date.getMinute() * 60 * 1000;
- to1970Ms += date.getHour() * 60 * 60 * 1000;
+ to1970Ms += date.getSecond() * 1000L;
+ to1970Ms += date.getMinute() * 60 * 1000L;
+ to1970Ms += date.getHour() * 60 * 60 * 1000L;
if (date.hasTimeZone()) {
- to1970Ms -= (date.getTimeZoneMinute() * date.getTimeZoneSign()) * 60 * 1000;
- to1970Ms -= (date.getTimeZoneHour() * date.getTimeZoneSign()) * 60 * 60 * 1000;
+ to1970Ms -= date.getTimeZoneMinute() * date.getTimeZoneSign() * 60 * 1000L;
+ to1970Ms -= date.getTimeZoneHour() * date.getTimeZoneSign() * 60 * 60 * 1000L;
} else {
TimeZone def = TimeZone.getDefault();
int offset = def.getOffset(to1970Ms);
@@ -1134,11 +1128,8 @@
* fQuotient(a, b) = the greatest integer less than or equal to a/b
*/
private static long _fQuotient(long a, int b) {
- if ((a < 0) == (b < 0)) {
- return a / b;
- }
+ return ((a < 0) == (b < 0)) ? (a / b) : -((b - a - 1) / b);
- return -((b - a - 1) / b);
}
/**
diff --git a/src/main/java/org/apache/xmlbeans/SystemProperties.java b/src/main/java/org/apache/xmlbeans/SystemProperties.java
index 44b650e..53e67f1 100644
--- a/src/main/java/org/apache/xmlbeans/SystemProperties.java
+++ b/src/main/java/org/apache/xmlbeans/SystemProperties.java
@@ -15,36 +15,37 @@
package org.apache.xmlbeans;
-import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
-public class SystemProperties
-{
+public class SystemProperties {
- protected static Hashtable propertyH;
+ private static Map<Object, Object> propertyH;
- public static String getProperty(String key) {
- if (propertyH == null) {
- try {
- propertyH = System.getProperties();
- } catch(SecurityException ex) {
- propertyH = new Hashtable();
- return null;
- }
- }
- return (String)propertyH.get(key);
- }
+ public static String getProperty(String key) {
+ if (propertyH == null) {
+ try {
+ propertyH = System.getProperties();
+ } catch (SecurityException ex) {
+ propertyH = new Properties();
+ return null;
+ }
+ }
+ return (String) propertyH.get(key);
+ }
- public static String getProperty(String key, String defaultValue) {
- String result = getProperty(key);
- if (result == null)
- return defaultValue;
- return result;
- }
+ public static String getProperty(String key, String defaultValue) {
+ String result = getProperty(key);
+ if (result == null) {
+ return defaultValue;
+ }
+ return result;
+ }
- public static void setPropertyH(Hashtable aPropertyH) {
- propertyH = aPropertyH;
- }
+ public static void setPropertyH(Map<Object, Object> aPropertyH) {
+ propertyH = aPropertyH;
+ }
}
diff --git a/src/main/java/org/apache/xmlbeans/XmlBeans.java b/src/main/java/org/apache/xmlbeans/XmlBeans.java
index c8749c0..c928486 100644
--- a/src/main/java/org/apache/xmlbeans/XmlBeans.java
+++ b/src/main/java/org/apache/xmlbeans/XmlBeans.java
@@ -38,7 +38,7 @@
private static final String TYPE_SYSTEM_FIELD = "typeSystem";
private static String XMLBEANS_TITLE = "org.apache.xmlbeans";
- private static String XMLBEANS_VERSION = "4.0.1";
+ private static String XMLBEANS_VERSION = "5.0.0";
private static String XMLBEANS_VENDOR = "Apache Software Foundation";
static {
diff --git a/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java b/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java
index 3e890f6..2ce195e 100644
--- a/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java
+++ b/src/main/java/org/apache/xmlbeans/impl/common/IOUtil.java
@@ -15,107 +15,98 @@
package org.apache.xmlbeans.impl.common;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.Writer;
-import java.io.Reader;
-import java.io.FileWriter;
-import java.io.FileReader;
+import java.io.*;
import java.net.URI;
import java.nio.channels.FileChannel;
-public class IOUtil
-{
+public class IOUtil {
public static void copyCompletely(InputStream input, OutputStream output)
- throws IOException
- {
+ throws IOException {
//if both are file streams, use channel IO
- if ((output instanceof FileOutputStream) && (input instanceof FileInputStream))
- {
- try
- {
+ if ((output instanceof FileOutputStream) && (input instanceof FileInputStream)) {
+ try {
FileChannel target = ((FileOutputStream) output).getChannel();
FileChannel source = ((FileInputStream) input).getChannel();
-
+
source.transferTo(0, Integer.MAX_VALUE, target);
-
+
source.close();
target.close();
-
+
return;
- }
- catch (Exception e)
- { /* failover to byte stream version */ }
+ } catch (Exception e) { /* failover to byte stream version */ }
}
-
+
byte[] buf = new byte[8192];
- while (true)
- {
+ while (true) {
int length = input.read(buf);
- if (length < 0)
+ if (length < 0) {
break;
+ }
output.write(buf, 0, length);
}
-
- try { input.close(); } catch (IOException ignore) {}
- try { output.close(); } catch (IOException ignore) {}
+
+ try {
+ input.close();
+ } catch (IOException ignore) {
+ }
+ try {
+ output.close();
+ } catch (IOException ignore) {
+ }
}
public static void copyCompletely(Reader input, Writer output)
- throws IOException
- {
+ throws IOException {
char[] buf = new char[8192];
- while (true)
- {
+ while (true) {
int length = input.read(buf);
- if (length < 0)
+ if (length < 0) {
break;
+ }
output.write(buf, 0, length);
}
- try { input.close(); } catch (IOException ignore) {}
- try { output.close(); } catch (IOException ignore) {}
+ try {
+ input.close();
+ } catch (IOException ignore) {
+ }
+ try {
+ output.close();
+ } catch (IOException ignore) {
+ }
}
- public static void copyCompletely(URI input, URI output)
- throws IOException
- {
- try
- {
- InputStream in = null;
- try
- {
- File f = new File(input);
- if (f.exists())
- in = new FileInputStream(f);
- }
- catch (Exception notAFile)
- {}
-
- File out = new File(output);
- File dir = out.getParentFile();
- dir.mkdirs();
-
- if (in == null)
- in = input.toURL().openStream();
-
- IOUtil.copyCompletely(in, new FileOutputStream(out));
- }
- catch (IllegalArgumentException e)
- {
+ public static void copyCompletely(URI input, URI output) throws IOException {
+ File out = new File(output);
+ File dir = out.getParentFile();
+ dir.mkdirs();
+
+ try (InputStream in = urlToStream(input);
+ OutputStream os = new FileOutputStream(out)) {
+ IOUtil.copyCompletely(in, os);
+ } catch (IllegalArgumentException e) {
throw new IOException("Cannot copy to " + output);
}
}
- public static File createDir(File rootdir, String subdir)
- {
+ private static InputStream urlToStream(URI input) throws IOException {
+ try {
+ File f = new File(input);
+ if (f.exists()) {
+ return new FileInputStream(f);
+ }
+ } catch (Exception ignored) {
+ // notAFile
+ }
+
+ return input.toURL().openStream();
+ }
+
+ public static File createDir(File rootdir, String subdir) {
File newdir = (subdir == null) ? rootdir : new File(rootdir, subdir);
boolean created = (newdir.exists() && newdir.isDirectory()) || newdir.mkdirs();
- assert(created) : "Could not create " + newdir.getAbsolutePath();
+ assert (created) : "Could not create " + newdir.getAbsolutePath();
return newdir;
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/common/JarHelper.java b/src/main/java/org/apache/xmlbeans/impl/common/JarHelper.java
index 95c6d42..212ed34 100644
--- a/src/main/java/org/apache/xmlbeans/impl/common/JarHelper.java
+++ b/src/main/java/org/apache/xmlbeans/impl/common/JarHelper.java
@@ -16,9 +16,9 @@
package org.apache.xmlbeans.impl.common;
import java.io.*;
-import java.util.jar.JarOutputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
+import java.util.jar.JarOutputStream;
/**
* Provides utility services for jarring and unjarring files and directories.
@@ -27,168 +27,171 @@
*
* @author Patrick Calahan <pcal@bea.com>
*/
-public class JarHelper
-{
- // ========================================================================
- // Constants
+public class JarHelper {
+ // ========================================================================
+ // Constants
- private static final int BUFFER_SIZE = 2156;
+ private static final int BUFFER_SIZE = 2156;
- // ========================================================================
- // Variables
+ // ========================================================================
+ // Variables
- private byte[] mBuffer = new byte[BUFFER_SIZE];
- private int mByteCount = 0;
- private boolean mVerbose = false;
- private String mDestJarName = "";
+ private final byte[] mBuffer = new byte[BUFFER_SIZE];
+ private boolean mVerbose = false;
+ private String mDestJarName = "";
- // ========================================================================
- // Constructor
+ // ========================================================================
+ // Constructor
- /**
- * Instantiates a new JarHelper.
- */
- public JarHelper() {}
-
- // ========================================================================
- // Public methods
-
- /**
- * Jars a given directory or single file into a JarOutputStream.
- */
- public void jarDir(File dirOrFile2Jar, File destJar)
- throws IOException {
-
- if (dirOrFile2Jar == null || destJar == null)
- throw new IllegalArgumentException();
-
- mDestJarName = destJar.getCanonicalPath();
- FileOutputStream fout = new FileOutputStream(destJar);
- JarOutputStream jout = new JarOutputStream(fout);
- //jout.setLevel(0);
- try {
- jarDir(dirOrFile2Jar, jout, null);
- } catch(IOException ioe) {
- throw ioe;
- } finally {
- jout.close();
- fout.close();
+ /**
+ * Instantiates a new JarHelper.
+ */
+ public JarHelper() {
}
- }
- /**
- * Unjars a given jar file into a given directory.
- */
- public void unjarDir(File jarFile, File destDir) throws IOException {
- BufferedOutputStream dest = null;
- FileInputStream fis = new FileInputStream(jarFile);
- unjar(fis,destDir);
- }
+ // ========================================================================
+ // Public methods
- /**
- * Given an InputStream on a jar file, unjars the contents into the given
- * directory.
- */
- public void unjar(InputStream in, File destDir) throws IOException {
- BufferedOutputStream dest = null;
- JarInputStream jis = new JarInputStream(in);
- JarEntry entry;
- while ((entry = jis.getNextJarEntry()) != null) {
- if (entry.isDirectory()) {
- File dir = new File(destDir,entry.getName());
- dir.mkdir();
- if (entry.getTime() != -1) dir.setLastModified(entry.getTime());
- continue;
- }
- int count;
- byte data[] = new byte[BUFFER_SIZE];
- File destFile = new File(destDir, entry.getName());
- if (mVerbose)
- System.out.println("unjarring " + destFile +
- " from " + entry.getName());
- FileOutputStream fos = new FileOutputStream(destFile);
- dest = new BufferedOutputStream(fos, BUFFER_SIZE);
- while ((count = jis.read(data, 0, BUFFER_SIZE)) != -1) {
- dest.write(data, 0, count);
- }
- dest.flush();
- dest.close();
- if (entry.getTime() != -1) destFile.setLastModified(entry.getTime());
- }
- jis.close();
- }
+ /**
+ * Jars a given directory or single file into a JarOutputStream.
+ */
+ public void jarDir(File dirOrFile2Jar, File destJar)
+ throws IOException {
- public void setVerbose(boolean b) {
- mVerbose = b;
- }
-
- // ========================================================================
- // Private methods
-
- private static final char SEP = '/';
- /**
- * Recursively jars up the given path under the given directory.
- */
- private void jarDir(File dirOrFile2jar, JarOutputStream jos, String path)
- throws IOException {
- if (mVerbose) System.out.println("checking " + dirOrFile2jar);
- if (dirOrFile2jar.isDirectory()) {
- String[] dirList = dirOrFile2jar.list();
- String subPath = (path == null) ? "" : (path+dirOrFile2jar.getName()+SEP);
- if (path != null) {
- JarEntry je = new JarEntry(subPath);
- je.setTime(dirOrFile2jar.lastModified());
- jos.putNextEntry(je);
- jos.flush();
- jos.closeEntry();
- }
- for (int i = 0; i < dirList.length; i++) {
- File f = new File(dirOrFile2jar, dirList[i]);
- jarDir(f,jos,subPath);
- }
- } else {
- if (dirOrFile2jar.getCanonicalPath().equals(mDestJarName))
- {
- if (mVerbose) System.out.println("skipping " + dirOrFile2jar.getPath());
- return;
- }
-
- if (mVerbose) System.out.println("adding " + dirOrFile2jar.getPath());
- FileInputStream fis = new FileInputStream(dirOrFile2jar);
- try {
- JarEntry entry = new JarEntry(path+dirOrFile2jar.getName());
- entry.setTime(dirOrFile2jar.lastModified());
- jos.putNextEntry(entry);
- while ((mByteCount = fis.read(mBuffer)) != -1) {
- jos.write(mBuffer, 0, mByteCount);
- if (mVerbose) System.out.println("wrote " + mByteCount + " bytes");
+ if (dirOrFile2Jar == null || destJar == null) {
+ throw new IllegalArgumentException();
}
- jos.flush();
- jos.closeEntry();
- } catch (IOException ioe) {
- throw ioe;
- } finally {
- fis.close();
- }
+
+ mDestJarName = destJar.getCanonicalPath();
+ try (FileOutputStream fout = new FileOutputStream(destJar);
+ JarOutputStream jout = new JarOutputStream(fout)) {
+ //jout.setLevel(0);
+ jarDir(dirOrFile2Jar, jout, null);
+ }
}
- }
- // for debugging
- public static void main(String[] args)
- throws IOException
- {
- if (args.length < 2)
- {
- System.err.println("Usage: JarHelper jarname.jar directory");
- return;
- }
+ /**
+ * Unjars a given jar file into a given directory.
+ */
+ public void unjarDir(File jarFile, File destDir) throws IOException {
+ try (FileInputStream fis = new FileInputStream(jarFile)) {
+ unjar(fis, destDir);
+ }
+ }
- JarHelper jarHelper = new JarHelper();
- jarHelper.mVerbose = true;
+ /**
+ * Given an InputStream on a jar file, unjars the contents into the given
+ * directory.
+ */
+ public void unjar(InputStream in, File destDir) throws IOException {
+ BufferedOutputStream dest;
+ try (JarInputStream jis = new JarInputStream(in)) {
+ JarEntry entry;
+ while ((entry = jis.getNextJarEntry()) != null) {
+ if (entry.isDirectory()) {
+ File dir = new File(destDir, entry.getName());
+ dir.mkdir();
+ if (entry.getTime() != -1) {
+ dir.setLastModified(entry.getTime());
+ }
+ continue;
+ }
+ int count;
+ byte[] data = new byte[BUFFER_SIZE];
+ File destFile = new File(destDir, entry.getName());
+ if (mVerbose) {
+ System.out.println("unjarring " + destFile +
+ " from " + entry.getName());
+ }
+ FileOutputStream fos = new FileOutputStream(destFile);
+ dest = new BufferedOutputStream(fos, BUFFER_SIZE);
+ while ((count = jis.read(data, 0, BUFFER_SIZE)) != -1) {
+ dest.write(data, 0, count);
+ }
+ dest.flush();
+ dest.close();
+ if (entry.getTime() != -1) {
+ destFile.setLastModified(entry.getTime());
+ }
+ }
+ }
+ }
- File destJar = new File(args[0]);
- File dirOrFile2Jar = new File(args[1]);
+ public void setVerbose(boolean b) {
+ mVerbose = b;
+ }
- jarHelper.jarDir(dirOrFile2Jar, destJar);
- }
+ // ========================================================================
+ // Private methods
+
+ private static final char SEP = '/';
+
+ /**
+ * Recursively jars up the given path under the given directory.
+ */
+ private void jarDir(File dirOrFile2jar, JarOutputStream jos, String path)
+ throws IOException {
+ if (mVerbose) {
+ System.out.println("checking " + dirOrFile2jar);
+ }
+ if (dirOrFile2jar.isDirectory()) {
+ String[] dirList = dirOrFile2jar.list();
+ String subPath = (path == null) ? "" : (path + dirOrFile2jar.getName() + SEP);
+ if (path != null) {
+ JarEntry je = new JarEntry(subPath);
+ je.setTime(dirOrFile2jar.lastModified());
+ jos.putNextEntry(je);
+ jos.flush();
+ jos.closeEntry();
+ }
+ if (dirList != null) {
+ for (String s : dirList) {
+ File f = new File(dirOrFile2jar, s);
+ jarDir(f, jos, subPath);
+ }
+ }
+ } else {
+ if (dirOrFile2jar.getCanonicalPath().equals(mDestJarName)) {
+ if (mVerbose) {
+ System.out.println("skipping " + dirOrFile2jar.getPath());
+ }
+ return;
+ }
+
+ if (mVerbose) {
+ System.out.println("adding " + dirOrFile2jar.getPath());
+ }
+ try (FileInputStream fis = new FileInputStream(dirOrFile2jar)) {
+ JarEntry entry = new JarEntry(path + dirOrFile2jar.getName());
+ entry.setTime(dirOrFile2jar.lastModified());
+ jos.putNextEntry(entry);
+ int mByteCount;
+ while ((mByteCount = fis.read(mBuffer)) != -1) {
+ jos.write(mBuffer, 0, mByteCount);
+ if (mVerbose) {
+ System.out.println("wrote " + mByteCount + " bytes");
+ }
+ }
+ jos.flush();
+ jos.closeEntry();
+ }
+ }
+ }
+
+ // for debugging
+ public static void main(String[] args)
+ throws IOException {
+ if (args.length < 2) {
+ System.err.println("Usage: JarHelper jarname.jar directory");
+ return;
+ }
+
+ JarHelper jarHelper = new JarHelper();
+ jarHelper.mVerbose = true;
+
+ File destJar = new File(args[0]);
+ File dirOrFile2Jar = new File(args[1]);
+
+ jarHelper.jarDir(dirOrFile2Jar, destJar);
+ }
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/common/ReaderInputStream.java b/src/main/java/org/apache/xmlbeans/impl/common/ReaderInputStream.java
index 275d8d6..9d6da66 100644
--- a/src/main/java/org/apache/xmlbeans/impl/common/ReaderInputStream.java
+++ b/src/main/java/org/apache/xmlbeans/impl/common/ReaderInputStream.java
@@ -15,41 +15,35 @@
package org.apache.xmlbeans.impl.common;
-import java.io.Reader;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.io.UnsupportedEncodingException;
-import java.io.IOException;
+import java.io.*;
-public class ReaderInputStream extends PushedInputStream
-{
- private Reader reader;
- private Writer writer;
- private char[] buf;
- public static int defaultBufferSize = 2048;
+public class ReaderInputStream extends PushedInputStream {
+ public static final int defaultBufferSize = 2048;
- public ReaderInputStream(Reader reader, String encoding) throws UnsupportedEncodingException
- {
+ private final Reader reader;
+ private final Writer writer;
+ private final char[] buf;
+
+ public ReaderInputStream(Reader reader, String encoding) throws UnsupportedEncodingException {
this(reader, encoding, defaultBufferSize);
}
- public ReaderInputStream(Reader reader, String encoding, int bufferSize) throws UnsupportedEncodingException
- {
- if (bufferSize <= 0)
+ public ReaderInputStream(Reader reader, String encoding, int bufferSize) throws UnsupportedEncodingException {
+ if (bufferSize <= 0) {
throw new IllegalArgumentException("Buffer size <= 0");
+ }
this.reader = reader;
this.writer = new OutputStreamWriter(getOutputStream(), encoding);
buf = new char[bufferSize];
}
- public void fill(int requestedBytes) throws IOException
- {
- do
- {
+ public void fill(int requestedBytes) throws IOException {
+ do {
int chars = reader.read(buf);
- if (chars < 0)
+ if (chars < 0) {
return;
+ }
writer.write(buf, 0, chars);
writer.flush();
diff --git a/src/main/java/org/apache/xmlbeans/impl/common/XBeanDebug.java b/src/main/java/org/apache/xmlbeans/impl/common/XBeanDebug.java
index b2b62af..7efe23c 100644
--- a/src/main/java/org/apache/xmlbeans/impl/common/XBeanDebug.java
+++ b/src/main/java/org/apache/xmlbeans/impl/common/XBeanDebug.java
@@ -15,86 +15,9 @@
package org.apache.xmlbeans.impl.common;
-import org.apache.xmlbeans.SystemProperties;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class XBeanDebug {
- public static final int TRACE_SCHEMA_LOADING = 0x0001;
- public static final String traceProp = "org.apache.xmlbeans.impl.debug";
- public static final String defaultProp = ""; // "TRACE_SCHEMA_LOADING";
-
- private static int _enabled = initializeBitsFromProperty();
- private static int _indent = 0;
-
- private static int initializeBitsFromProperty() {
- String prop = SystemProperties.getProperty(traceProp, defaultProp);
- return (prop.contains("TRACE_SCHEMA_LOADING")) ? TRACE_SCHEMA_LOADING : 0;
- }
-
- public static void enable(int bits) {
- _enabled = _enabled | bits;
- }
-
- public static void disable(int bits) {
- _enabled = _enabled & ~bits;
- }
-
- public static void trace(int bits, String message, int indent) {
- if (test(bits)) {
- synchronized (XBeanDebug.class) {
- if (indent < 0) {
- _indent += indent;
- }
-
- String _indentspace = " ";
- String spaces = _indent < 0 ? "" : _indent > _indentspace.length() ? _indentspace : _indentspace.substring(0, _indent);
- String logmessage = Thread.currentThread().getName() + ": " + spaces + message + "\n";
- System.err.print(logmessage);
-
- if (indent > 0) {
- _indent += indent;
- }
- }
- }
- }
-
- public static boolean test(int bits) {
- return (_enabled & bits) != 0;
- }
-
- static PrintStream _err;
-
- public static String log(String message) {
- log(message, null);
- return message;
- }
-
- public static String logStackTrace(String message) {
- log(message, new Throwable());
- return message;
- }
-
- private synchronized static String log(String message, Throwable stackTrace) {
- if (_err == null) {
- try {
- File diagnosticFile = File.createTempFile("xmlbeandebug", ".log");
- _err = new PrintStream(diagnosticFile, "UTF-8");
- System.err.println("Diagnostic XML Bean debug log file created: " + diagnosticFile);
- } catch (IOException e) {
- _err = System.err;
- }
- }
- _err.println(message);
- if (stackTrace != null) {
- stackTrace.printStackTrace(_err);
- }
- return message;
- }
-
- public static void logException(Throwable t) {
- log(t.getMessage(), t);
- }
+ public static final Logger LOG = LogManager.getLogger(XBeanDebug.class);
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/repackage/Repackage.java b/src/main/java/org/apache/xmlbeans/impl/repackage/Repackage.java
index 25de508..80887b6 100644
--- a/src/main/java/org/apache/xmlbeans/impl/repackage/Repackage.java
+++ b/src/main/java/org/apache/xmlbeans/impl/repackage/Repackage.java
@@ -335,7 +335,7 @@
StringBuffer readInputStream(InputStream is) throws IOException {
try (Reader r = new InputStreamReader(is, StandardCharsets.ISO_8859_1);
- StringWriter w = new StringWriter()) {
+ StringWriter w = new StringWriter()) {
copy(r, w);
return w.getBuffer();
}
@@ -344,13 +344,10 @@
public static void copyFile(File from, File to) throws IOException {
to.getParentFile().mkdirs();
- FileInputStream in = new FileInputStream(from);
- FileOutputStream out = new FileOutputStream(to);
-
- copy(in, out);
-
- out.close();
- in.close();
+ try (FileInputStream in = new FileInputStream(from);
+ FileOutputStream out = new FileOutputStream(to)) {
+ copy(in, out);
+ }
}
public static void copy(InputStream in, OutputStream out) throws IOException {
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java
index 5299026..90d15c9 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeImpl.java
@@ -1909,7 +1909,7 @@
try {
return (ctr == null) ? null : ctr.newInstance(sType, !sType.isSimpleType());
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
- XBeanDebug.logException(e);
+ XBeanDebug.LOG.atDebug().withThrowable(e).log(e.getMessage());
return null;
}
} else {
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
index c427ddd..fe5f9a5 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
@@ -319,10 +319,10 @@
}
SchemaTypeSystemImpl getTypeSystemOnClassloader(String name) {
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Finding type system " + name + " on classloader", 0);
+ XBeanDebug.LOG.atTrace().log("Finding type system {} on classloader", name);
SchemaTypeSystemImpl result = _classLoaderTypeSystems.get(name);
if (result == null) {
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Type system " + name + " not cached - consulting field", 0);
+ XBeanDebug.LOG.atTrace().log("Type system {}} not cached - consulting field", name);
result = SchemaTypeSystemImpl.forName(name, _classLoader);
_classLoaderTypeSystems.put(name, result);
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
index 1cd1d3e..875bc48 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
@@ -16,10 +16,7 @@
package org.apache.xmlbeans.impl.schema;
import org.apache.xmlbeans.*;
-import org.apache.xmlbeans.impl.common.DefaultClassLoaderResourceLoader;
-import org.apache.xmlbeans.impl.common.NameUtil;
-import org.apache.xmlbeans.impl.common.QNameHelper;
-import org.apache.xmlbeans.impl.common.XBeanDebug;
+import org.apache.xmlbeans.impl.common.*;
import org.apache.xmlbeans.impl.repackage.Repackager;
import org.apache.xmlbeans.impl.util.FilerImpl;
import org.apache.xmlbeans.impl.util.HexBin;
@@ -40,8 +37,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
public class SchemaTypeSystemImpl extends SchemaTypeLoaderBase implements SchemaTypeSystem {
public static final int DATA_BABE = 0xDA7ABABE;
@@ -120,17 +115,6 @@
* a new package.
*/
public static String METADATA_PACKAGE_GEN = "org/apache/xmlbeans/metadata";
-// public static String METADATA_PACKAGE_GEN;
-// static
-// {
-// // fix for maven classloader
-// Package stsPackage = SchemaTypeSystem.class.getPackage();
-// String stsPackageName = (stsPackage==null) ?
-// SchemaTypeSystem.class.getName().substring(0, SchemaTypeSystem.class.getName().lastIndexOf(".")) :
-// stsPackage.getName();
-//
-// METADATA_PACKAGE_GEN = stsPackageName.replace('.', '/') + "/metadata";
-// }
private static String nameToPathString(String nameForSystem) {
nameForSystem = nameForSystem.replace('.', '/');
@@ -145,7 +129,7 @@
protected SchemaTypeSystemImpl() {
String fullname = getClass().getName();
_name = fullname.substring(0, fullname.lastIndexOf('.'));
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Loading type system " + _name, 1);
+ XBeanDebug.LOG.atTrace().log("Loading type system {}", _name);
_basePackage = nameToPathString(_name);
_classloader = getClass().getClassLoader();
_linker = this;
@@ -153,16 +137,16 @@
try {
initFromHeader();
} catch (Error | RuntimeException e) {
- XBeanDebug.logException(e);
+ XBeanDebug.LOG.atDebug().withThrowable(e).log(e.getMessage());
throw e;
}
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Finished loading type system " + _name, -1);
+ XBeanDebug.LOG.atTrace().log("Finished loading type system {}", _name);
}
public SchemaTypeSystemImpl(Class<?> indexclass) {
String fullname = indexclass.getName();
_name = fullname.substring(0, fullname.lastIndexOf('.'));
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Loading type system " + _name, 1);
+ XBeanDebug.LOG.atTrace().log("Loading type system {}", _name);
_basePackage = nameToPathString(_name);
_classloader = indexclass.getClassLoader();
_linker = SchemaTypeLoaderImpl.build(null, null, _classloader, getMetadataPath());
@@ -170,27 +154,10 @@
try {
initFromHeader();
} catch (RuntimeException | Error e) {
- XBeanDebug.logException(e);
+ XBeanDebug.LOG.atDebug().withThrowable(e).log(e.getMessage());
throw e;
}
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Finished loading type system " + _name, -1);
- }
-
- public static boolean fileContainsTypeSystem(File file, String name) {
- String indexname = nameToPathString(name) + "index.xsb";
-
- if (file.isDirectory()) {
- return (new File(file, indexname)).isFile();
- } else {
- try (ZipFile zipfile = new ZipFile(file)) {
- ZipEntry entry = zipfile.getEntry(indexname);
- return (entry != null && !entry.isDirectory());
- } catch (IOException e) {
- XBeanDebug.log("Problem loading SchemaTypeSystem, zipfilename " + file);
- XBeanDebug.logException(e);
- throw new SchemaTypeLoaderException(e.getMessage(), name, "index", SchemaTypeLoaderException.IO_EXCEPTION, e);
- }
- }
+ XBeanDebug.LOG.atTrace().log("Finished loading type system {}", _name);
}
public static SchemaTypeSystemImpl forName(String name, ClassLoader loader) {
@@ -210,13 +177,13 @@
try {
initFromHeader();
} catch (RuntimeException | Error e) {
- XBeanDebug.logException(e);
+ XBeanDebug.LOG.atDebug().withThrowable(e).log(e.getMessage());
throw e;
}
}
private void initFromHeader() {
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Reading unresolved handles for type system " + _name, 0);
+ XBeanDebug.LOG.atTrace().log("Reading unresolved handles for type system {}", _name);
XsbReader reader = null;
try {
// Read the index file, which starts with a header.
@@ -400,7 +367,7 @@
// we're done with the class' constant pool,
// we can just copy the rest of the bytes
- copy(in, out);
+ IOUtil.copyCompletely(in, out);
} catch (IOException e) {
// ok
}
@@ -420,22 +387,6 @@
_name, null, SchemaTypeLoaderException.IO_EXCEPTION);
}
- private static long copy(InputStream inp, OutputStream out) throws IOException {
- final byte[] buff = new byte[4096];
- long totalCount = 0;
- int readBytes;
- do {
- int todoBytes = buff.length;
- readBytes = inp.read(buff, 0, todoBytes);
- if (readBytes > 0) {
- out.write(buff, 0, readBytes);
- totalCount += readBytes;
- }
- } while (readBytes >= 0);
-
- return totalCount;
- }
-
private static final String HOLDER_TEMPLATE_CLASS = "org.apache.xmlbeans.impl.schema.TypeSystemHolder";
private static final String HOLDER_TEMPLATE_CLASSFILE = "TypeSystemHolder.template";
private static final String[] HOLDER_TEMPLATE_NAMES = makeClassStrings(HOLDER_TEMPLATE_CLASS);
@@ -636,6 +587,7 @@
assert new HashSet<>(comp).equals(temp);
}
+ @SuppressWarnings({"AssertWithSideEffects", "ConstantConditions"})
private void assertContainersSynchronized() {
boolean assertEnabled = false;
// This code basically checks whether asserts are enabled so we don't do
@@ -724,7 +676,7 @@
_mask[j] += i;
}
} catch (IOException e) {
- XBeanDebug.logException(e);
+ XBeanDebug.LOG.atDebug().withThrowable(e).log(e.getMessage());
}
_random = new Random(System.currentTimeMillis());
@@ -3139,27 +3091,27 @@
int filetype = reader.getActualFiletype();
switch (filetype) {
case FILETYPE_SCHEMATYPE:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving type for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving type for handle {}", handle);
result = reader.finishLoadingType();
break;
case FILETYPE_SCHEMAELEMENT:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving element for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving element for handle {}", handle);
result = reader.finishLoadingElement();
break;
case FILETYPE_SCHEMAATTRIBUTE:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving attribute for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving attribute for handle {}", handle);
result = reader.finishLoadingAttribute();
break;
case FILETYPE_SCHEMAMODELGROUP:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving model group for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving model group for handle {}", handle);
result = reader.finishLoadingModelGroup();
break;
case FILETYPE_SCHEMAATTRIBUTEGROUP:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving attribute group for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving attribute group for handle {}", handle);
result = reader.finishLoadingAttributeGroup();
break;
case FILETYPE_SCHEMAIDENTITYCONSTRAINT:
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving id constraint for handle " + handle, 0);
+ XBeanDebug.LOG.atTrace().log("Resolving id constraint for handle {}", handle);
result = reader.finishLoadingIdentityConstraint();
break;
default:
@@ -3181,12 +3133,12 @@
private boolean _allNonGroupHandlesResolved = false;
public void resolve() {
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolve called type system " + _name, 0);
+ XBeanDebug.LOG.atTrace().log("Resolve called type system {}", _name);
if (_allNonGroupHandlesResolved) {
return;
}
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Resolving all handles for type system " + _name, 1);
+ XBeanDebug.LOG.atTrace().log("Resolving all handles for type system {}", _name);
List<SchemaComponent.Ref> refs = new ArrayList<>();
refs.addAll(_globalElements.values());
@@ -3201,7 +3153,7 @@
ref.getComponent();
}
- XBeanDebug.trace(XBeanDebug.TRACE_SCHEMA_LOADING, "Finished resolving type system " + _name, -1);
+ XBeanDebug.LOG.atTrace().log("Finished resolving type system {}", _name);
_allNonGroupHandlesResolved = true;
}
@@ -3327,13 +3279,8 @@
return _name;
}
- public SchemaTypeSystem typeSystemForName(String name) {
- return (name != null && name.equals(_name)) ? this : null;
- }
-
-
/**
- * Provide method to be overriden by user typesystems using a different metadata path
+ * Provide method to be overridden by user typesystems using a different metadata path
*
* @return the metadata directory
* @since XmlBeans 3.1.0
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
index 338f21f..da6190b 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
@@ -413,7 +413,8 @@
// see Particle Valid (Restriction) (3.9.6) all three bulets 2.2.1
return true;
} else if (baseModel == null || derivedModel == null) {
- XBeanDebug.logStackTrace("Null models that weren't caught by EMPTY_CONTENT: " + baseType + " (" + baseModel + "), " + sType + " (" + derivedModel + ")");
+ XBeanDebug.LOG.atTrace().withThrowable(new Exception("Stacktrace"))
+ .log("Null models that weren't caught by EMPTY_CONTENT: {} ({}), {} ({})", baseType, baseModel, sType, derivedModel);
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_VALID, null, location);
return false;
}
@@ -472,7 +473,8 @@
restrictionValid = false;
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Derived Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Derived Type");
+ assert(false);
}
break;
case SchemaParticle.WILDCARD:
@@ -489,7 +491,8 @@
restrictionValid = nsRecurseCheckCardinality(baseModel, derivedModel, errors, context);
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Derived Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Derived Type");
+ assert(false);
}
break;
case SchemaParticle.ALL:
@@ -510,7 +513,8 @@
restrictionValid = recurseUnordered(baseModel, derivedModel, errors, context);
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Derived Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Derived Type");
+ assert(false);
}
break;
case SchemaParticle.CHOICE:
@@ -531,7 +535,8 @@
restrictionValid = mapAndSum(baseModel, derivedModel, errors, context);
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Derived Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Derived Type");
+ assert(false);
}
break;
case SchemaParticle.SEQUENCE:
@@ -550,11 +555,13 @@
restrictionValid = recurse(baseModel, derivedModel, errors, context);
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Derived Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Derived Type");
+ assert(false);
}
break;
default:
- assert false : XBeanDebug.logStackTrace("Unknown schema type for Base Type");
+ XBeanDebug.LOG.atDebug().withThrowable(new Exception("stacktrace")).log("Unknown schema type for Base Type");
+ assert(false);
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
index 5a945e5..c01b8d5 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
@@ -132,7 +132,7 @@
substitutionGroup = StscState.get().findDocumentType(
substitutionGroup.getSubstitutionGroup(), substitutionGroup.getChameleonNamespace(), null/*no dependency added*/);
- assert substitutionGroup != null : "Could not find document type for: " + substitutionGroup.getSubstitutionGroup();
+ assert substitutionGroup != null : "Could not find document type for substitutionGroup";
if (!resolveSubstitutionGroup(substitutionGroup)) {
substitutionGroup = null; // cyclic dependency - no subst group
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/Parameters.java b/src/main/java/org/apache/xmlbeans/impl/tool/Parameters.java
index ec2a6ea..5bea5f1 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/Parameters.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/Parameters.java
@@ -75,47 +75,47 @@
}
public void setXsdFiles(File... xsdFiles) {
- this.xsdFiles = xsdFiles;
+ this.xsdFiles = xsdFiles == null ? null : xsdFiles.clone();
}
public File[] getWsdlFiles() {
return wsdlFiles;
}
- public void setWsdlFiles(File[] wsdlFiles) {
- this.wsdlFiles = wsdlFiles;
+ public void setWsdlFiles(File... wsdlFiles) {
+ this.wsdlFiles = wsdlFiles == null ? null : wsdlFiles.clone();
}
public File[] getJavaFiles() {
return javaFiles;
}
- public void setJavaFiles(File[] javaFiles) {
- this.javaFiles = javaFiles;
+ public void setJavaFiles(File... javaFiles) {
+ this.javaFiles = javaFiles == null ? null : javaFiles.clone();
}
public File[] getConfigFiles() {
return configFiles;
}
- public void setConfigFiles(File[] configFiles) {
- this.configFiles = configFiles;
+ public void setConfigFiles(File... configFiles) {
+ this.configFiles = configFiles == null ? null : configFiles.clone();
}
public URL[] getUrlFiles() {
return urlFiles;
}
- public void setUrlFiles(URL[] urlFiles) {
- this.urlFiles = urlFiles;
+ public void setUrlFiles(URL... urlFiles) {
+ this.urlFiles = urlFiles == null ? null : urlFiles.clone();
}
public File[] getClasspath() {
return classpath;
}
- public void setClasspath(File[] classpath) {
- this.classpath = classpath;
+ public void setClasspath(File... classpath) {
+ this.classpath = classpath == null ? null : classpath.clone();
}
public File getOutputJar() {
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java
index 313f522..045dc98 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/SchemaCopy.java
@@ -15,31 +15,28 @@
package org.apache.xmlbeans.impl.tool;
+import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.impl.common.IOUtil;
import org.apache.xmlbeans.impl.xb.substwsdl.DefinitionsDocument;
import org.apache.xmlbeans.impl.xb.substwsdl.TImport;
-
-import java.net.URI;
-import java.net.URL;
-import java.net.URISyntaxException;
-import java.util.Map;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.io.File;
-
-import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
import org.apache.xmlbeans.impl.xb.xsdschema.ImportDocument;
import org.apache.xmlbeans.impl.xb.xsdschema.IncludeDocument;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
-public class SchemaCopy
-{
- public static void printUsage()
- {
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+public class SchemaCopy {
+ public static void printUsage() {
System.out.println("Copies the XML schema at the specified URL to the specified file.");
System.out.println("Usage: scopy sourceurl [targetfile]");
System.out.println(" sourceurl - The URL at which the schema is located.");
@@ -48,99 +45,78 @@
}
- public static void main(String[] args)
- {
- if (args.length < 1 || args.length > 2)
- {
+ public static void main(String[] args) {
+ if (args.length < 1 || args.length > 2) {
printUsage();
return;
}
URI source = null;
- URI target = null;
+ URI target;
- try
- {
- if(args[0].compareToIgnoreCase("-usage") == 0){
+ try {
+ if (args[0].compareToIgnoreCase("-usage") == 0) {
printUsage();
return;
}
source = new URI(args[0]);
source.toURL(); // to trigger exception
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
System.err.println("Badly formed URL " + source);
return;
}
- if (args.length < 2)
- {
- try
- {
+ if (args.length < 2) {
+ try {
URI dir = new File(".").getCanonicalFile().toURI();
String lastPart = source.getPath();
lastPart = lastPart.substring(lastPart.lastIndexOf('/') + 1);
target = CodeGenUtil.resolve(dir, URI.create(lastPart));
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
System.err.println("Cannot canonicalize current directory");
return;
}
- }
- else
- {
- try
- {
+ } else {
+ try {
target = new URI(args[1]);
- if (!target.isAbsolute())
+ if (!target.isAbsolute()) {
target = null;
- else if (!target.getScheme().equals("file"))
+ } else if (!target.getScheme().equals("file")) {
target = null;
- }
- catch (Exception e)
- {
+ }
+ } catch (Exception e) {
target = null;
}
- if (target == null)
- {
- try
- {
- target = new File(target).getCanonicalFile().toURI();
- }
- catch (Exception e)
- {
+ if (target == null) {
+ try {
+ target = Paths.get("").toAbsolutePath().toUri();
+ } catch (Exception e) {
System.err.println("Cannot canonicalize current directory");
return;
}
}
}
- Map thingsToCopy = findAllRelative(source, target);
+ Map<URI,URI> thingsToCopy = findAllRelative(source, target);
copyAll(thingsToCopy, true);
}
- private static void copyAll(Map uriMap, boolean stdout)
- {
- for (Iterator i = uriMap.keySet().iterator(); i.hasNext(); )
- {
- URI source = (URI)i.next();
- URI target = (URI)uriMap.get(source);
- try
- {
+ private static void copyAll(Map<URI,URI> uriMap, boolean stdout) {
+ for (URI source : uriMap.keySet()) {
+ URI target = uriMap.get(source);
+ try {
IOUtil.copyCompletely(source, target);
- }
- catch (Exception e)
- {
- if (stdout)
+ } catch (Exception e) {
+ if (stdout) {
System.out.println("Could not copy " + source + " -> " + target);
+ }
continue;
}
- if (stdout)
- System.out.println("Copied " + source + " -> " + target);
+ if (stdout) {
+ System.out.println("Copied " + source + " -> " + target);
+ }
}
}
@@ -156,24 +132,21 @@
* @return a map of all the source/target URIs needed to copy
* the file along with all its relative referents.
*/
- public static Map findAllRelative(URI source, URI target)
- {
- Map result = new LinkedHashMap();
+ public static Map<URI,URI> findAllRelative(URI source, URI target) {
+ Map<URI,URI> result = new LinkedHashMap<>();
result.put(source, target);
- LinkedList process = new LinkedList();
+ LinkedList<URI> process = new LinkedList<>();
process.add(source);
- while (!process.isEmpty())
- {
- URI nextSource = (URI)process.removeFirst();
- URI nextTarget = (URI)result.get(nextSource);
- Map nextResults = findRelativeInOne(nextSource, nextTarget);
- for (Iterator i = nextResults.keySet().iterator(); i.hasNext(); )
- {
- URI newSource = (URI)i.next();
- if (result.containsKey(newSource))
+ while (!process.isEmpty()) {
+ URI nextSource = process.removeFirst();
+ URI nextTarget = result.get(nextSource);
+ Map<URI,URI> nextResults = findRelativeInOne(nextSource, nextTarget);
+ for (URI newSource : nextResults.keySet()) {
+ if (result.containsKey(newSource)) {
continue;
+ }
result.put(newSource, nextResults.get(newSource));
process.add(newSource);
}
@@ -183,76 +156,68 @@
}
private static final XmlOptions loadOptions = new XmlOptions().
- setLoadSubstituteNamespaces(Collections.singletonMap(
- "http://schemas.xmlsoap.org/wsdl/", "http://www.apache.org/internal/xmlbeans/wsdlsubst"
- ));
+ setLoadSubstituteNamespaces(Collections.singletonMap(
+ "http://schemas.xmlsoap.org/wsdl/", "http://www.apache.org/internal/xmlbeans/wsdlsubst"
+ ));
- private static Map findRelativeInOne(URI source, URI target)
- {
- try
- {
+ private static Map<URI,URI> findRelativeInOne(URI source, URI target) {
+ try {
URL sourceURL = source.toURL();
XmlObject xobj = XmlObject.Factory.parse(sourceURL, loadOptions);
XmlCursor xcur = xobj.newCursor();
xcur.toFirstChild();
- Map result = new LinkedHashMap();
+ Map<URI,URI> result = new LinkedHashMap<>();
- if (xobj instanceof SchemaDocument)
- putMappingsFromSchema(result, source, target, ((SchemaDocument)xobj).getSchema());
- else if (xobj instanceof DefinitionsDocument)
- putMappingsFromWsdl(result, source, target, ((DefinitionsDocument)xobj).getDefinitions());
+ if (xobj instanceof SchemaDocument) {
+ putMappingsFromSchema(result, source, target, ((SchemaDocument) xobj).getSchema());
+ } else if (xobj instanceof DefinitionsDocument) {
+ putMappingsFromWsdl(result, source, target, ((DefinitionsDocument) xobj).getDefinitions());
+ }
return result;
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
// any exceptions parsing the given URL? Then skip this file silently
}
- return Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
- private static void putNewMapping(Map result, URI origSource, URI origTarget, String literalURI)
- {
- try
- {
- if (literalURI == null)
+ private static void putNewMapping(Map<URI,URI> result, URI origSource, URI origTarget, String literalURI) {
+ try {
+ if (literalURI == null) {
return;
+ }
URI newRelative = new URI(literalURI);
- if (newRelative.isAbsolute())
+ if (newRelative.isAbsolute()) {
return;
+ }
URI newSource = CodeGenUtil.resolve(origSource, newRelative);
URI newTarget = CodeGenUtil.resolve(origTarget, newRelative);
result.put(newSource, newTarget);
- }
- catch (URISyntaxException e)
- {
+ } catch (URISyntaxException e) {
// uri syntax problem? do nothing silently.
}
}
- private static void putMappingsFromSchema(Map result, URI source, URI target, SchemaDocument.Schema schema)
- {
- ImportDocument.Import[] imports = schema.getImportArray();
- for (int i = 0; i < imports.length; i++)
- putNewMapping(result, source, target, imports[i].getSchemaLocation());
-
- IncludeDocument.Include[] includes = schema.getIncludeArray();
- for (int i = 0; i < includes.length; i++)
- putNewMapping(result, source, target, includes[i].getSchemaLocation());
- }
-
- private static void putMappingsFromWsdl(Map result, URI source, URI target, DefinitionsDocument.Definitions wdoc)
- {
- XmlObject[] types = wdoc.getTypesArray();
- for (int i = 0; i < types.length; i++)
- {
- SchemaDocument.Schema[] schemas = (SchemaDocument.Schema[])types[i].selectPath("declare namespace xs='http://www.w3.org/2001/XMLSchema' xs:schema");
- for (int j = 0; j < schemas.length; j++)
- putMappingsFromSchema(result, source, target, schemas[j]);
+ private static void putMappingsFromSchema(Map<URI,URI> result, URI source, URI target, SchemaDocument.Schema schema) {
+ for (ImportDocument.Import anImport : schema.getImportArray()) {
+ putNewMapping(result, source, target, anImport.getSchemaLocation());
}
- TImport[] imports = wdoc.getImportArray();
- for (int i = 0; i < imports.length; i++)
- putNewMapping(result, source, target, imports[i].getLocation());
+ for (IncludeDocument.Include include : schema.getIncludeArray()) {
+ putNewMapping(result, source, target, include.getSchemaLocation());
+ }
+ }
+
+ private static void putMappingsFromWsdl(Map<URI,URI> result, URI source, URI target, DefinitionsDocument.Definitions wdoc) {
+ for (XmlObject type : wdoc.getTypesArray()) {
+ SchemaDocument.Schema[] schemas = (SchemaDocument.Schema[]) type.selectPath("declare namespace xs='http://www.w3.org/2001/XMLSchema' xs:schema");
+ for (SchemaDocument.Schema schema : schemas) {
+ putMappingsFromSchema(result, source, target, schema);
+ }
+ }
+
+ for (TImport anImport : wdoc.getImportArray()) {
+ putNewMapping(result, source, target, anImport.getLocation());
+ }
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java b/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java
index 7d85166..10482ae 100644
--- a/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java
+++ b/src/main/java/org/apache/xmlbeans/impl/tool/XsbDumper.java
@@ -74,8 +74,7 @@
}
public static void dumpZip(File file) {
- try {
- ZipFile zipFile = new ZipFile(file);
+ try (ZipFile zipFile = new ZipFile(file)) {
Enumeration<? extends ZipEntry> e = zipFile.entries();
while (e.hasMoreElements()) {
ZipEntry entry = e.nextElement();
diff --git a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java
index 212b47b..92c350d 100644
--- a/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java
+++ b/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXQuery.java
@@ -27,6 +27,8 @@
import net.sf.saxon.query.XQueryExpression;
import net.sf.saxon.type.BuiltInAtomicType;
import net.sf.saxon.value.*;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.xmlbeans.*;
import org.apache.xmlbeans.impl.store.Cur;
import org.apache.xmlbeans.impl.store.Cursor;
@@ -50,6 +52,8 @@
import java.util.Map;
public class SaxonXQuery implements XQuery {
+ private static final Logger LOG = LogManager.getLogger(SaxonXQuery.class);
+
private final XQueryExpression xquery;
private final String contextVar;
private final Configuration config;
@@ -94,18 +98,74 @@
_version = c.getLocale().version();
_cur = c.weakCur(this);
this._options = options;
- return objectExecute();
+
+ Map<String, Object> bindings = XmlOptions.maskNull(_options).getXqueryVariables();
+ List<Object> resultsList = execQuery(_cur.getDom(), bindings);
+
+ XmlObject[] result = new XmlObject[resultsList.size()];
+ for (int i = 0; i < resultsList.size(); i++) {
+ //copy objects into the locale
+ Locale l = Locale.getLocale(_cur.getLocale().getSchemaTypeLoader(), _options);
+
+ l.enter();
+ Object node = resultsList.get(i);
+ Cur res;
+ try {
+ //typed function results of XQuery
+ if (!(node instanceof Node)) {
+ res = l.load("<xml-fragment/>").tempCur();
+ res.setValue(node.toString());
+ SchemaType type = getType(node);
+ Locale.autoTypeDocument(res, type, null);
+ result[i] = res.getObject();
+ } else {
+ res = loadNode(l, (Node) node);
+ }
+ result[i] = res.getObject();
+ } catch (XmlException e) {
+ throw new RuntimeException(e);
+ } finally {
+ l.exit();
+ }
+ res.release();
+ }
+ release();
+ return result;
}
public XmlCursor cursorExecute(Cur c, XmlOptions options) {
_version = c.getLocale().version();
_cur = c.weakCur(this);
this._options = options;
- return cursorExecute();
+
+ Map<String, Object> bindings = XmlOptions.maskNull(_options).getXqueryVariables();
+ List<Object> resultsList = execQuery(_cur.getDom(), bindings);
+
+ int i;
+
+ Locale locale = Locale.getLocale(_cur.getLocale().getSchemaTypeLoader(), _options);
+ locale.enter();
+ Locale.LoadContext _context = new Cur.CurLoadContext(locale, _options);
+ Cursor resultCur = null;
+ try {
+ for (i = 0; i < resultsList.size(); i++) {
+ loadNodeHelper(locale, (Node) resultsList.get(i), _context);
+ }
+ Cur c2 = _context.finish();
+ Locale.associateSourceName(c, _options);
+ Locale.autoTypeDocument(c, null, _options);
+ resultCur = new Cursor(c2);
+ } catch (XmlException e) {
+ LOG.atInfo().withThrowable(e).log("Can't autotype document");
+ } finally {
+ locale.exit();
+ }
+ release();
+ return resultCur;
}
- public List execQuery(Object node, Map variableBindings) {
+ public List<Object> execQuery(Object node, Map<String,Object> variableBindings) {
try {
Node contextNode = (Node) node;
@@ -120,7 +180,7 @@
dc.setParameter(new StructuredQName("", null, contextVar), root);
// Set the other variables
if (variableBindings != null) {
- for (Map.Entry<String, Object> me : ((Map<String, Object>) variableBindings).entrySet()) {
+ for (Map.Entry<String, Object> me : variableBindings.entrySet()) {
StructuredQName key = new StructuredQName("", null, me.getKey());
Object value = me.getValue();
if (value instanceof XmlTokenSource) {
@@ -230,57 +290,11 @@
}
return htm;
} else {
- return new ObjectValue(value);
+ return new ObjectValue<>(value);
}
}
- public XmlObject[] objectExecute() {
- if (_cur != null && _version != _cur.getLocale().version())
- //throw new ConcurrentModificationException
- // ("Document changed during select")
- {
- ;
- }
-
- Map<String, Object> bindings = XmlOptions.maskNull(_options).getXqueryVariables();
- List resultsList = execQuery(_cur.getDom(), bindings);
-
- XmlObject[] result = new XmlObject[resultsList.size()];
- int i;
- for (i = 0; i < resultsList.size(); i++) {
- //copy objects into the locale
- Locale l = Locale.getLocale(_cur.getLocale().getSchemaTypeLoader(), _options);
-
- l.enter();
- Object node = resultsList.get(i);
- Cur res = null;
- try {
- //typed function results of XQuery
- if (!(node instanceof Node)) {
- //TODO: exact same code as Path.java
- //make a common super-class and pull this--what to name that
- //superclass???
- res = l.load("<xml-fragment/>").tempCur();
- res.setValue(node.toString());
- SchemaType type = getType(node);
- Locale.autoTypeDocument(res, type, null);
- result[i] = res.getObject();
- } else {
- res = loadNode(l, (Node) node);
- }
- result[i] = res.getObject();
- } catch (XmlException e) {
- throw new RuntimeException(e);
- } finally {
- l.exit();
- }
- res.release();
- }
- release();
- return result;
- }
-
private SchemaType getType(Object node) {
SchemaType type;
if (node instanceof Integer) {
@@ -305,40 +319,6 @@
return type;
}
- public XmlCursor cursorExecute() {
- if (_cur != null && _version != _cur.getLocale().version())
- //throw new ConcurrentModificationException
- // ("Document changed during select")
- {
- ;
- }
-
- Map<String, Object> bindings = XmlOptions.maskNull(_options).getXqueryVariables();
- List resultsList = execQuery(_cur.getDom(), bindings);
-
- int i;
-
- Locale locale = Locale.getLocale(_cur.getLocale().getSchemaTypeLoader(), _options);
- locale.enter();
- Locale.LoadContext _context = new Cur.CurLoadContext(locale, _options);
- Cursor resultCur = null;
- try {
- for (i = 0; i < resultsList.size(); i++) {
- loadNodeHelper(locale, (Node) resultsList.get(i), _context);
- }
- Cur c = _context.finish();
- Locale.associateSourceName(c, _options);
- Locale.autoTypeDocument(c, null, _options);
- resultCur = new Cursor(c);
- } catch (Exception e) {
- } finally {
- locale.exit();
- }
- release();
- return resultCur;
- }
-
-
public void release() {
if (_cur != null) {
_cur.release();
diff --git a/src/main/java/org/apache/xmlbeans/impl/xsd2inst/SampleXmlUtil.java b/src/main/java/org/apache/xmlbeans/impl/xsd2inst/SampleXmlUtil.java
index 0c1b76a..e9ead83 100644
--- a/src/main/java/org/apache/xmlbeans/impl/xsd2inst/SampleXmlUtil.java
+++ b/src/main/java/org/apache/xmlbeans/impl/xsd2inst/SampleXmlUtil.java
@@ -246,8 +246,7 @@
}
// a bit from the Aenid
- public static final String[] WORDS = new String[]
- {
+ private static final String[] WORDS = {
"ipsa", "iovis", "rapidum", "iaculata", "e", "nubibus", "ignem",
"disiecitque", "rates", "evertitque", "aequora", "ventis",
"illum", "exspirantem", "transfixo", "pectore", "flammas",
diff --git a/src/main/resources/maven/plugin.xml b/src/main/resources/maven/plugin.xml
index a68020c..900326e 100644
--- a/src/main/resources/maven/plugin.xml
+++ b/src/main/resources/maven/plugin.xml
@@ -20,7 +20,7 @@
<plugin>
<name>xmlbeans</name>
- <description></description>
+ <description>Maven plugin for Apache XmlBeans</description>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>@VERSION@</version>
diff --git a/xkit/README.txt b/xkit/README.txt
index 9f5e6e2..953af7e 100644
--- a/xkit/README.txt
+++ b/xkit/README.txt
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-XMLBeans Development Kit Version 4.0.1
+XMLBeans Development Kit Version 5.0.0
Welcome to XMLBeans!
@@ -21,9 +21,9 @@
Kit contents:
-(1) One copy of xmlbeans-4.0.1.jar, which contains XMLBeans.
+(1) One copy of xmlbeans-5.0.0.jar, which contains XMLBeans.
Should work on any JDK 1.8.x or newer.
- ./lib/xmlbeans-4.0.1.jar
+ ./lib/xmlbeans-5.0.0.jar
(2) License information for XML Beans and included libraries
./LICENSE.txt