001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.camel.component.jbi; 018 019 import org.apache.commons.logging.Log; 020 import org.apache.commons.logging.LogFactory; 021 022 import javax.jbi.JBIException; 023 import javax.jbi.component.Bootstrap; 024 import javax.jbi.component.InstallationContext; 025 import javax.management.MBeanServer; 026 import javax.management.ObjectName; 027 028 /** 029 * Base class for components bootstrap. 030 * @version $Revision: 426415 $ 031 */ 032 public class CamelContainerBootstrap implements Bootstrap { 033 034 protected final transient Log logger = LogFactory.getLog(getClass()); 035 036 protected InstallationContext context; 037 protected ObjectName mbeanName; 038 039 public CamelContainerBootstrap() { 040 } 041 042 public ObjectName getExtensionMBeanName() { 043 return mbeanName; 044 } 045 046 protected Object getExtensionMBean() throws Exception { 047 return null; 048 } 049 050 protected ObjectName createExtensionMBeanName() throws Exception { 051 return this.context.getContext().getMBeanNames().createCustomComponentMBeanName("bootstrap"); 052 } 053 054 /* (non-Javadoc) 055 * @see javax.jbi.component.Bootstrap#init(javax.jbi.component.InstallationContext) 056 */ 057 public void init(InstallationContext installContext) throws JBIException { 058 try { 059 if (logger.isDebugEnabled()) { 060 logger.debug("Initializing bootstrap"); 061 } 062 this.context = installContext; 063 doInit(); 064 if (logger.isDebugEnabled()) { 065 logger.debug("Bootstrap initialized"); 066 } 067 } catch (JBIException e) { 068 throw e; 069 } catch (Exception e) { 070 throw new JBIException("Error calling init", e); 071 } 072 } 073 074 protected void doInit() throws Exception { 075 Object mbean = getExtensionMBean(); 076 if (mbean != null) { 077 this.mbeanName = createExtensionMBeanName(); 078 MBeanServer server = this.context.getContext().getMBeanServer(); 079 if (server == null) { 080 throw new JBIException("null mBeanServer"); 081 } 082 if (server.isRegistered(this.mbeanName)) { 083 server.unregisterMBean(this.mbeanName); 084 } 085 server.registerMBean(mbean, this.mbeanName); 086 } 087 } 088 089 /* (non-Javadoc) 090 * @see javax.jbi.component.Bootstrap#cleanUp() 091 */ 092 public void cleanUp() throws JBIException { 093 try { 094 if (logger.isDebugEnabled()) { 095 logger.debug("Cleaning up bootstrap"); 096 } 097 doCleanUp(); 098 if (logger.isDebugEnabled()) { 099 logger.debug("Bootstrap cleaned up"); 100 } 101 } catch (JBIException e) { 102 throw e; 103 } catch (Exception e) { 104 throw new JBIException("Error calling cleanUp", e); 105 } 106 } 107 108 protected void doCleanUp() throws Exception { 109 if (this.mbeanName != null) { 110 MBeanServer server = this.context.getContext().getMBeanServer(); 111 if (server == null) { 112 throw new JBIException("null mBeanServer"); 113 } 114 if (server.isRegistered(this.mbeanName)) { 115 server.unregisterMBean(this.mbeanName); 116 } 117 } 118 } 119 120 /* (non-Javadoc) 121 * @see javax.jbi.component.Bootstrap#onInstall() 122 */ 123 public void onInstall() throws JBIException { 124 try { 125 if (logger.isDebugEnabled()) { 126 logger.debug("Bootstrap onInstall"); 127 } 128 doOnInstall(); 129 if (logger.isDebugEnabled()) { 130 logger.debug("Bootstrap onInstall done"); 131 } 132 } catch (JBIException e) { 133 throw e; 134 } catch (Exception e) { 135 throw new JBIException("Error calling onInstall", e); 136 } 137 } 138 139 protected void doOnInstall() throws Exception { 140 } 141 142 /* (non-Javadoc) 143 * @see javax.jbi.component.Bootstrap#onUninstall() 144 */ 145 public void onUninstall() throws JBIException { 146 try { 147 if (logger.isDebugEnabled()) { 148 logger.debug("Bootstrap onUninstall"); 149 } 150 doOnUninstall(); 151 if (logger.isDebugEnabled()) { 152 logger.debug("Bootstrap onUninstall done"); 153 } 154 } catch (JBIException e) { 155 throw e; 156 } catch (Exception e) { 157 throw new JBIException("Error calling onUninstall", e); 158 } 159 } 160 161 protected void doOnUninstall() throws Exception { 162 } 163 164 }