/* * Copyright (C) 2014 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.v2.test.extensions; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import com.intel.dcsg.cpg.extensions.Extensions; import com.intel.mtwilson.launcher.ws.ext.V2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; /** * * @author jbuhacoff */ @V2 @Path("/test/extensions") public class ExtensionsResource { @GET @Path("/whiteboard") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public WhiteboardMap getWhiteboard() { WhiteboardMap collection = new WhiteboardMap(); Map<String, List<Class<?>>> whiteboard = Extensions.getWhiteboard(); for (String key : whiteboard.keySet()) { ArrayList<String> extensionClassNames = new ArrayList<String>(); List<Class<?>> extensions = whiteboard.get(key); for (Class extension : extensions) { extensionClassNames.add(extension.getName()); } collection.whiteboard.add(new KeyValues(key, extensionClassNames)); } return collection; } @GET @Path("/preferences") @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public PreferencesMap getPreferences() { PreferencesMap collection = new PreferencesMap(); Map<String, List<String>> preferences = Extensions.getPreferences(); for (String key : preferences.keySet()) { ArrayList<String> extensionClassNames = new ArrayList<String>(); List<String> extensions = preferences.get(key); for (String extension : extensions) { extensionClassNames.add(extension); } collection.preferences.put(key, extensionClassNames); } return collection; } public static class KeyValues { public String key; @JsonInclude(JsonInclude.Include.ALWAYS) // jackson 2.0 @JacksonXmlElementWrapper(localName = "values") @JacksonXmlProperty(localName = "value") public List<String> values; public KeyValues(String key, List<String> values) { this.key = key; this.values = values; } } @JacksonXmlRootElement(localName = "whiteboard") public static class WhiteboardMap { public ArrayList<KeyValues> whiteboard = new ArrayList<KeyValues>(); } @JacksonXmlRootElement(localName = "preferences") public static class PreferencesMap { @JsonInclude(JsonInclude.Include.ALWAYS) // jackson 2.0 @JacksonXmlElementWrapper(localName = "preferences") @JacksonXmlProperty(localName = "preference") public HashMap<String, ArrayList<String>> preferences = new HashMap<String, ArrayList<String>>(); } }