/* * 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()); } }