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  // Contributors:
13  //    Hugues Malphettes - initial API and implementation
14  // ========================================================================
15  package org.eclipse.jetty.osgi.boot.warurl;
16  
17  import java.util.Dictionary;
18  import java.util.Hashtable;
19  
20  import org.osgi.framework.BundleActivator;
21  import org.osgi.framework.BundleContext;
22  import org.osgi.framework.ServiceRegistration;
23  import org.osgi.service.url.URLConstants;
24  import org.osgi.service.url.URLStreamHandlerService;
25  
26  /**
27   * Register the factory to handle the war scheme specified by rfc66
28   * when the bundle is activated.
29   */
30  public class WarUrlActivator implements BundleActivator
31  {
32      
33      private ServiceRegistration _reg;
34  
35      /**
36       * Register the url stream handler factory.
37       * 
38       * @param context
39       */
40      @SuppressWarnings("unchecked")
41      public void start(BundleContext context) throws Exception
42      {
43          Dictionary props = new Hashtable();
44          props.put(URLConstants.URL_HANDLER_PROTOCOL,new String[] {"war"});
45          context.registerService(URLStreamHandlerService.class.getName(),
46                  new WarUrlStreamHandler(), props);
47      }
48      
49      /**
50       * Remove the url stream handler. (probably not required,
51       * as osgi might shutdown every registered service
52       * by default: need test)
53       */
54      public void stop(BundleContext context) throws Exception
55      {
56          try
57          {
58              if (_reg != null)
59              {
60                  _reg.unregister();
61              }
62          }
63          catch (Exception e)
64          {
65              e.printStackTrace();
66          }
67      }
68      
69  }