/*
 ************************************************************************************
 * Copyright (C) 2001-2015 Openbravo S.L.U.
 * Licensed under the Apache Software License version 2.0
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to  in writing,  software  distributed
 * under the License is distributed  on  an  "AS IS"  BASIS,  WITHOUT  WARRANTIES  OR
 * CONDITIONS OF ANY KIND, either  express  or  implied.  See  the  License  for  the
 * specific language governing permissions and limitations under the License.
 ************************************************************************************
 */

package org.openbravo.base;

import java.lang.reflect.Field;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;

import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.RequestFacade;
import org.jboss.weld.environment.servlet.Listener;
import org.jboss.weld.servlet.api.helpers.AbstractServletListener;

public class TestListener extends AbstractServletListener {
  @Override
  public void requestInitialized(ServletRequestEvent sre) {
    ServletContext ctx = sre.getServletContext();
    ServletRequest req = sre.getServletRequest();
    try {
      Field rf = RequestFacade.class.getDeclaredField("request");
      rf.setAccessible(true);
      org.apache.catalina.connector.Request request = (Request) rf.get(req);
      org.jboss.weld.environment.servlet.Listener wl = (Listener) request.getContext()
          .getApplicationEventListeners()[1];
      wl.requestInitialized(sre);
      System.out.println(wl);
    } catch (IllegalArgumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (NoSuchFieldException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (SecurityException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // StandardContext ctx = (StandardContext) sre.getServletContext();
    System.out.println(ctx + " -  " + req);
  }
}
