Package org.example.utils.vaadinbridge.internal

Source Code of org.example.utils.vaadinbridge.internal.ApplicationFactoryTracker

package org.example.utils.vaadinbridge.internal;

import javax.servlet.ServletException;

import org.example.utils.vaadinbridge.ApplicationFactory;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
import org.osgi.util.tracker.ServiceTracker;

class ApplicationFactoryTracker extends ServiceTracker {
 
  private final HttpService httpService;
 
  ApplicationFactoryTracker(HttpService httpService, BundleContext context) {
    super(context, ApplicationFactory.class.getName(), null);
    this.httpService = httpService;
  }
 
  @Override
  public Object addingService(ServiceReference ref) {
   
    Object aliasObj = ref.getProperty(ApplicationFactory.ALIAS_NAME);
    if(aliasObj instanceof String) {
      String alias = (String) aliasObj;
      BundleContentHttpContext httpContext = new BundleContentHttpContext(ref.getBundle());
     
      ApplicationFactory factory = (ApplicationFactory) context.getService(ref);
      ApplicationFactoryServlet servlet = new ApplicationFactoryServlet(factory);
     
      try {
        httpService.registerServlet(alias, servlet, null, httpContext);
        return alias;
      } catch (ServletException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (NamespaceException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    return null;
  }
  @Override
  public void removedService(ServiceReference ref, Object service) {
    String alias = (String) service;
    httpService.unregister(alias);
   
    context.ungetService(ref);
  }
}
TOP

Related Classes of org.example.utils.vaadinbridge.internal.ApplicationFactoryTracker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.