/******************************************************************************* * Copyright (c) 2011 SAP AG * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.libra.framework.editor.integration.internal.admin.osgijmx; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.management.openmbean.CompositeData; import javax.management.openmbean.TabularData; import org.osgi.jmx.framework.ServiceStateMBean; /** * @author Kaloyan Raev */ public class ServicesData { private Map<Long, ServiceInfo> map = new HashMap<Long, ServicesData.ServiceInfo>(); public ServicesData(ServiceStateMBean serviceStateMBean) throws IOException { TabularData data = serviceStateMBean.listServices(); Set<List> keys = (Set<List>) data.keySet(); for (List key : keys) { CompositeData serviceInfo = data.get(((Collection) key).toArray()); Long serviceId = (Long) serviceInfo.get(ServiceStateMBean.IDENTIFIER); Long bundleId = (Long) serviceInfo.get(ServiceStateMBean.BUNDLE_IDENTIFIER); String[] objectClass = (String[]) serviceInfo.get(ServiceStateMBean.OBJECT_CLASS); Long[] usingBundles = (Long[]) serviceInfo.get(ServiceStateMBean.USING_BUNDLES); map.put(serviceId, new ServiceInfo(serviceId, bundleId, objectClass, usingBundles)); } } public ServiceInfo getService(Long serviceId) { return map.get(serviceId); } public static class ServiceInfo { private Long serviceId; private Long bundleId; private String[] objectClass; private Long[] usingBundles; ServiceInfo(Long serviceId, Long bundleId, String[] objectClass, Long[] usingBundles) { this.serviceId = serviceId; this.bundleId = bundleId; this.objectClass = objectClass; this.usingBundles = usingBundles; } public Long getServiceId() { return serviceId; } public Long getBundleId() { return bundleId; } public String[] getObjectClass() { return objectClass; } public Long[] getUsingBundles() { return usingBundles; } } }