Allow compilation and usage on JDK6
diff --git a/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java b/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java
index 9f188a9..8afd819 100644
--- a/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java
+++ b/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java
@@ -49,7 +49,7 @@
}
private static Object createJSON(boolean includeSex)
throws UnsupportedEncodingException {
- Map<String,Object> map = new HashMap<>();
+ Map<String,Object> map = new HashMap<String,Object>();
map.put("firstName", "son");
map.put("lastName", "dj");
if (includeSex) {
diff --git a/json/pom.xml b/json/pom.xml
index 157c0c5..9200122 100644
--- a/json/pom.xml
+++ b/json/pom.xml
@@ -8,7 +8,7 @@
</parent>
<groupId>org.apidesign.html</groupId>
<artifactId>net.java.html.json</artifactId>
- <version>0.3</version>
+ <version>0.3.1</version>
<name>JSON Model in Java</name>
<url>http://maven.apache.org</url>
<properties>
diff --git a/json/src/main/java/org/apidesign/html/json/impl/Bindings.java b/json/src/main/java/org/apidesign/html/json/impl/Bindings.java
index 7770cdb..c938ef3 100644
--- a/json/src/main/java/org/apidesign/html/json/impl/Bindings.java
+++ b/json/src/main/java/org/apidesign/html/json/impl/Bindings.java
@@ -41,13 +41,13 @@
}
public <M> PropertyBinding registerProperty(String propName, M model, SetAndGet<M> access, boolean readOnly) {
- PropertyBinding pb = PropertyBindingAccessor.create(new PBData<>(propName, model, access, readOnly));
+ PropertyBinding pb = PropertyBindingAccessor.create(new PBData<M>(propName, model, access, readOnly));
bp.bind(pb, model, data);
return pb;
}
public <M> FunctionBinding registerFunction(String name, M model, Callback<M> access) {
- FunctionBinding fb = PropertyBindingAccessor.createFunction(new FBData<>(name, model, access));
+ FunctionBinding fb = PropertyBindingAccessor.createFunction(new FBData<M>(name, model, access));
bp.expose(fb, model, data);
return fb;
}
@@ -61,7 +61,7 @@
Technology<Data> bp, Object model
) {
Data d = bp.wrapModel(model);
- return new Bindings<>(d, bp);
+ return new Bindings<Data>(d, bp);
}
diff --git a/json/src/main/java/org/apidesign/html/json/impl/JSON.java b/json/src/main/java/org/apidesign/html/json/impl/JSON.java
index 480da09..eb1665c 100644
--- a/json/src/main/java/org/apidesign/html/json/impl/JSON.java
+++ b/json/src/main/java/org/apidesign/html/json/impl/JSON.java
@@ -109,7 +109,7 @@
private static final Map<Class,FromJSON<?>> froms;
static {
- Map<Class,FromJSON<?>> m = new HashMap<>();
+ Map<Class,FromJSON<?>> m = new HashMap<Class,FromJSON<?>>();
froms = m;
}
public static void register(FromJSON<?> from) {
@@ -160,8 +160,7 @@
Class.forName(modelClazz.getName(), true, l);
}
modelClazz.newInstance();
- } catch (ClassNotFoundException | InstantiationException |
- IllegalAccessException | SecurityException ex) {
+ } catch (Exception ex) {
// ignore and try again
}
}
diff --git a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java
index c9450a6..94915cb 100644
--- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java
+++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java
@@ -82,7 +82,7 @@
* @author Jaroslav Tulach <jtulach@netbeans.org>
*/
@ServiceProvider(service=Processor.class)
-@SupportedSourceVersion(SourceVersion.RELEASE_7)
+@SupportedSourceVersion(SourceVersion.RELEASE_6)
@SupportedAnnotationTypes({
"net.java.html.json.Model",
"net.java.html.json.Function",
@@ -93,8 +93,8 @@
})
public final class ModelProcessor extends AbstractProcessor {
private static final Logger LOG = Logger.getLogger(ModelProcessor.class.getName());
- private final Map<Element,String> models = new WeakHashMap<>();
- private final Map<Element,Prprt[]> verify = new WeakHashMap<>();
+ private final Map<Element,String> models = new WeakHashMap<Element,String>();
+ private final Map<Element,Prprt[]> verify = new WeakHashMap<Element,Prprt[]>();
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
boolean ok = true;
@@ -159,10 +159,10 @@
models.put(e, className);
try {
StringWriter body = new StringWriter();
- List<String> propsGetSet = new ArrayList<>();
- List<String> functions = new ArrayList<>();
- Map<String, Collection<String>> propsDeps = new HashMap<>();
- Map<String, Collection<String>> functionDeps = new HashMap<>();
+ List<String> propsGetSet = new ArrayList<String>();
+ List<String> functions = new ArrayList<String>();
+ Map<String, Collection<String>> propsDeps = new HashMap<String, Collection<String>>();
+ Map<String, Collection<String>> functionDeps = new HashMap<String, Collection<String>>();
Prprt[] props = createProps(e, m.properties());
if (!generateComputedProperties(body, props, e.getEnclosedElements(), propsGetSet, propsDeps)) {
@@ -217,7 +217,7 @@
for (int i = 0; i < propsGetSet.size(); i += 5) {
final String set = propsGetSet.get(i + 2);
String tn = propsGetSet.get(i + 4);
- if (processingEnv.getSourceVersion().compareTo(SourceVersion.RELEASE_7) < 0) {
+ if (processingEnv.getSourceVersion().compareTo(SourceVersion.RELEASE_6) <= 0) {
String btn = findBoxedType(tn);
if (btn != null) {
tn = btn;
@@ -311,8 +311,15 @@
w.append(type).append(".valueOf((String)ret[" + cnt + "]);\n");
} else if (isPrimitive(type)) {
w.append(" this.prop_").append(pn);
- w.append(" = ret[" + cnt + "] == null ? (").append(type).append(")0 : ");
- w.append("((Number)").append("ret[" + cnt + "]).");
+ w.append(" = ret[" + cnt + "] == null ? ");
+ if ("char".equals(type)) {
+ w.append("0 : ((Character)");
+ } else if ("boolean".equals(type)) {
+ w.append("false : ((Boolean)");
+ } else {
+ w.append("0 : ((Number)");
+ }
+ w.append("ret[" + cnt + "]).");
w.append(type).append("Value();\n");
} else {
w.append(" this.prop_").append(pn);
@@ -472,7 +479,7 @@
Collection<String> depends = deps.get(dn);
if (depends == null) {
- depends = new LinkedHashSet<>();
+ depends = new LinkedHashSet<String>();
deps.put(dn, depends);
}
depends.add(sn);
@@ -685,14 +692,14 @@
Collection<String> change = functionDeps.get(pn);
if (change == null) {
- change = new ArrayList<>();
+ change = new ArrayList<String>();
functionDeps.put(pn, change);
}
change.add(call.toString());
for (String dpn : findDerivedFrom(propDeps, pn)) {
change = functionDeps.get(dpn);
if (change == null) {
- change = new ArrayList<>();
+ change = new ArrayList<String>();
functionDeps.put(dpn, change);
}
change.add(call.toString());
@@ -741,7 +748,7 @@
}
String modelClass = null;
boolean expectsList = false;
- List<String> args = new ArrayList<>();
+ List<String> args = new ArrayList<String>();
{
for (VariableElement ve : e.getParameters()) {
TypeMirror modelType = null;
@@ -1117,7 +1124,7 @@
private Iterable<String> findParamNames(
Element e, String url, String jsonParam, StringBuilder... both
) {
- List<String> params = new ArrayList<>();
+ List<String> params = new ArrayList<String>();
int wasJSON = 0;
for (int pos = 0; ;) {
@@ -1165,11 +1172,13 @@
"long".equals(type) ||
"short".equals(type) ||
"byte".equals(type) ||
+ "char".equals(type) ||
+ "boolean".equals(type) ||
"float".equals(type);
}
private static Collection<String> findDerivedFrom(Map<String, Collection<String>> propsDeps, String derivedProp) {
- Set<String> names = new HashSet<>();
+ Set<String> names = new HashSet<String>();
for (Map.Entry<String, Collection<String>> e : propsDeps.entrySet()) {
if (e.getValue().contains(derivedProp)) {
names.add(e.getKey());
@@ -1269,17 +1278,21 @@
}
String typeName(ProcessingEnvironment env) {
+ RuntimeException ex;
try {
return p.type().getName();
- } catch (IncompleteAnnotationException | AnnotationTypeMismatchException ex) {
- for (Object v : getAnnoValues(env, e, tm)) {
- String s = v.toString().replace(" ", "");
- if (s.startsWith("type=") && s.endsWith(".class")) {
- return s.substring(5, s.length() - 6);
- }
- }
- throw ex;
+ } catch (IncompleteAnnotationException e) {
+ ex = e;
+ } catch (AnnotationTypeMismatchException e) {
+ ex = e;
}
+ for (Object v : getAnnoValues(env, e, tm)) {
+ String s = v.toString().replace(" ", "");
+ if (s.startsWith("type=") && s.endsWith(".class")) {
+ return s.substring(5, s.length() - 6);
+ }
+ }
+ throw ex;
}
diff --git a/json/src/test/java/net/java/html/json/Compile.java b/json/src/test/java/net/java/html/json/Compile.java
index 19da280..9fddf7a 100644
--- a/json/src/test/java/net/java/html/json/Compile.java
+++ b/json/src/test/java/net/java/html/json/Compile.java
@@ -51,7 +51,8 @@
* @author Jaroslav Tulach <jtulach@netbeans.org>
*/
final class Compile implements DiagnosticListener<JavaFileObject> {
- private final List<Diagnostic<? extends JavaFileObject>> errors = new ArrayList<>();
+ private final List<Diagnostic<? extends JavaFileObject>> errors =
+ new ArrayList<Diagnostic<? extends JavaFileObject>>();
private final Map<String, byte[]> classes;
private final String pkg;
private final String cls;
@@ -83,7 +84,8 @@
/** Obtains errors created during compilation.
*/
public List<Diagnostic<? extends JavaFileObject>> getErrors() {
- List<Diagnostic<? extends JavaFileObject>> err = new ArrayList<>();
+ List<Diagnostic<? extends JavaFileObject>> err;
+ err = new ArrayList<Diagnostic<? extends JavaFileObject>>();
for (Diagnostic<? extends JavaFileObject> diagnostic : errors) {
if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
err.add(diagnostic);
@@ -95,7 +97,8 @@
private Map<String, byte[]> compile(final String html, final String code) throws IOException {
StandardJavaFileManager sjfm = ToolProvider.getSystemJavaCompiler().getStandardFileManager(this, null, null);
- final Map<String, ByteArrayOutputStream> class2BAOS = new HashMap<>();
+ final Map<String, ByteArrayOutputStream> class2BAOS;
+ class2BAOS = new HashMap<String, ByteArrayOutputStream>();
JavaFileObject file = new SimpleJavaFileObject(URI.create("mem://mem"), Kind.SOURCE) {
@Override
@@ -201,7 +204,7 @@
ToolProvider.getSystemJavaCompiler().getTask(null, jfm, this, /*XXX:*/Arrays.asList("-source", sourceLevel, "-target", "1.7"), null, Arrays.asList(file)).call();
- Map<String, byte[]> result = new HashMap<>();
+ Map<String, byte[]> result = new HashMap<String, byte[]>();
for (Map.Entry<String, ByteArrayOutputStream> e : class2BAOS.entrySet()) {
result.put(e.getKey(), e.getValue().toByteArray());
diff --git a/json/src/test/java/net/java/html/json/MapModelTest.java b/json/src/test/java/net/java/html/json/MapModelTest.java
index 3352219..85dd0be 100644
--- a/json/src/test/java/net/java/html/json/MapModelTest.java
+++ b/json/src/test/java/net/java/html/json/MapModelTest.java
@@ -143,7 +143,7 @@
@Override
public Map<String, One> wrapModel(Object model) {
- return new HashMap<>();
+ return new HashMap<String, One>();
}
@Override
diff --git a/json/src/test/java/net/java/html/json/ModelTest.java b/json/src/test/java/net/java/html/json/ModelTest.java
index 28a610b..a981164 100644
--- a/json/src/test/java/net/java/html/json/ModelTest.java
+++ b/json/src/test/java/net/java/html/json/ModelTest.java
@@ -240,7 +240,7 @@
}
private static class MockTechnology implements Technology<Object> {
- private final List<String> mutated = new ArrayList<>();
+ private final List<String> mutated = new ArrayList<String>();
@Override
public Object wrapModel(Object model) {
diff --git a/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java b/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java
index a74edb6..90e6e5f 100644
--- a/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java
+++ b/json/src/test/java/org/apidesign/html/json/impl/JSONListTest.java
@@ -40,7 +40,7 @@
*/
public class JSONListTest implements Technology<Object> {
private boolean replaceArray;
- private final Map<String,PropertyBinding> bindings = new HashMap<>();
+ private final Map<String,PropertyBinding> bindings = new HashMap<String,PropertyBinding>();
public JSONListTest() {
}
diff --git a/pom.xml b/pom.xml
index d7d72be..4838f65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -122,8 +122,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
- <source>1.7</source>
- <target>1.7</target>
+ <source>1.6</source>
+ <target>1.6</target>
</configuration>
</plugin>
</plugins>