Apply latest bnd code
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1349301 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/bundleplugin/src/main/java/aQute/lib/json/CollectionHandler.java b/bundleplugin/src/main/java/aQute/lib/json/CollectionHandler.java
index 3fb14ee..89492c1 100644
--- a/bundleplugin/src/main/java/aQute/lib/json/CollectionHandler.java
+++ b/bundleplugin/src/main/java/aQute/lib/json/CollectionHandler.java
@@ -37,7 +37,7 @@
@Override void encode(Encoder app, Object object, Map<Object, Type> visited)
throws IOException, Exception {
- Collection<?> collection = (Collection<?>) object;
+ Iterable<?> collection = (Iterable<?>) object;
app.append("[");
String del = "";
diff --git a/bundleplugin/src/main/java/aQute/lib/json/JSONCodec.java b/bundleplugin/src/main/java/aQute/lib/json/JSONCodec.java
index a45b5b4..fa5c751 100644
--- a/bundleplugin/src/main/java/aQute/lib/json/JSONCodec.java
+++ b/bundleplugin/src/main/java/aQute/lib/json/JSONCodec.java
@@ -53,6 +53,9 @@
private static FileHandler fh = new FileHandler();
private static ByteArrayHandler byteh = new ByteArrayHandler();
+ boolean ignorenull;
+
+
/**
* Create a new Encoder with the state and appropriate API.
*
@@ -147,7 +150,7 @@
if (Enum.class.isAssignableFrom(clazz))
h = new EnumHandler(clazz);
- else if (Collection.class.isAssignableFrom(clazz)) // A Non Generic
+ else if (Iterable.class.isAssignableFrom(clazz)) // A Non Generic
// collection
h = dch;
@@ -188,7 +191,7 @@
Type rawType = pt.getRawType();
if (rawType instanceof Class) {
Class<?> rawClass = (Class<?>) rawType;
- if (Collection.class.isAssignableFrom(rawClass))
+ if (Iterable.class.isAssignableFrom(rawClass))
h = new CollectionHandler(rawClass, pt.getActualTypeArguments()[0]);
else if (Map.class.isAssignableFrom(rawClass))
h = new MapHandler(rawClass, pt.getActualTypeArguments()[0],
@@ -478,4 +481,18 @@
+ type);
}
+ /**
+ * Ignore null values in output and input
+ * @param ignorenull
+ * @return
+ */
+ public JSONCodec setIgnorenull(boolean ignorenull) {
+ this.ignorenull = ignorenull;
+ return this;
+ }
+
+ public boolean isIgnorenull() {
+ return ignorenull;
+ }
+
}
\ No newline at end of file
diff --git a/bundleplugin/src/main/java/aQute/lib/json/MapHandler.java b/bundleplugin/src/main/java/aQute/lib/json/MapHandler.java
index 5a413b6..9299878 100644
--- a/bundleplugin/src/main/java/aQute/lib/json/MapHandler.java
+++ b/bundleplugin/src/main/java/aQute/lib/json/MapHandler.java
@@ -68,7 +68,8 @@
c = r.next();
Object value = r.codec.decode(valueType, r);
- map.put(key, value);
+ if ( value != null || !r.codec.ignorenull)
+ map.put(key, value);
c = r.skipWs();
diff --git a/bundleplugin/src/main/java/aQute/lib/json/ObjectHandler.java b/bundleplugin/src/main/java/aQute/lib/json/ObjectHandler.java
index fc6f6bd..2a876a4 100644
--- a/bundleplugin/src/main/java/aQute/lib/json/ObjectHandler.java
+++ b/bundleplugin/src/main/java/aQute/lib/json/ObjectHandler.java
@@ -95,7 +95,8 @@
if (f != null) {
// We have a field and thus a type
Object value = r.codec.decode(f.getGenericType(), r);
- f.set(targetObject, value);
+ if ( value != null || !r.codec.ignorenull)
+ f.set(targetObject, value);
} else {
// No field, but may extra is defined
if (extra == null) {