
org.jboss.mx.loading.MBeanElement Maven / Gradle / Ivy
/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.mx.loading;
import java.util.*;
/**
* Dataholder class used with MBean file parsers. Contains the information
* that at minimum should allow the MBean loaded and registered to the MBean
* server.
*
* @see org.jboss.mx.loading.MBeanFileParser
* @see org.jboss.mx.loading.MLetParser
* @see org.jboss.mx.loading.XMLMBeanParser
*
* @author Juha Lindfors.
* @version $Revision: 81019 $
*
*/
public class MBeanElement
{
// Attributes ----------------------------------------------------
// Constants -----------------------------------------------------
/**
* Property key for setting the boolean value 'delegateToCLR' for MLet
* MBeans (JMX 1.2)
*/
public final static String MLET_DELEGATE_TO_CLR = "delegateToCLR";
/**
* Additional properties to be provided to the MBean installer/registration
* process. This map should contain properties that are not necessarily
* shared between all MBeans (for example, the delegateToCLR property for
* MLets).
*/
private Map properties = new HashMap(2);
/**
* Fully qualified class name.
*/
private String code = null;
/**
* Name of serialized MBean representation in the archive.
*/
private String object = null;
/**
* Object name
*/
private String name = null;
/**
* Overrides default codebase.
*/
private String codebase = null;
/**
* MBean jars.
*/
private ArrayList archives = new ArrayList();
/**
* spec only allows one version tag -- doesn't work very well with an archivelist.
*/
private ArrayList versions = new ArrayList();
/**
* MBean constructor argument types.
*/
private ArrayList argTypes = new ArrayList();
/**
* MBean constructor argument values.
*/
private ArrayList argValues = new ArrayList();
// Public --------------------------------------------------------
/**
* Returns fully qualified class name of the MBean.
*
* @return class name or null if name not set
*/
public String getCode()
{
return code;
}
/**
* Returns the name of a serialized MBean representation in the archive.
* Note that if the archive contains a file structure then the path to the
* serialized file is included in this string.
*
* @return serial file name or null if not set
*/
public String getObject()
{
return object;
}
/**
* Returns the object name of the MBean.
*
* @return string representation of object name or null if not set
*/
public String getName()
{
return name;
}
/**
* Returns MBean archives.
*
* @return a list of MBean Java archives. An empty list if archives is not set.
*/
public List getArchives()
{
return archives;
}
/**
* Returns MBean versions.
*
* @return a list of MBean versions. An empty list if versions is not set.
*/
public List getVersions()
{
return versions;
}
/**
* Returns MBean codebase URL.
*
* @return codebase or null if not set
*/
public String getCodebase()
{
return codebase;
}
/**
* Sets the fully qualified class name of the MBean entry. The name is trimmed
* of quotes (") and additional equals (=) sign.
*
* @param code fully qualified class name of the MBean
*/
public void setCode(String code)
{
this.code = trim(code);
if (this.code.endsWith(".class"))
this.code = this.code.substring(0, this.code.length() - 6);
}
/**
* Sets the name of the serialized MBean instance. Notice that if the archive
* contains a file structure its path must be included in the name. Tje name is
* trimmed of quotes (") and additional equals (=) sign.
*
* @param object file name and path in the archive
*/
public void setObject(String object)
{
this.object = trim(object);
}
/**
* Sets the object name of the MBean. The name is trimmed of quotes (") and additional
* equals (=) sign.
*
* @param name string representation of an MBean object name
*/
public void setName(String name)
{
this.name = trim(name);
}
/**
* Sets the code base for an MLET entry. The codebase is trimmed of quotes (") and
* additional equals (=) sign.
*
* @param url url string pointing to the codebase
*/
public void setCodebase(String url)
{
this.codebase = trim(url);
}
public void setArchive(String archive)
{
archive = trim(archive);
StringTokenizer tokenizer = new StringTokenizer(archive, " ,");
while (tokenizer.hasMoreTokens())
archives.add(tokenizer.nextToken());
}
public void setVersion(String version)
{
version = trim(version);
StringTokenizer tokenizer = new StringTokenizer(version, " ,");
while (tokenizer.hasMoreTokens())
versions.add(tokenizer.nextToken());
}
public void addArg(String type, String value)
{
argTypes.add(trim(type));
argValues.add(trim(value));
}
public String[] getConstructorTypes()
{
return (String[])argTypes.toArray(new String[0]);
}
public String[] getConstructorValues()
{
return (String[])argValues.toArray(new String[0]);
}
// Private -------------------------------------------------------
private String trim(String str)
{
if (str == null)
return str;
// trim values that start with '="someValue"'
if (str.startsWith("="))
str = str.substring(1, str.length());
if (str.startsWith("\"") && str.endsWith("\""))
return str.substring(1, str.length() - 1);
else
return str;
}
public void setProperty(String key, Object value)
{
if (key == null || key.equals(""))
throw new IllegalArgumentException("null or empty string keys not allowed");
if (value == null)
throw new IllegalArgumentException("null values not allowed");
properties.put(key, value);
}
public Object getProperty(String key)
{
return properties.get(key);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy