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

Reply via email to