blob: babe8ccf1f4615cdf90ded1f5cef60f094ac9f72 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 VMware Inc.
* 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:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.gemini.mgmt.framework.internal;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.TabularDataSupport;
import org.eclipse.gemini.mgmt.framework.CustomBundleWiringStateMBean;
import org.eclipse.gemini.mgmt.internal.OSGiProperties;
import org.osgi.framework.wiring.BundleRequirement;
public class OSGiBundleRequirement {
private final BundleRequirement bundleRequirement;
public OSGiBundleRequirement(BundleRequirement bundleRequirement) {
this.bundleRequirement = bundleRequirement;
}
public CompositeData asCompositeData() {
try {
TabularDataSupport tabularAttributes = new TabularDataSupport(CustomBundleWiringStateMBean.ATTRIBUTES_TYPE);
Map<String, Object> attributes = bundleRequirement.getAttributes();
for (Entry<String, Object> attribute : attributes.entrySet()) {
tabularAttributes.put(OSGiProperties.encode(attribute.getKey(), attribute.getValue()));
}
TabularDataSupport tabularDirectives = new TabularDataSupport(CustomBundleWiringStateMBean.DIRECTIVES_TYPE);
Map<String, String> directives = bundleRequirement.getDirectives();
for (Entry<String, String> directive : directives.entrySet()) {
tabularDirectives.put(new CompositeDataSupport(CustomBundleWiringStateMBean.PROPERTY_TYPE, OSGiProperties.getDirectiveKeyValueItem(directive.getKey(), directive.getValue())));
}
Map<String, Object> items = new HashMap<String, Object>();
items.put(CustomBundleWiringStateMBean.ATTRIBUTES, tabularAttributes);
items.put(CustomBundleWiringStateMBean.DIRECTIVES, tabularDirectives);
items.put(CustomBundleWiringStateMBean.NAMESPACE, bundleRequirement.getNamespace());
return new CompositeDataSupport(CustomBundleWiringStateMBean.BUNDLE_REQUIREMENT_TYPE, items);
} catch (OpenDataException e) {
throw new IllegalStateException("Cannot form bundle requirment open data", e);
}
}
}