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 018 package org.apache.geronimo.console.i18n; 019 020 import org.apache.commons.logging.Log; 021 import org.apache.commons.logging.LogFactory; 022 import org.apache.geronimo.gbean.GBeanInfo; 023 import org.apache.geronimo.gbean.GBeanInfoBuilder; 024 import org.apache.geronimo.gbean.GBeanLifecycle; 025 026 /** 027 * This GBean provides a way for console extension to register its classloader to 028 * ConsoleResourceRegistry. ConsoleResourceRegistry will use the classloaders to 029 * load the resource bundle. 030 */ 031 public class ConsoleResourceGBean implements GBeanLifecycle { 032 private static final Log log = LogFactory.getLog(ConsoleResourceGBean.class); 033 public static final GBeanInfo GBEAN_INFO; 034 private ClassLoader classloader; 035 private ConsoleResourceRegistry consoleResourceRegistry; 036 037 public ConsoleResourceGBean(ClassLoader classloader, ConsoleResourceRegistry consoleResourceRegistry) { 038 this.classloader = classloader; 039 this.consoleResourceRegistry = consoleResourceRegistry; 040 } 041 042 /* 043 * Called when the GBean is started 044 * @see org.apache.geronimo.gbean.GBeanLifecycle#doStart() 045 */ 046 public synchronized void doStart() throws Exception { 047 consoleResourceRegistry.registerConsoleResource(classloader); 048 } 049 050 /* 051 * Called when the GBean is stopped 052 * @see org.apache.geronimo.gbean.GBeanLifecycle#doStop() 053 */ 054 public synchronized void doStop() throws Exception { 055 consoleResourceRegistry.removeConsoleResource(classloader); 056 } 057 058 /* 059 * Called when the GBean fails 060 * @see org.apache.geronimo.gbean.GBeanLifecycle#doFail() 061 */ 062 public synchronized void doFail() { 063 log.warn("AdminConsoleExtensionGBean for failed."); 064 } 065 066 /* 067 * Standard GBean information 068 */ 069 static { 070 GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ConsoleResourceGBean", ConsoleResourceGBean.class); 071 072 infoFactory.addAttribute("classLoader", ClassLoader.class, false); 073 infoFactory.addReference("ConsoleResourceRegistry", ConsoleResourceRegistry.class, null); 074 infoFactory.setConstructor(new String[]{ 075 "classLoader", 076 "ConsoleResourceRegistry"}); 077 GBEAN_INFO = infoFactory.getBeanInfo(); 078 } 079 080 public static GBeanInfo getGBeanInfo() { 081 return GBEAN_INFO; 082 } 083 }