/* |
|
* Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. |
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
* |
|
* This code is free software; you can redistribute it and/or modify it |
|
* under the terms of the GNU General Public License version 2 only, as |
|
* published by the Free Software Foundation. Oracle designates this |
|
* particular file as subject to the "Classpath" exception as provided |
|
* by Oracle in the LICENSE file that accompanied this code. |
|
* |
|
* This code 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 |
|
* version 2 for more details (a copy is included in the LICENSE file that |
|
* accompanied this code). |
|
* |
|
* You should have received a copy of the GNU General Public License version |
|
* 2 along with this work; if not, write to the Free Software Foundation, |
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
* |
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
* or visit www.oracle.com if you need additional information or have any |
|
* questions. |
|
*/ |
|
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 <CODE>MLET</CODE> 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 <CODE>MLET</CODE> tag |
|
* and their values. |
|
*/ |
|
private Map<String,String> attributes; |
|
/** |
|
* An ordered list of the TYPE attributes that appeared in nested |
|
* <PARAM> tags. |
|
*/ |
|
private List<String> types; |
|
/** |
|
* An ordered list of the VALUE attributes that appeared in nested |
|
* <PARAM> tags. |
|
*/ |
|
private List<String> values; |
|
/** |
|
* The MLet text file's base URL. |
|
*/ |
|
private URL documentURL; |
|
/** |
|
* The base URL. |
|
*/ |
|
private URL baseURL; |
|
/** |
|
* Creates an <CODE>MLet</CODE> instance initialized with attributes read |
|
* from an <CODE>MLET</CODE> tag in an MLet text file. |
|
* |
|
* @param url The URL of the MLet text file containing the |
|
* <CODE>MLET</CODE> tag. |
|
* @param attributes A map of the attributes of the <CODE>MLET</CODE> tag. |
|
* The keys in this map are the attribute names in lowercase, for |
|
* example <code>codebase</code>. 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<String,String> attributes, |
|
List<String> types, List<String> 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 <CODE>MLET</CODE> tag. The keys in |
|
* the returned map are the attribute names in lowercase, for |
|
* example <code>codebase</code>. The values are the associated |
|
* attribute values. |
|
* @return A map of the attributes of the <CODE>MLET</CODE> tag |
|
* and their values. |
|
*/ |
|
public Map<String,String> 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 <CODE>.jar</CODE> files specified by the <CODE>ARCHIVE</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* @return A comma-separated list of <CODE>.jar</CODE> file names. |
|
*/ |
|
public String getJarFiles() { |
|
return getParameter("archive"); |
|
} |
|
/** |
|
* Gets the value of the <CODE>CODE</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* @return The value of the <CODE>CODE</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
*/ |
|
public String getCode() { |
|
return getParameter("code"); |
|
} |
|
/** |
|
* Gets the value of the <CODE>OBJECT</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* @return The value of the <CODE>OBJECT</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
*/ |
|
public String getSerializedObject() { |
|
return getParameter("object"); |
|
} |
|
/** |
|
* Gets the value of the <CODE>NAME</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* @return The value of the <CODE>NAME</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
*/ |
|
public String getName() { |
|
return getParameter("name"); |
|
} |
|
/** |
|
* Gets the value of the <CODE>VERSION</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* @return The value of the <CODE>VERSION</CODE> |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
*/ |
|
public String getVersion() { |
|
return getParameter("version"); |
|
} |
|
/** |
|
* Gets the list of values of the <code>TYPE</code> attribute in |
|
* each nested <PARAM> tag within the <code>MLET</code> |
|
* tag. |
|
* @return the list of types. |
|
*/ |
|
public List<String> getParameterTypes() { |
|
return types; |
|
} |
|
/** |
|
* Gets the list of values of the <code>VALUE</code> attribute in |
|
* each nested <PARAM> tag within the <code>MLET</code> |
|
* tag. |
|
* @return the list of values. |
|
*/ |
|
public List<String> getParameterValues() { |
|
return values; |
|
} |
|
/** |
|
* Gets the value of the specified |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
* |
|
* @param name A string representing the name of the attribute. |
|
* @return The value of the specified |
|
* attribute of the <CODE>MLET</CODE> tag. |
|
*/ |
|
private String getParameter(String name) { |
|
return attributes.get(name.toLowerCase()); |
|
} |
|
} |