org.rhq.enterprise.server.xmlschema
Class ServerPluginDescriptorUtil

java.lang.Object
  extended by org.rhq.enterprise.server.xmlschema.ServerPluginDescriptorUtil

public abstract class ServerPluginDescriptorUtil
extends java.lang.Object

Utilities for server-side plugin descriptors.

Author:
John Mazzitelli

Constructor Summary
ServerPluginDescriptorUtil()
           
 
Method Summary
static ServerPlugin determineObsoletePlugin(ServerPlugin plugin1, ServerPlugin plugin2)
          Determines which of the two plugins is obsolete - in other words, this determines which plugin is older.
static ComparableVersion getPluginVersion(java.io.File pluginFile, ServerPluginDescriptorType descriptor)
          Returns the version for the plugin represented by the given descriptor/file.
static javax.xml.bind.Unmarshaller getServerPluginDescriptorUnmarshaller()
          This will return a JAXB unmarshaller that will enable the caller to parse a server plugin descriptor.
static ServerPluginDescriptorType loadPluginDescriptorFromUrl(java.net.URL pluginJarFileUrl)
          Loads a plugin descriptor from the given plugin jar and returns it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServerPluginDescriptorUtil

public ServerPluginDescriptorUtil()
Method Detail

determineObsoletePlugin

public static ServerPlugin determineObsoletePlugin(ServerPlugin plugin1,
                                                   ServerPlugin plugin2)
Determines which of the two plugins is obsolete - in other words, this determines which plugin is older. Each plugin must have the same logical name, but one of which will be determined to be obsolete and should not be deployed. If they have the same MD5, they are identical, so null will be returned. Otherwise, the versions are compared and the one with the oldest version is obsolete. If they have the same versions, the one with the oldest timestamp is obsolete. If they have the same timestamp too, we have no other way to determine obsolescence so plugin1 will be picked arbitrarily and a message will be logged when this occurs.

Parameters:
plugin1 -
plugin2 -
Returns:
a reference to the obsolete plugin (plugin1 or plugin2 reference will be returned) null is returned if they are the same (i.e. they have the same MD5)
Throws:
java.lang.IllegalArgumentException - if the two plugins have different logical names

getPluginVersion

public static ComparableVersion getPluginVersion(java.io.File pluginFile,
                                                 ServerPluginDescriptorType descriptor)
                                          throws java.lang.Exception
Returns the version for the plugin represented by the given descriptor/file. If the descriptor defines a version, that is considered the version of the plugin. However, if the plugin descriptor does not define a version, the plugin jar's manifest is searched for an implementation version string and if one is found that is the version of the plugin. If the manifest entry is also not found, the plugin does not have a version associated with it, which causes this method to throw an exception.

Parameters:
pluginFile - the plugin jar
descriptor - the plugin descriptor as found in the plugin jar (if null, the plugin file will be read and the descriptor parsed from it)
Returns:
the version of the plugin
Throws:
java.lang.Exception - if the plugin is invalid, there is no version for the plugin or the version string is invalid

loadPluginDescriptorFromUrl

public static ServerPluginDescriptorType loadPluginDescriptorFromUrl(java.net.URL pluginJarFileUrl)
                                                              throws java.lang.Exception
Loads a plugin descriptor from the given plugin jar and returns it. If the given jar does not have a server plugin descriptor, null will be returned, meaning this is not a server plugin jar.

Parameters:
pluginJarFileUrl - URL to a plugin jar file
Returns:
the plugin descriptor found in the given plugin jar file, or null if there is no plugin descriptor in the jar file
Throws:
java.lang.Exception - if failed to parse the descriptor file found in the plugin jar

getServerPluginDescriptorUnmarshaller

public static javax.xml.bind.Unmarshaller getServerPluginDescriptorUnmarshaller()
                                                                         throws java.lang.Exception
This will return a JAXB unmarshaller that will enable the caller to parse a server plugin descriptor. The returned unmarshaller will have a ValidationEventCollector installed as an event handler which can be used to obtain error messages if the unmarshaller fails to parse an XML document.

Returns:
a JAXB unmarshaller enabling the caller to parse server plugin descriptors
Throws:
java.lang.Exception - if an unmarshaller could not be created


Copyright © 2008-2009 Red Hat, Inc.. All Rights Reserved.