001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)ServiceAssembly.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: /**
030: * ServiceAssembly.java
031: *
032: * SUN PROPRIETARY/CONFIDENTIAL.
033: * This software is the proprietary information of Sun Microsystems, Inc.
034: * Use is subject to license terms.
035: *
036: * Created on April 22, 2005, 3:01 PM
037: */package com.sun.jbi.management.system;
038:
039: import com.sun.jbi.StringTranslator;
040: import com.sun.jbi.management.internal.support.JarURLHelper;
041:
042: import java.io.InputStream;
043: import java.net.URL;
044:
045: import java.util.logging.Logger;
046: import java.util.zip.ZipFile;
047: import java.util.zip.ZipEntry;
048:
049: import javax.jbi.management.DeploymentException;
050:
051: /**
052: * This is a wrapper class which encapulates the Service Assembly.
053: *
054: * @author Sun Microsystems Inc.
055: */
056: public class ServiceAssembly {
057: /**
058: * URL to the SA, this could be based on the file, http or jar protocol.
059: */
060: private URL mSaURL;
061:
062: /**
063: * The Archive.
064: */
065: private ZipFile mZipFile = null;
066:
067: /**
068: * Manangement Message Builder.
069: */
070: private BuildManagementMessageImpl mMImpl = null;
071:
072: /**
073: * The StringTranslator.
074: */
075: private StringTranslator mTranslator = null;
076:
077: /**
078: * The Logger.
079: */
080: private Logger mLogger = null;
081:
082: /**
083: * Creates a new instance of ServiceAssembly. This constructor creates a Service
084: * Assembly object for a Service Assembly being deployed.
085: *
086: * @param saURL is the URL for the ServiceAssembly.
087: * @param translator is the StringTranslator.
088: * @param logger is the DeploymentService Logger.
089: * @throws java.io.IOException on IO related errors.
090: * @throws DeploymentException if the ZipFile cannot be read.
091: */
092: public ServiceAssembly(URL saURL, StringTranslator translator,
093: Logger logger) throws java.io.IOException,
094: DeploymentException {
095: mLogger = logger;
096: mTranslator = translator;
097: mSaURL = JarURLHelper.convertToJarURL(saURL, mTranslator);
098: mMImpl = new BuildManagementMessageImpl();
099: mZipFile = JarURLHelper.getZipFileFromURL(mSaURL, mTranslator);
100:
101: }
102:
103: /**
104: * @return the ZipFile.
105: */
106: public ZipFile getZipFile() {
107: return mZipFile;
108: }
109:
110: /**
111: * Get the Zip URL.
112: *
113: * @return the URL to the Service Assembly Zip file
114: */
115: public URL getZipURL() {
116: return mSaURL;
117: }
118:
119: /**
120: * @return a stream to the jbi.xml
121: * @throws DeploymentException if the jbi.xml deployment descriptor is not found
122: * in the Service Assembly.
123: * @throws java.io.IOException on IO errors
124: */
125: public InputStream getJbiXml() throws DeploymentException,
126: java.io.IOException {
127: InputStream is = null;
128: boolean hasJbiXML = false;
129: java.util.Enumeration e = mZipFile.entries();
130: while (e.hasMoreElements()) {
131: ZipEntry ze = (ZipEntry) e.nextElement();
132: if (ze.getName().equalsIgnoreCase("META-INF/jbi.xml")) {
133: is = mZipFile.getInputStream(ze);
134: hasJbiXML = true;
135: }
136: }
137:
138: if (!hasJbiXML) {
139: ManagementMessageHolder mmHolder = new ManagementMessageHolder(
140: "EXCEPTION_MSG");
141: mmHolder.setTaskName("readjbiXmlFromSAZip");
142: mmHolder.setExceptionObject(new Exception(
143: "Cannot find deployment descriptor"));
144: mmHolder.setLocToken(1, "JBI_XML_NOT_FOUND_IN_SA_JAR");
145: String jbiTaskStr = mMImpl
146: .buildCompleteExceptionMessage(mmHolder);
147: throw new DeploymentException(jbiTaskStr);
148: }
149: return is;
150: }
151:
152: /**
153: * The Service Assembly is no longer needed, do any cleanup here.
154: */
155: public void done() {
156: try {
157: if (mZipFile != null) {
158: mZipFile.close();
159: }
160: } catch (java.io.IOException ioex) {
161: // -- cannot do much here.
162: mLogger
163: .finest("Could not close the Service Assembly zip file "
164: + getZipURL().toString());
165: }
166: }
167: }
|