001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or 1any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * Initial developer: Florent BENOIT
022: * --------------------------------------------------------------------------
023: * $Id: CommonsSchemas.java 5766 2004-11-19 09:23:01Z sauthieg $
024: * --------------------------------------------------------------------------
025: */package org.objectweb.jonas_lib.deployment.api;
026:
027: import java.net.URL;
028: import java.util.ArrayList;
029: import java.util.List;
030:
031: /**
032: * This class defines the declarations of the default J2EE 1.4 Schemas
033: * @author Florent Benoit
034: */
035: public abstract class CommonsSchemas implements Schemas {
036:
037: /**
038: * List of schemas used by components
039: */
040: private static final String[] DEFAULT_SCHEMAS = new String[] {
041: "j2ee_1_4.xsd", "j2ee_web_services_client_1_1.xsd",
042: "xml.xsd", "jonas_j2ee_4_0.xsd", "jonas_j2ee_4_1.xsd",
043: "jonas_j2ee_4_1_2.xsd", "jonas_j2ee_4_1_4.xsd",
044: "jonas_j2ee_4_2.xsd" };
045:
046: /**
047: * List where the local schemas URLs are stored
048: */
049: private static ArrayList localSchemas = null;
050:
051: /**
052: * Build a new object for Schemas handling
053: */
054: public CommonsSchemas() {
055: localSchemas = new ArrayList();
056: addSchemas(DEFAULT_SCHEMAS);
057: }
058:
059: /**
060: * Gets the URLs of the local schemas
061: * @return the URLs of the local schemas
062: */
063: public List getlocalSchemas() {
064: return localSchemas;
065: }
066:
067: /**
068: * Add to our repository the given local schemas
069: * @param schemas schemas to add to the repository
070: * @throws IllegalStateException if the dtds is not found as resource
071: */
072: protected static void addSchemas(String[] schemas)
073: throws IllegalStateException {
074: URL url = null;
075: for (int i = 0; i < schemas.length; i++) {
076: url = CommonsSchemas.class.getResource("/" + schemas[i]);
077: if (url == null) {
078: throw new IllegalStateException(
079: "'"
080: + schemas[i]
081: + "' was not found in the current classloader !");
082: }
083: localSchemas.add(url.toString());
084: }
085: }
086:
087: /**
088: * @param element name of the root element (jonas-ejb-jar, ...)
089: * @param schemas array of Schemas (to be always up to date)
090: * @return a header for the right element with last element
091: */
092: public static String getHeaderForElement(String element,
093: String[] schemas) {
094: StringBuffer header = new StringBuffer();
095: header.append("<");
096: header.append(element);
097: header.append(" xmlns=\"http://www.objectweb.org/jonas/ns\"\n");
098: header
099: .append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
100: header
101: .append(" xsi:schemaLocation=\"http://www.objectweb.org/jonas/ns\n");
102: header
103: .append(" http://www.objectweb.org/jonas/ns/");
104:
105: // Get the last XSD
106: header.append(schemas[schemas.length - 1]);
107: header.append("\" >\n");
108:
109: return header.toString();
110: }
111:
112: }
|