package de.twenty11.skysail.server.ext.osgimonitor.resources; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.restlet.data.Form; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.resource.Get; import org.restlet.resource.Post; import org.restlet.resource.ResourceException; import de.twenty11.skysail.common.Presentation; import de.twenty11.skysail.common.PresentationStyle; import de.twenty11.skysail.common.ext.osgimonitor.domain.BundleDescriptor; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.server.core.restlet.ListServerResource2; import de.twenty11.skysail.server.ext.osgimonitor.OsgiMonitorViewerApplication; /** * Restlet Resource class for OSGi Bundles. * */ @Presentation(preferred = PresentationStyle.LIST2) public class BundlesResource extends ListServerResource2<BundleDescriptor> { private List<Bundle> bundles; public BundlesResource() { setName("osgimonitor bundles resource"); setDescription("The resource containing the list of bundles"); } @Override protected void doInit() throws ResourceException { super.doInit(); OsgiMonitorViewerApplication app = (OsgiMonitorViewerApplication) getApplication(); BundleContext bundleContext = app.getBundleContext(); if (bundleContext == null) { bundles = Collections.emptyList(); } else { bundles = Arrays.asList(bundleContext.getBundles()); } } @Override @Get("html|json|csv") public SkysailResponse<List<BundleDescriptor>> getEntities() { return super.getEntities("listing all bundles"); } @Override protected List<BundleDescriptor> getData() { List<BundleDescriptor> result = new ArrayList<BundleDescriptor>(); for (Bundle bundle : bundles) { // BundleDescriptor bundleDescriptor = new BundleDescriptor(bundle); // if (filterMatches(bundleDescriptor)) { // result.add(bundleDescriptor); // } } return result; } @Post public Representation install(String location) { String prefix = "prefix"; if (!location.startsWith(prefix)) { return new StringRepresentation("location didn't start with '" + prefix + "'"); } return new StringRepresentation("success"); } @Override protected boolean match(BundleDescriptor object, String pattern) { return object.getSymbolicName().contains(pattern); } @Override public BundleDescriptor getData(Form form) { // TODO Auto-generated method stub return null; } @Override public SkysailResponse<?> addEntity(BundleDescriptor entity) { // TODO Auto-generated method stub return null; } }