/*
* Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package javax.management.loading;
// java import
import java.net.URL;
import java.net.MalformedURLException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* This class represents the contents of the MLET
tag.
* It can be consulted by a subclass of {@link MLet} that overrides
* the {@link MLet#check MLet.check} method.
*
* @since 1.6
*/
public class MLetContent {
/**
* A map of the attributes of the MLET
tag
* and their values.
*/
private Map attributes;
/**
* An ordered list of the TYPE attributes that appeared in nested
* <PARAM> tags.
*/
private List types;
/**
* An ordered list of the VALUE attributes that appeared in nested
* <PARAM> tags.
*/
private List values;
/**
* The MLet text file's base URL.
*/
private URL documentURL;
/**
* The base URL.
*/
private URL baseURL;
/**
* Creates an MLet
instance initialized with attributes read
* from an MLET
tag in an MLet text file.
*
* @param url The URL of the MLet text file containing the
* MLET
tag.
* @param attributes A map of the attributes of the MLET
tag.
* The keys in this map are the attribute names in lowercase, for
* example codebase
. The values are the associated attribute
* values.
* @param types A list of the TYPE attributes that appeared in nested
* <PARAM> tags.
* @param values A list of the VALUE attributes that appeared in nested
* <PARAM> tags.
*/
public MLetContent(URL url, Map attributes,
List types, List values) {
this.documentURL = url;
this.attributes = Collections.unmodifiableMap(attributes);
this.types = Collections.unmodifiableList(types);
this.values = Collections.unmodifiableList(values);
// Initialize baseURL
//
String att = getParameter("codebase");
if (att != null) {
if (!att.endsWith("/")) {
att += "/";
}
try {
baseURL = new URL(documentURL, att);
} catch (MalformedURLException e) {
// OK : Move to next block as baseURL could not be initialized.
}
}
if (baseURL == null) {
String file = documentURL.getFile();
int i = file.lastIndexOf('/');
if (i >= 0 && i < file.length() - 1) {
try {
baseURL = new URL(documentURL, file.substring(0, i + 1));
} catch (MalformedURLException e) {
// OK : Move to next block as baseURL could not be initialized.
}
}
}
if (baseURL == null)
baseURL = documentURL;
}
// GETTERS AND SETTERS
//--------------------
/**
* Gets the attributes of the MLET
tag. The keys in
* the returned map are the attribute names in lowercase, for
* example codebase
. The values are the associated
* attribute values.
* @return A map of the attributes of the MLET
tag
* and their values.
*/
public Map getAttributes() {
return attributes;
}
/**
* Gets the MLet text file's base URL.
* @return The MLet text file's base URL.
*/
public URL getDocumentBase() {
return documentURL;
}
/**
* Gets the code base URL.
* @return The code base URL.
*/
public URL getCodeBase() {
return baseURL;
}
/**
* Gets the list of .jar
files specified by the ARCHIVE
* attribute of the MLET
tag.
* @return A comma-separated list of .jar
file names.
*/
public String getJarFiles() {
return getParameter("archive");
}
/**
* Gets the value of the CODE
* attribute of the MLET
tag.
* @return The value of the CODE
* attribute of the MLET
tag.
*/
public String getCode() {
return getParameter("code");
}
/**
* Gets the value of the OBJECT
* attribute of the MLET
tag.
* @return The value of the OBJECT
* attribute of the MLET
tag.
*/
public String getSerializedObject() {
return getParameter("object");
}
/**
* Gets the value of the NAME
* attribute of the MLET
tag.
* @return The value of the NAME
* attribute of the MLET
tag.
*/
public String getName() {
return getParameter("name");
}
/**
* Gets the value of the VERSION
* attribute of the MLET
tag.
* @return The value of the VERSION
* attribute of the MLET
tag.
*/
public String getVersion() {
return getParameter("version");
}
/**
* Gets the list of values of the TYPE
attribute in
* each nested <PARAM> tag within the MLET
* tag.
* @return the list of types.
*/
public List getParameterTypes() {
return types;
}
/**
* Gets the list of values of the VALUE
attribute in
* each nested <PARAM> tag within the MLET
* tag.
* @return the list of values.
*/
public List getParameterValues() {
return values;
}
/**
* Gets the value of the specified
* attribute of the MLET
tag.
*
* @param name A string representing the name of the attribute.
* @return The value of the specified
* attribute of the MLET
tag.
*/
private String getParameter(String name) {
return attributes.get(name.toLowerCase());
}
}