BlacktiePluginDiscoveryComponent.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:4k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * RHQ Management Platform
  3.  * Copyright (C) 2005-2008 Red Hat, Inc.
  4.  * All rights reserved.
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation version 2 of the License.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; if not, write to the Free Software
  17.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19. package org.rhq.plugins.blacktie;
  20. import java.util.HashSet;
  21. import java.util.List;
  22. import java.util.Properties;
  23. import java.util.Set;
  24. import org.apache.commons.logging.Log;
  25. import org.apache.commons.logging.LogFactory;
  26. import org.jboss.blacktie.jatmibroker.core.conf.XMLEnvHandler;
  27. import org.jboss.blacktie.jatmibroker.core.conf.XMLParser;
  28. import org.rhq.core.domain.configuration.Configuration;
  29. import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
  30. import org.rhq.core.pluginapi.inventory.ProcessScanResult;
  31. import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
  32. import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
  33. /**
  34.  * This can be the start of your own custom plugin's discovery component. Review
  35.  * the javadoc for {@link ResourceDiscoveryComponent}.
  36.  * 
  37.  * @author John Mazzitelli
  38.  */
  39. public class BlacktiePluginDiscoveryComponent implements
  40. ResourceDiscoveryComponent {
  41. private final Log log = LogFactory
  42. .getLog(BlacktiePluginDiscoveryComponent.class);
  43. /**
  44.  * Review the javadoc for both {@link ResourceDiscoveryComponent} and
  45.  * {@link ResourceDiscoveryContext} to learn what you need to do in this
  46.  * method.
  47.  * 
  48.  * @see ResourceDiscoveryComponent#discoverResources(ResourceDiscoveryContext)
  49.  */
  50. public Set<DiscoveredResourceDetails> discoverResources(
  51. ResourceDiscoveryContext context) {
  52. log.info("Discovering my custom plugin's resources");
  53. // if your plugin descriptor defined one or more <process-scan>s, then
  54. // see if the plugin container
  55. // auto-discovered processes using those process scan definitions.
  56. // Process all those that were found.
  57. List<ProcessScanResult> autoDiscoveryResults = context
  58. .getAutoDiscoveredProcesses();
  59. for (ProcessScanResult autoDiscoveryResult : autoDiscoveryResults) {
  60. // determine if you want to include the result in this method's
  61. // returned set of discovered resources
  62. }
  63. List<Configuration> pluginConfigs = context.getPluginConfigurations();
  64. for (Configuration pluginConfig : pluginConfigs) {
  65. // pluginConfig contains information on a resource that was manually
  66. // discovered/entered by the user
  67. // take it and build a details object that represents that resource
  68. }
  69. // now perform your own discovery mechanism, if you have one. For each
  70. // resource discovered, you need to
  71. // create a details object that describe the resource that you
  72. // discovered.
  73. HashSet<DiscoveredResourceDetails> set = new HashSet<DiscoveredResourceDetails>();
  74. // key = this must be a unique string across all of your resources - see
  75. // docs for uniqueness rules
  76. // name = this is the name you give the new resource; it does not
  77. // necessarily have to be unique
  78. // version = this is any string that corresponds to the resource's
  79. // version
  80. // description = this is any string that you want to assign as the
  81. // default description for your resource
  82. try {
  83. Properties prop = new Properties();
  84. XMLEnvHandler handler = new XMLEnvHandler(prop);
  85. XMLParser xmlenv = new XMLParser(handler, "btconfig.xsd");
  86. xmlenv.parse("btconfig.xml");
  87. String domainName = prop.getProperty("blacktie.domain.name");
  88. String key = domainName + " key";
  89. String name = domainName;
  90. String version = prop.getProperty("blacktie.domain.version");;
  91. String description = "the blacktie domain";
  92. DiscoveredResourceDetails resource = new DiscoveredResourceDetails(
  93. context.getResourceType(), key, name, version, description,
  94. null, null);
  95. set.add(resource);
  96. } catch (Exception e) {
  97. log.error("get domain name error with " + e);
  98. e.printStackTrace();
  99. }
  100. return set;
  101. }
  102. }