View Javadoc

1   // ========================================================================
2   // Copyright (c) 2009 Intalio, Inc.
3   // ------------------------------------------------------------------------
4   // All rights reserved. This program and the accompanying materials
5   // are made available under the terms of the Eclipse Public License v1.0
6   // and Apache License v2.0 which accompanies this distribution.
7   // The Eclipse Public License is available at 
8   // http://www.eclipse.org/legal/epl-v10.html
9   // The Apache License v2.0 is available at
10  // http://www.opensource.org/licenses/apache2.0.php
11  // You may elect to redistribute this code under either of these licenses. 
12  // ========================================================================
13  package org.eclipse.jetty.osgi.boot.logback;
14  
15  import java.io.File;
16  import java.util.Map;
17  
18  import org.eclipse.jetty.osgi.boot.internal.webapp.LibExtClassLoaderHelper;
19  import org.eclipse.jetty.osgi.boot.internal.webapp.OSGiWebappClassLoader;
20  import org.eclipse.jetty.osgi.boot.internal.webapp.LibExtClassLoaderHelper.IFilesInJettyHomeResourcesProcessor;
21  import org.eclipse.jetty.osgi.boot.logback.internal.LogbackInitializer;
22  import org.osgi.framework.BundleActivator;
23  import org.osgi.framework.BundleContext;
24  
25  
26  /**
27   * Pseudo fragment activator.
28   * Called by the main org.eclipse.jetty.osgi.boot bundle.
29   * Please note: this is not a real BundleActivator. Simply something called back by
30   * the host bundle.
31   * The fragment is in charge of placing a hook to configure logback
32   * when the files inside jettyhome/resources are parsed.
33   */
34  public class FragmentActivator implements BundleActivator, IFilesInJettyHomeResourcesProcessor
35  {
36      /**
37       * 
38       */
39      public void start(BundleContext context) throws Exception
40      {
41          LibExtClassLoaderHelper.registeredFilesInJettyHomeResourcesProcessors.add(this);
42          
43          //now let's make sure no log4j, no slf4j and no commons.logging
44          //get inserted as a library that is not an osgi library
45          OSGiWebappClassLoader.addClassThatIdentifiesAJarThatMustBeRejected("org.apache.commons.logging.Log");
46          OSGiWebappClassLoader.addClassThatIdentifiesAJarThatMustBeRejected("org.apache.log4j.Logger");
47          OSGiWebappClassLoader.addClassThatIdentifiesAJarThatMustBeRejected("org.slf4j.Logger");
48          //OSGiWebappClassLoader.addClassThatIdentifiesAJarThatMustBeRejected(java.util.logging.Logger.class);
49          
50      }
51  
52      /**
53       * Called when this bundle is stopped so the Framework can perform the
54       * bundle-specific activities necessary to stop the bundle. In general, this
55       * method should undo the work that the <code>BundleActivator.start</code>
56       * method started. There should be no active threads that were started by
57       * this bundle when this bundle returns. A stopped bundle must not call any
58       * Framework objects.
59       * 
60       * <p>
61       * This method must complete and return to its caller in a timely manner.
62       * 
63       * @param context The execution context of the bundle being stopped.
64       * @throws Exception If this method throws an exception, the
65       *         bundle is still marked as stopped, and the Framework will remove
66       *         the bundle's listeners, unregister all services registered by the
67       *         bundle, and release all services used by the bundle.
68       */
69      public void stop(BundleContext context) throws Exception
70      {
71      	LibExtClassLoaderHelper.registeredFilesInJettyHomeResourcesProcessors.remove(this);
72      }
73      
74      public void processFilesInResourcesFolder(File jettyHome, Map<String,File> files)
75      {
76      	try
77      	{
78      		LogbackInitializer.processFilesInResourcesFolder(jettyHome, files);
79      	}
80      	catch (Throwable t)
81      	{
82      		t.printStackTrace();
83      	}
84      }
85      
86  }