Revision: 4866 http://sourceforge.net/p/jump-pilot/code/4866 Author: michaudm Date: 2016-03-26 14:52:22 +0000 (Sat, 26 Mar 2016) Log Message: ----------- Cleaning, formatting rewriting java2xml
Modified Paths: -------------- core/trunk/etc/mvn/cmp_core.xml core/trunk/pom.xml core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java core/trunk/src/com/vividsolutions/jump/util/LangUtil.java core/trunk/src/com/vividsolutions/jump/util/StringUtil.java core/trunk/src/com/vividsolutions/jump/util/java2xml/Java2XML.java core/trunk/src/com/vividsolutions/jump/util/java2xml/XML2Java.java core/trunk/src/com/vividsolutions/jump/util/java2xml/XMLBinder.java core/trunk/src/com/vividsolutions/jump/workbench/WorkbenchPropertiesFile.java Modified: core/trunk/etc/mvn/cmp_core.xml =================================================================== --- core/trunk/etc/mvn/cmp_core.xml 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/etc/mvn/cmp_core.xml 2016-03-26 14:52:22 UTC (rev 4866) @@ -18,7 +18,7 @@ <!-- Exclude maven jts dependency : for OpenJUMP 1.7, it is replaced by a more recent build of jts which is not available in maven --> <exclude>com.vividsolutions:jts</exclude> - <!-- exclude batik and js which is a batil dependency from CORE build --> + <!-- exclude batik and js which is a batik dependency from CORE build --> <exclude>batik:*</exclude> <exclude>js:*</exclude> <!-- exclude junit and hamcrest from CORE build --> Modified: core/trunk/pom.xml =================================================================== --- core/trunk/pom.xml 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/pom.xml 2016-03-26 14:52:22 UTC (rev 4866) @@ -17,6 +17,8 @@ <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> <project.binaries>**/*.command,**/*.sh,**/*.bat,**/*.exe,**/MacOS/OpenJUMP</project.binaries> <imageio-ext.version>1.1.7</imageio-ext.version> + <maven-assembly-plugin.version>2.4</maven-assembly-plugin.version> + <maven-antrun-plugin.version>1.8</maven-antrun-plugin.version> </properties> <profiles> <profile> @@ -54,13 +56,14 @@ <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> + <version>${maven-assembly-plugin.version}</version> <executions> <execution> <id>make-core</id> <phase>package</phase> <configuration> <appendAssemblyId>false</appendAssemblyId> - <finalName>${artifactId}-${version.number}-r${version.revision}-CORE</finalName> + <finalName>${project.artifactId}-${version.number}-r${version.revision}-CORE</finalName> <descriptors> <descriptor>etc/mvn/bin_zip-core_snapshot.xml</descriptor> </descriptors> @@ -84,14 +87,14 @@ <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> - <!--version>2.1</version --> + <version>${maven-assembly-plugin.version}</version> <executions> <execution> <id>make-plus</id> <phase>package</phase> <configuration> <appendAssemblyId>false</appendAssemblyId> - <finalName>${artifactId}-${version.number}-r${version.revision}-PLUS</finalName> + <finalName>${project.artifactId}-${version.number}-r${version.revision}-PLUS</finalName> <descriptors> <descriptor>etc/mvn/bin_zip-plus_snapshot.xml</descriptor> </descriptors> @@ -111,12 +114,13 @@ <!-- has to be set on maven run with -D version.number=X.X.X --> <version.number>${version.datestamp}</version.number> <version.release>snapshot</version.release> - <version.string>${artifactId}-${version.number}-r${version.revision}</version.string> + <version.string>${project.artifactId}-${version.number}-r${version.revision}</version.string> </properties> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> + <version>${maven-assembly-plugin.version}</version> <configuration> <appendAssemblyId>false</appendAssemblyId> </configuration> @@ -160,12 +164,13 @@ <!-- has to be set on maven run with -D version.number=X.X.X --> <version.number>unknown</version.number> <version.release>release</version.release> - <version.string>${artifactId}-${version.number}-r${version.revision}</version.string> + <version.string>${project.artifactId}-${version.number}-r${version.revision}</version.string> </properties> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> + <version>${maven-assembly-plugin.version}</version> <configuration> <appendAssemblyId>false</appendAssemblyId> </configuration> @@ -205,14 +210,14 @@ <profile> <id>portable</id> <properties> - <portable.filename>${artifactId}-Portable-${version.number}-r${version.revision}</portable.filename> + <portable.filename>${project.artifactId}-Portable-${version.number}-r${version.revision}</portable.filename> <portable.filepath>${project.build.directory}/recompress</portable.filepath> </properties> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> - <version>1.7</version> + <version>${maven-antrun-plugin.version}</version> <executions> <execution> <id>recompress portable zip distros</id> @@ -283,14 +288,14 @@ <profile> <id>installer</id> <properties> - <version.string>${artifactId}-${version.number}-r${version.revision}</version.string> - <installer.filename>${artifactId}-Installer-${version.number}-r${version.revision}</installer.filename> + <version.string>${project.artifactId}-${version.number}-r${version.revision}</version.string> + <installer.filename>${project.artifactId}-Installer-${version.number}-r${version.revision}</installer.filename> </properties> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> - <version>1.7</version> + <version>${maven-antrun-plugin.version}</version> <executions> <execution> <id>create installers</id> @@ -413,7 +418,7 @@ <properties> <!-- by default datestamp, can be overwritten with -D version.number=X.X.X --> <version.number>${version.datestamp}</version.number> - <version.string>${artifactId}-${version.number}-r${version.revision}</version.string> + <version.string>${project.artifactId}-${version.number}-r${version.revision}</version.string> </properties> <build> <plugins> @@ -437,7 +442,7 @@ </plugin> <plugin> <artifactId>maven-antrun-plugin</artifactId> - <version>1.7</version> + <version>${maven-antrun-plugin.version}</version> <executions> <execution> <id>create apidoc zip</id> @@ -465,13 +470,13 @@ <properties> <!-- by default datestamp, can be overwritten with -D version.number=X.X.X --> <version.number>${version.datestamp}</version.number> - <version.string>${artifactId}-${version.number}-r${version.revision}</version.string> + <version.string>${project.artifactId}-${version.number}-r${version.revision}</version.string> </properties> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> - <version>1.7</version> + <version>${maven-antrun-plugin.version}</version> <executions> <execution> <id>create src zip</id> @@ -496,7 +501,7 @@ </profile> </profiles> <build> - <finalName>${artifactId}-${version.number}-r${version.revision}</finalName> + <finalName>${project.artifactId}-${version.number}-r${version.revision}</finalName> <sourceDirectory>src/</sourceDirectory> <outputDirectory>target/classes</outputDirectory> <resources> @@ -774,8 +779,8 @@ </dependency--> <dependency> <groupId>org.jdom</groupId> - <artifactId>jdom</artifactId> - <version>1.1.3</version> + <artifactId>jdom2</artifactId> + <version>2.0.6</version> <scope>compile</scope> </dependency> <dependency> Modified: core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/datastore/h2/H2DSMetadata.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -69,6 +69,6 @@ // Do not add if it is not defined String schematable = SQLUtil.compose(schemaName, tableName); String indexname = tableName + "_" + geometryColumn + "_idx"; - return "CREATE SPATIAL INDEX " + indexname + " ON " + schematable + "(" + geometryColumn + ");"; + return "CREATE SPATIAL INDEX " + indexname + " ON " + schematable + "(\"" + geometryColumn + "\");"; } } Modified: core/trunk/src/com/vividsolutions/jump/util/LangUtil.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/util/LangUtil.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/util/LangUtil.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -31,12 +31,7 @@ */ package com.vividsolutions.jump.util; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; import com.vividsolutions.jts.util.Assert; @@ -44,8 +39,8 @@ * Utilities to support the Java language. */ public class LangUtil { - private static Map primitiveToWrapperMap = new HashMap() { + private static Map<Class,Class> primitiveToWrapperMap = new HashMap<Class,Class>() { { put(byte.class, Byte.class); put(char.class, Character.class); @@ -95,18 +90,18 @@ } } - public static Collection classesAndInterfaces(Class c) { - ArrayList classesAndInterfaces = new ArrayList(); + public static Collection<Class<?>> classesAndInterfaces(Class c) { + List<Class<?>> classesAndInterfaces = new ArrayList<>(); classesAndInterfaces.add(c); superclasses(c, classesAndInterfaces); - for (Iterator i = new ArrayList(classesAndInterfaces).iterator(); i.hasNext(); ) { - Class x = (Class) i.next(); - classesAndInterfaces.addAll(Arrays.asList(x.getInterfaces())); + // Create new ArrayList to avoid ConcurrentModificationException + for (Class clazz : new ArrayList<>(classesAndInterfaces)) { + classesAndInterfaces.addAll((Collection)Arrays.asList(clazz.getInterfaces())); } return classesAndInterfaces; } - private static void superclasses(Class c, Collection results) { + private static void superclasses(Class c, Collection<Class<?>> results) { if (c.getSuperclass() == null) { return; } Modified: core/trunk/src/com/vividsolutions/jump/util/StringUtil.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/util/StringUtil.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/util/StringUtil.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -35,7 +35,6 @@ import java.io.PrintStream; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; @@ -52,6 +51,7 @@ public static String s(int n) { return (n != 1) ? "s" : ""; } + /** * Warning: hinders internationalization */ @@ -77,7 +77,7 @@ } public static String repeat(char c, int n) { - StringBuffer b = new StringBuffer(); + StringBuilder b = new StringBuilder(); for (int i = 0; i < n; i++) { b.append(c); @@ -91,7 +91,7 @@ * column. Word-wraps. */ public static String split(String s, int n) { - StringBuffer b = new StringBuffer(); + StringBuilder b = new StringBuilder(); boolean wrapPending = false; for (int i = 0; i < s.length(); i++) { @@ -133,13 +133,13 @@ * @param s a String with comma-delimited values * @return a List of the Strings that were delimited by commas */ - public static List fromCommaDelimitedString(String s) { - if (s.trim().length() == 0) { return new ArrayList(); } - ArrayList result = new ArrayList(); + public static List<String> fromCommaDelimitedString(String s) { + if (s.trim().length() == 0) { return new ArrayList<>(); } + List<String> result = new ArrayList<>(); StringTokenizer tokenizer = new StringTokenizer(s, ","); while (tokenizer.hasMoreTokens()) { - result.add(tokenizer.nextToken().toString().trim()); + result.add(tokenizer.nextToken().trim()); } return result; @@ -150,8 +150,8 @@ * @param size the size of the List to create * @return a List of blank Strings */ - public static List blankStringList(int size) { - ArrayList list = new ArrayList(); + public static List<String> blankStringList(int size) { + List<String> list = new ArrayList<>(); for (int i = 0; i < size; i++) { list.add(""); @@ -213,7 +213,7 @@ * @param c a Collection of objects to convert to Strings and delimit by commas * @return a String containing c's elements, delimited by commas */ - public static String toCommaDelimitedString(Collection c) { + public static String toCommaDelimitedString(Collection<?> c) { return toDelimitedString(c, ", "); } @@ -312,23 +312,21 @@ public static boolean isNumber(String token) { try { Double.parseDouble(token); - return true; } catch (NumberFormatException e) { return false; } } - public static String toDelimitedString(Collection c, String delimiter) { + public static String toDelimitedString(Collection<?> c, String delimiter) { if (c.isEmpty()) { return ""; } - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); - for (Iterator i = c.iterator(); i.hasNext();) { - Object o = i.next(); - result.append(delimiter + ((o == null) ? "" : o.toString())); + for (Object object : c) { + result.append(delimiter).append(object == null ? "" : object.toString()); } return result.substring(delimiter.length()); @@ -352,8 +350,7 @@ s += (days + " days "); } - s - += (Fmt.fmt(hours, 2, Fmt.ZF) + s += (Fmt.fmt(hours, 2, Fmt.ZF) + ":" + Fmt.fmt(minutes, 2, Fmt.ZF) + ":" Modified: core/trunk/src/com/vividsolutions/jump/util/java2xml/Java2XML.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/util/java2xml/Java2XML.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/util/java2xml/Java2XML.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -34,72 +34,60 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import javax.xml.namespace.QName; -import org.jdom.Attribute; -import org.jdom.Document; -import org.jdom.Element; -import org.jdom.output.Format; -import org.jdom.output.XMLOutputter; +import org.jdom2.Attribute; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; import com.vividsolutions.jump.workbench.Logger; + public class Java2XML extends XMLBinder { public Java2XML() { } + public String write(Object object, String rootTagName) throws Exception { - StringWriter writer = new StringWriter(); - try { + try (StringWriter writer = new StringWriter()) { write(object, rootTagName, writer); return writer.toString(); - } finally { - writer.close(); } } + public void write(Object object, String rootTagName, File file) throws Exception { - FileWriter fileWriter = new FileWriter(file, false); - try { - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); - try { - new Java2XML().write(object, rootTagName, bufferedWriter); - bufferedWriter.flush(); - fileWriter.flush(); - } finally { - bufferedWriter.close(); - } - } finally { - fileWriter.close(); + try (FileWriter fileWriter = new FileWriter(file, false); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + new Java2XML().write(object, rootTagName, bufferedWriter); + bufferedWriter.flush(); + fileWriter.flush(); } } + public void write(Object object, String rootTagName, Writer writer) throws Exception { Document document = new Document(new Element(rootTagName)); - write(object, document.getRootElement(), - specElements(object.getClass())); + write(object, document.getRootElement(), specElements(object.getClass())); XMLOutputter xmlOutputter = new XMLOutputter(); - // replace old jdom syntax (version 1.0 beta from 2004) - //xmlOutputter.setNewlines(true); - //xmlOutputter.setIndent(true); - // by newer version syntax xmlOutputter.setFormat(Format.getPrettyFormat()); xmlOutputter.output(document, writer); } - private void write(final Object object, final Element tag, List specElements) + + private void write(final Object object, final Element tag, List<Element> specElements) throws Exception { try { visit(specElements, new SpecVisitor() { public void tagSpecFound(String xmlName, String javaName, - List specChildElements) throws Exception { - Collection childTags = new ArrayList(); + List<Element> specChildElements) throws Exception { + Collection<Element> childTags = new ArrayList<>(); if (javaName != null) { childTags.addAll(writeChildTags(tag, xmlName, getter( - object.getClass(), javaName).invoke(object, - new Object[]{}), + object.getClass(), javaName).invoke(object), specifyingTypeExplicitly(fieldClass(setter( object.getClass(), javaName))))); } else { @@ -109,15 +97,14 @@ } // The parent may specify additional tags for itself in the // children. [Jon Aquino] - for (Iterator i = childTags.iterator(); i.hasNext();) { - Element childTag = (Element) i.next(); + for (Element childTag : childTags) { write(object, childTag, specChildElements); } } public void attributeSpecFound(String xmlName, String javaName) throws Exception { writeAttribute(tag, xmlName, getter(object.getClass(), - javaName).invoke(object, new Object[]{})); + javaName).invoke(object)); } }, object.getClass()); } catch (Exception e) { @@ -146,16 +133,14 @@ } else if (hasCustomConverter(value.getClass())) { childTag.setText(toXML(value)); } else if (value instanceof Map) { - for (Iterator i = ((Map) value).keySet().iterator(); i.hasNext();) { - Object key = i.next(); + for (Object key : ((Map)value).keySet()) { Element mappingTag = new Element("mapping"); childTag.addContent(mappingTag); writeChildTag(mappingTag, "key", key, true); writeChildTag(mappingTag, "value", ((Map) value).get(key), true); } } else if (value instanceof Collection) { - for (Iterator i = ((Collection) value).iterator(); i.hasNext();) { - Object item = i.next(); + for (Object item : (Collection)value) { writeChildTag(childTag, "item", item, true); } } else if (value instanceof QName) { @@ -166,14 +151,15 @@ tag.addContent(childTag); return childTag; } - private Collection writeChildTags(Element tag, String name, Object value, + + private Collection<Element> writeChildTags(Element tag, String name, Object value, boolean specifyingType) throws Exception { - ArrayList childTags = new ArrayList(); + + ArrayList<Element> childTags = new ArrayList<>(); if (value instanceof Collection) { // Might or might not need to specify type, depending on how // concrete the setter's parameter is. [Jon Aquino] - for (Iterator i = ((Collection) value).iterator(); i.hasNext();) { - Object item = i.next(); + for (Object item : (Collection)value) { childTags.add(writeChildTag(tag, name, item, specifyingType)); } } else { @@ -181,33 +167,34 @@ } return childTags; } + private Method getter(Class fieldClass, String field) throws XMLBinderException { Method[] methods = fieldClass.getMethods(); // Exact match first [Jon Aquino] - for (int i = 0; i < methods.length; i++) { - if (!methods[i].getName().toUpperCase().equals( + for (Method method : methods) { + if (!method.getName().toUpperCase().equals( "GET" + field.toUpperCase()) - && !methods[i].getName().toUpperCase().equals( + && !method.getName().toUpperCase().equals( "IS" + field.toUpperCase())) { continue; } - if (methods[i].getParameterTypes().length != 0) { + if (method.getParameterTypes().length != 0) { continue; } - return methods[i]; + return method; } - for (int i = 0; i < methods.length; i++) { - if (!methods[i].getName().toUpperCase().startsWith( + for (Method method : methods) { + if (!method.getName().toUpperCase().startsWith( "GET" + field.toUpperCase()) - && !methods[i].getName().toUpperCase().startsWith( + && !method.getName().toUpperCase().startsWith( "IS" + field.toUpperCase())) { continue; } - if (methods[i].getParameterTypes().length != 0) { + if (method.getParameterTypes().length != 0) { continue; } - return methods[i]; + return method; } throw new XMLBinderException("Could not find getter named like '" + field + "' " + fieldClass); Modified: core/trunk/src/com/vividsolutions/jump/util/java2xml/XML2Java.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/util/java2xml/XML2Java.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/util/java2xml/XML2Java.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -25,6 +25,7 @@ * (250)385-6040 www.vividsolutions.com */ package com.vividsolutions.jump.util.java2xml; + import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; @@ -35,60 +36,57 @@ import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import javax.xml.namespace.QName; -import org.jdom.Element; -import org.jdom.input.SAXBuilder; +import org.jdom2.Element; +import org.jdom2.input.SAXBuilder; import com.vividsolutions.jts.util.Assert; import com.vividsolutions.jump.util.StringUtil; import com.vividsolutions.jump.workbench.Logger; + public class XML2Java extends XMLBinder { - private ArrayList listeners = new ArrayList(); + + private ArrayList<Listener> listeners = new ArrayList<>(); private ClassLoader classLoader = getClass().getClassLoader(); public XML2Java() { } + public XML2Java(ClassLoader classLoader) { this.classLoader = classLoader; } + public Object read(String xml, Class c) throws Exception { - StringReader reader = new StringReader(xml); - try { + try (StringReader reader = new StringReader(xml)) { return read(reader, c); - } finally { - reader.close(); } } + public Object read(Reader reader, Class c) throws Exception { return read(new SAXBuilder().build(reader).getRootElement(), c); } + public Object read(InputStream inputStream, Class c) throws Exception { return read(new SAXBuilder().build(inputStream).getRootElement(), c); } + public Object read(File file, Class c) throws Exception { - //FileReader fileReader = new FileReader(file); - BufferedInputStream bis = null; - try { - //BufferedReader bufferedReader = new BufferedReader(fileReader); - bis = new BufferedInputStream(new FileInputStream(file)); - try { - return new XML2Java().read(bis, c); - } finally { - bis.close(); - } - } finally { - bis.close(); + try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { + return new XML2Java().read(bis, c); } } + private void read(final Element tag, final Object object, List specElements) throws Exception { + Assert.isTrue(tag != null); + visit(specElements, new SpecVisitor() { + private void fillerTagSpecFound(String xmlName, List specChildElements) throws Exception { if (tag.getChildren(xmlName).size() == 0) { @@ -102,6 +100,7 @@ } read(tag.getChild(xmlName), object, specChildElements); } + private void normalTagSpecFound(String xmlName, String javaName, List specChildElements) throws Exception { try { @@ -109,8 +108,7 @@ tag.getChildren(xmlName)); //The parent may specify additional tags for itself in the // children. [Jon Aquino] - for (Iterator i = tag.getChildren(xmlName).iterator(); i.hasNext();) { - Element childTag = (Element) i.next(); + for (Element childTag : tag.getChildren(xmlName)) { read(childTag, object, specChildElements); } @@ -119,6 +117,7 @@ //throw e; } } + public void tagSpecFound(String xmlName, String javaName, List specChildElements) throws Exception { if (javaName == null) { @@ -127,6 +126,7 @@ normalTagSpecFound(xmlName, javaName, specChildElements); } } + public void attributeSpecFound(String xmlName, String javaName) throws Exception { if (tag.getAttribute(xmlName) == null) { @@ -135,8 +135,7 @@ + "' attribute but found none. Tag = " + tag.getName() + "; Attributes = " - + StringUtil.toCommaDelimitedString(tag - .getAttributes())); + + StringUtil.toCommaDelimitedString(tag.getAttributes())); // [sstein 5April2008] replaced XMLB exception by Log // so when a problem with styling appears data are still loaded if (tag.getName().equalsIgnoreCase("style")){ @@ -164,14 +163,18 @@ } }, object.getClass()); } + private Object read(Element tag, Class c) throws Exception { + if (tag.getAttribute("null") != null && tag.getAttributeValue("null").equals("true")) { return null; } + if (c == QName.class) { return QName.valueOf(tag.getTextTrim()); } + if (specifyingTypeExplicitly(c)) { if (tag.getAttribute("class") == null) { throw new XMLBinderException("Expected <" + tag.getName() @@ -185,14 +188,15 @@ throw e; } } + fireCreatingObject(c); if (hasCustomConverter(c)) { return toJava(tag.getTextTrim(), c); } + Object object = c.newInstance(); if (object instanceof Map) { - for (Iterator i = tag.getChildren().iterator(); i.hasNext();) { - Element mappingTag = (Element) i.next(); + for (Element mappingTag : tag.getChildren()) { if (!mappingTag.getName().equals("mapping")) { throw new XMLBinderException("Expected <" + tag.getName() + "> to have <mapping> tag but found none"); @@ -221,8 +225,7 @@ Object.class)); } } else if (object instanceof Collection) { - for (Iterator i = tag.getChildren().iterator(); i.hasNext();) { - Element itemTag = (Element) i.next(); + for (Element itemTag : tag.getChildren()) { if (!itemTag.getName().equals("item")) { throw new XMLBinderException("Expected <" + tag.getName() + "> to have <item> tag but found none"); @@ -234,35 +237,38 @@ } return object; } + private void fireCreatingObject(Class c) { - for (Iterator i = listeners.iterator(); i.hasNext();) { - Listener l = (Listener) i.next(); - l.creatingObject(c); + for (Listener listener : listeners) { + listener.creatingObject(c); } } + public void addListener(Listener listener) { listeners.add(listener); } - private void setValuesFromTags(Object object, Method setter, Collection tags) + + private void setValuesFromTags(Object object, Method setter, Collection<Element> tags) throws Exception { - for (Iterator i = tags.iterator(); i.hasNext();) { - Element tag = (Element) i.next(); + for (Element tag : tags) { setValueFromTag(object, setter, tag); } } + private void setValueFromTag(Object object, Method setter, Element tag) throws Exception { setValue(object, setter, read(tag, fieldClass(setter))); } + private void setValue(Object object, Method setter, Object value) throws IllegalAccessException, InvocationTargetException { - //If you get an InvocationTargetException, check the bottom of the - // stack - //trace -- you should see the stack trace for the underlying exception. - //[Jon Aquino] - setter.invoke(object, new Object[]{value}); + // If you get an InvocationTargetException, check the bottom of the stack + // trace -- you should see the stack trace for the underlying exception. + // [Jon Aquino] + setter.invoke(object, value); } - public static interface Listener { - public void creatingObject(Class c); + + public interface Listener { + void creatingObject(Class c); } } \ No newline at end of file Modified: core/trunk/src/com/vividsolutions/jump/util/java2xml/XMLBinder.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/util/java2xml/XMLBinder.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/util/java2xml/XMLBinder.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -37,15 +37,14 @@ import com.vividsolutions.jts.util.Assert; import com.vividsolutions.jump.feature.AttributeType; -import com.vividsolutions.jump.io.ParseException; import com.vividsolutions.jump.util.LangUtil; import com.vividsolutions.jump.util.StringUtil; -import org.jdom.Attribute; -import org.jdom.Element; -import org.jdom.JDOMException; +import org.jdom2.Attribute; +import org.jdom2.Element; +import org.jdom2.JDOMException; -import org.jdom.input.SAXBuilder; +import org.jdom2.input.SAXBuilder; import java.awt.Color; import java.awt.Font; @@ -73,7 +72,7 @@ private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); - private HashMap classToCustomConverterMap = new HashMap(); + private HashMap<Class,CustomConverter> classToCustomConverterMap = new HashMap<>(); public XMLBinder() { classToCustomConverterMap.put(Class.class, @@ -95,22 +94,22 @@ classToCustomConverterMap.put(Color.class, new CustomConverter() { public Object toJava(String value) { - List parameters = StringUtil.fromCommaDelimitedString(value); + List<String> parameters = StringUtil.fromCommaDelimitedString(value); - return new Color(Integer.parseInt( - (String) parameters.get(0)), - Integer.parseInt((String) parameters.get(1)), - Integer.parseInt((String) parameters.get(2)), - Integer.parseInt((String) parameters.get(3))); + return new Color( + Integer.parseInt(parameters.get(0)), + Integer.parseInt(parameters.get(1)), + Integer.parseInt(parameters.get(2)), + Integer.parseInt(parameters.get(3))); } public String toXML(Object object) { Color color = (Color) object; - ArrayList parameters = new ArrayList(); - parameters.add(new Integer(color.getRed())); - parameters.add(new Integer(color.getGreen())); - parameters.add(new Integer(color.getBlue())); - parameters.add(new Integer(color.getAlpha())); + List<Object> parameters = new ArrayList<>(); + parameters.add(color.getRed()); + parameters.add(color.getGreen()); + parameters.add(color.getBlue()); + parameters.add(color.getAlpha()); return StringUtil.toCommaDelimitedString(parameters); } @@ -118,19 +117,19 @@ classToCustomConverterMap.put(Font.class, new CustomConverter() { public Object toJava(String value) { - List parameters = StringUtil.fromCommaDelimitedString(value); + List<String> parameters = StringUtil.fromCommaDelimitedString(value); - return new Font((String) parameters.get(0), - Integer.parseInt((String) parameters.get(1)), - Integer.parseInt((String) parameters.get(2))); + return new Font(parameters.get(0), + Integer.parseInt(parameters.get(1)), + Integer.parseInt(parameters.get(2))); } public String toXML(Object object) { Font font = (Font) object; - ArrayList parameters = new ArrayList(); + List<Object> parameters = new ArrayList<>(); parameters.add(font.getName()); - parameters.add(new Integer(font.getStyle())); - parameters.add(new Integer(font.getSize())); + parameters.add(font.getStyle()); + parameters.add(font.getSize()); return StringUtil.toCommaDelimitedString(parameters); } @@ -199,7 +198,7 @@ classToCustomConverterMap.put(boolean.class, new CustomConverter() { public Object toJava(String value) { - return new Boolean(value); + return Boolean.parseBoolean(value); } public String toXML(Object object) { @@ -224,7 +223,7 @@ classToCustomConverterMap.put(Boolean.class, new CustomConverter() { public Object toJava(String value) { - return new Boolean(value); + return Boolean.parseBoolean(value); } public String toXML(Object object) { @@ -244,7 +243,7 @@ classToCustomConverterMap.put(Character.class, new CustomConverter() { public Object toJava(String value) { - return new Character(value.length()>0?value.charAt(0):'\u0000'); + return value.length()>0?value.charAt(0):'\u0000'; } public String toXML(Object object) { @@ -304,16 +303,16 @@ ".java2xml"; } - protected List specElements(Class c) - throws XMLBinderException, JDOMException, IOException { - InputStream stream = specResourceStream(c); + protected List<Element> specElements(Class c) + throws XMLBinderException, JDOMException, IOException { - if (stream == null) { - throw new XMLBinderException("Could not find java2xml file for " + - c.getName() + " or its interfaces or superclasses"); - } + try (InputStream stream = specResourceStream(c)) { - try { + if (stream == null) { + throw new XMLBinderException("Could not find java2xml file for " + + c.getName() + " or its interfaces or superclasses"); + } + Element root = new SAXBuilder().build(stream).getRootElement(); if (!root.getAttributes().isEmpty()) { @@ -327,18 +326,14 @@ } return root.getChildren(); - } finally { - stream.close(); } } private InputStream specResourceStream(Class c) { - for (Iterator i = LangUtil.classesAndInterfaces(c).iterator(); - i.hasNext();) { - Class type = (Class) i.next(); - Assert.isTrue(type.isAssignableFrom(c)); + for (Class<?> clazz : LangUtil.classesAndInterfaces(c)) { + Assert.isTrue(clazz.isAssignableFrom(c)); - InputStream stream = type.getResourceAsStream(specFilename(type)); + InputStream stream = clazz.getResourceAsStream(specFilename(clazz)); if (stream != null) { return stream; @@ -355,10 +350,9 @@ /** * @param c for error messages */ - protected void visit(List specElements, SpecVisitor visitor, Class c) + protected void visit(List<Element> specElements, SpecVisitor visitor, Class c) throws Exception { - for (Iterator i = specElements.iterator(); i.hasNext();) { - Element specElement = (Element) i.next(); + for (Element specElement : specElements) { Attribute xmlName = specElement.getAttribute("xml-name"); if (xmlName == null) { @@ -368,30 +362,27 @@ } Attribute javaName = specElement.getAttribute("java-name"); - + String attributeValue = javaName == null ? null : javaName.getValue(); //javaName is null if tag does nothing other than add a level to the //hierarchy [Jon Aquino] if (specElement.getName().equals("element")) { - visitor.tagSpecFound(xmlName.getValue(), - (javaName != null) ? javaName.getValue() : null, + visitor.tagSpecFound(xmlName.getValue(), attributeValue, specElement.getChildren()); } if (specElement.getName().equals("attribute")) { - visitor.attributeSpecFound(xmlName.getValue(), - javaName.getValue()); + visitor.attributeSpecFound(xmlName.getValue(), attributeValue); } } } public Object toJava(String text, Class c) { - return (!text.equals("null")) - ? ((CustomConverter) classToCustomConverterMap.get(customConvertableClass( - c))).toJava(text) : null; + return (!text.equals("null")) ? + classToCustomConverterMap.get(customConvertableClass(c)).toJava(text) : null; } protected boolean specifyingTypeExplicitly(Class c) - throws XMLBinderException { + throws XMLBinderException { //The int and double classes are abstract. Filter them out. [Jon Aquino] if (hasCustomConverter(c)) { return false; @@ -412,34 +403,34 @@ Method[] methods = c.getMethods(); //Exact match first [Jon Aquino] - for (int i = 0; i < methods.length; i++) { - if (!methods[i].getName().toUpperCase().equals("SET" + + for (Method method : methods) { + if (!method.getName().toUpperCase().equals("SET" + field.toUpperCase()) && - !methods[i].getName().toUpperCase().equals("ADD" + + !method.getName().toUpperCase().equals("ADD" + field.toUpperCase())) { continue; } - if (methods[i].getParameterTypes().length != 1) { + if (method.getParameterTypes().length != 1) { continue; } - return methods[i]; + return method; } - for (int i = 0; i < methods.length; i++) { - if (!methods[i].getName().toUpperCase().startsWith("SET" + + for (Method method : methods) { + if (!method.getName().toUpperCase().startsWith("SET" + field.toUpperCase()) && - !methods[i].getName().toUpperCase().startsWith("ADD" + + !method.getName().toUpperCase().startsWith("ADD" + field.toUpperCase())) { continue; } - if (methods[i].getParameterTypes().length != 1) { + if (method.getParameterTypes().length != 1) { continue; } - return methods[i]; + return method; } throw new XMLBinderException("Could not find setter named like '" + @@ -447,8 +438,9 @@ } protected String toXML(Object object) { - return ((CustomConverter) classToCustomConverterMap.get(customConvertableClass( - object.getClass()))).toXML(object); + return classToCustomConverterMap.get( + customConvertableClass(object.getClass()) + ).toXML(object); } protected boolean hasCustomConverter(Class fieldClass) { @@ -461,10 +453,7 @@ private Class customConvertableClass(Class c) { //Use #isAssignableFrom rather than #contains because some classes //may be interfaces. [Jon Aquino] - for (Iterator i = classToCustomConverterMap.keySet().iterator(); - i.hasNext();) { - Class customConvertableClass = (Class) i.next(); - + for (Class<?> customConvertableClass : classToCustomConverterMap.keySet()) { if (customConvertableClass.isAssignableFrom(c)) { return customConvertableClass; } @@ -474,10 +463,10 @@ } protected interface SpecVisitor { - public void tagSpecFound(String xmlName, String javaName, - List specChildElements) throws Exception; + void tagSpecFound(String xmlName, String javaName, + List<Element> specChildElements) throws Exception; - public void attributeSpecFound(String xmlName, String javaName) + void attributeSpecFound(String xmlName, String javaName) throws Exception; } @@ -487,9 +476,9 @@ * can't add a .java2xml file to the jar. */ public interface CustomConverter { - public Object toJava(String value); + Object toJava(String value); - public String toXML(Object object); + String toXML(Object object); } public static class XMLBinderException extends Exception { Modified: core/trunk/src/com/vividsolutions/jump/workbench/WorkbenchPropertiesFile.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/WorkbenchPropertiesFile.java 2016-03-26 11:07:43 UTC (rev 4865) +++ core/trunk/src/com/vividsolutions/jump/workbench/WorkbenchPropertiesFile.java 2016-03-26 14:52:22 UTC (rev 4866) @@ -44,11 +44,11 @@ import java.util.Map; import java.util.Set; -import org.jdom.Attribute; -import org.jdom.Document; -import org.jdom.Element; -import org.jdom.JDOMException; -import org.jdom.input.SAXBuilder; +import org.jdom2.Attribute; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; +import org.jdom2.input.SAXBuilder; import com.vividsolutions.jump.workbench.ui.ErrorHandler; ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140 _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel