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: * @(#)JMSBindingBootstrap.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.binding.jms;
030:
031: import com.sun.jbi.common.ConfigFileValidator;
032:
033: import java.io.File;
034:
035: import java.util.logging.Logger;
036:
037: import javax.jbi.component.Bootstrap;
038: import javax.jbi.component.InstallationContext;
039:
040: import org.w3c.dom.Document;
041:
042: /**
043: * The bootstrap class is invoked by the JBI run time during installation of
044: * the binding. The JMS binding reads the config file information and checks
045: * for the validity of the information in the config file. It then loads this
046: * config information and allows the installation to complete. During
047: * uninstallation any resource held up by the binding is freed.
048: *
049: * @author Sun Microsystems Inc.
050: */
051: public class JMSBindingBootstrap implements Bootstrap {
052: /**
053: * Is the context containing information from the install command and from
054: * the BC jar file.
055: */
056: private InstallationContext mContext;
057:
058: /**
059: * Internal handle to the logger instance.
060: */
061: private Logger mLogger;
062:
063: /**
064: * Creates a new instance of JMSBindingBootstrap.
065: */
066: public JMSBindingBootstrap() {
067: mLogger = Logger.getLogger(this .getClass().getPackage()
068: .getName());
069: }
070:
071: /**
072: * Obtains the optional installer configuration MBean ObjectName. If none
073: * is provided by this BC, returns null.
074: *
075: * @return ObjectName which represents the MBean registered by the init()
076: * method. If none was registered, returns null.
077: */
078: public javax.management.ObjectName getExtensionMBeanName() {
079: return null;
080: }
081:
082: /**
083: * Cleans up any resources allocated by the bootstrap implementation,
084: * including deregistration of the extension MBean, if applicable. This
085: * method will be called after the onInstall() or onUninstall() method is
086: * called, whether it succeeds or fails.
087: *
088: * @throws javax.jbi.JBIException when cleanup processing fails to complete
089: * successfully.
090: */
091: public void cleanUp() throws javax.jbi.JBIException {
092: }
093:
094: /**
095: * Initializes the installation environment for a BC. This method is
096: * expected to save any information from the installation context that may
097: * be needed by other methods.
098: *
099: * @param installContext is the context containing information from the
100: * install command and from the BC jar file.
101: *
102: * @throws javax.jbi.JBIException when there is an error requiring that the
103: * installation be terminated.
104: */
105: public void init(InstallationContext installContext)
106: throws javax.jbi.JBIException {
107: mContext = installContext;
108:
109: String configFile = null;
110: String schemaFile = null;
111:
112: // Parse config file to ensure conformness to schema
113: configFile = mContext.getInstallRoot() + File.separatorChar
114: + "jms_config.xml";
115: schemaFile = mContext.getInstallRoot() + File.separatorChar
116: + "schema" + File.separatorChar + "jms_config.xsd";
117:
118: ConfigFileValidator validator = new ConfigFileValidator(
119: schemaFile, configFile);
120: validator.setValidating();
121: validator.validate();
122:
123: Document d = validator.getDocument();
124:
125: if ((!validator.isValid()) || (d == null)) {
126: mLogger.severe("Invalid config file " + configFile);
127: mLogger.severe("Error " + validator.getError());
128: throw new javax.jbi.JBIException(validator.getError(), null);
129: }
130: }
131:
132: /**
133: * Called at the beginning of installation of JMS Binding . For this jms
134: * binding, all the required installation tasks have been taken care by
135: * the InstallationService.
136: *
137: * @throws javax.jbi.JBIException when there is an error requiring that the
138: * installation be terminated.
139: */
140: public void onInstall() throws javax.jbi.JBIException {
141: mLogger.info("**JMS Binding installation begins**");
142: }
143:
144: /**
145: * Called at the beginning of uninstallation of JMSBinding . For this jms
146: * binding, all the required uninstallation tasks have been taken care of
147: * by the InstallationService.
148: *
149: * @throws javax.jbi.JBIException when there is an error requiring that the
150: * uninstallation be terminated.
151: */
152: public void onUninstall() throws javax.jbi.JBIException {
153: mLogger.info("**JMS Binding installation ends**");
154: }
155: }
|