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 osgi.enroute.easse.simple.adapter Show documentation
Show all versions of osgi.enroute.easse.simple.adapter Show documentation
Provides a mapping from Event Admin events to Javascript Server Side Events (SSE). This bundle registers under /sse/1, the remaining path is treated as the topic. It will then send all matching events to the browser through SSE. The type of the event is org.osgi.service.eventadmin;topic=%s, the data payload is a JSON representation of the event properties.
The newest version!
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