aQute.lib.json.CollectionHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz.aQute.bnd Show documentation
Show all versions of biz.aQute.bnd Show documentation
This command line utility is the Swiss army knife of OSGi. It provides you with a breadth of tools to understand and manage OSGi based systems. This project basically uses bndlib.
package aQute.lib.json;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeSet;
import java.util.Vector;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
public class CollectionHandler extends Handler {
Class> rawClass;
Type componentType;
CollectionHandler(Class> rawClass, Type componentType) {
this.componentType = componentType;
if (rawClass.isInterface()) {
if (rawClass.isAssignableFrom(ArrayList.class))
rawClass = ArrayList.class;
else if (rawClass.isAssignableFrom(LinkedList.class))
rawClass = LinkedList.class;
else if (rawClass.isAssignableFrom(HashSet.class))
rawClass = HashSet.class;
else if (rawClass.isAssignableFrom(TreeSet.class))
rawClass = TreeSet.class;
else if (rawClass.isAssignableFrom(Vector.class))
rawClass = Vector.class;
else if (rawClass.isAssignableFrom(ConcurrentLinkedQueue.class))
rawClass = ConcurrentLinkedQueue.class;
else if (rawClass.isAssignableFrom(CopyOnWriteArrayList.class))
rawClass = CopyOnWriteArrayList.class;
else if (rawClass.isAssignableFrom(CopyOnWriteArraySet.class))
rawClass = CopyOnWriteArraySet.class;
else
throw new IllegalArgumentException("Unknown interface type for collection: " + rawClass);
}
this.rawClass = rawClass;
}
@Override
public void encode(Encoder app, Object object, Map