/* * This class is part of the OSGiJMX plugin for the VisualVM, allowing * to have some basic administration functionality over an OSGi platform * * Copyright (C) 2009 Kiev Gama (kiev.gama at gmail.com) * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * **/ package osgijmx.vvm; import com.sun.tools.visualvm.application.Application; import com.sun.tools.visualvm.core.ui.DataSourceView; import com.sun.tools.visualvm.core.ui.DataSourceViewProvider; import com.sun.tools.visualvm.core.ui.DataSourceViewsManager; import com.sun.tools.visualvm.tools.jmx.JmxModelFactory; import javax.management.MBeanServerConnection; import javax.management.ObjectName; /** * * @author kiev */ public class BundlesViewProvider extends DataSourceViewProvider { private static DataSourceViewProvider instance = new BundlesViewProvider(); @Override public boolean supportsViewFor(Application application) { boolean osgiMBeanAvailable = false; try { ObjectName name = new ObjectName("osgijmx:type=framework"); MBeanServerConnection mbs = JmxModelFactory.getJmxModelFor(application).getMBeanServerConnection(); osgiMBeanAvailable = null != mbs.getMBeanInfo(name); } catch (Exception ex) { ex.printStackTrace(); } return osgiMBeanAvailable; } @Override public synchronized DataSourceView createView(final Application application) { return new BundlesView(application); } static void initialize() { DataSourceViewsManager.sharedInstance().addViewProvider(instance, Application.class); } static void unregister() { DataSourceViewsManager.sharedInstance().removeViewProvider(instance); } }