@Override
 public <T extends EventListener> void addListener(T t) {
   if (!isStarting()) throw new IllegalStateException();
   if (!_enabled) throw new UnsupportedOperationException();
   super.addListener(t);
   ListenerHolder holder = getServletHandler().newListenerHolder(Source.JAVAX_API);
   holder.setListener(t);
   getServletHandler().addListener(holder);
 }
 @Override
 public IGPIOPinInputListener addingService(ServiceReference<IGPIOPinInputListener> reference) {
   // get service
   IGPIOPinInputListener gPIOInputListener = context.getService(reference);
   if (gPIOInputListener == null) return null;
   // Get pinId
   Integer pinId = IGPIOPin.Util.getPinId(reference);
   if (pinId == null) pinId = new Integer(IGPIOPin.DEFAULT_INPUT_PIN);
   Pin pin = Pi4jGPIOPin.getPinForId(pinId.intValue());
   if (pin != null) {
     // Get pinName
     String pinName = IGPIOPin.Util.getPinName(reference);
     if (pinName == null) pinName = String.valueOf(pinId);
     // Get pullresistance
     Integer pullResistance = IGPIOPin.Util.getInputPullResistance(reference);
     // If it's not set, set to PUL
     if (pullResistance == null)
       pullResistance = new Integer(IGPIOPin.PIN_DEFAULTINPUTPULLRESISTANCE);
     PinPullResistance pr = Pi4jGPIOPin.getPinPullResistance(pullResistance.intValue());
     if (pr == null) pr = PinPullResistance.PULL_DOWN;
     // Get controller GPIO
     synchronized (refToListenerMap) {
       // Find reference
       ListenerHolder listenerHolder = refToListenerMap.get(reference);
       GpioPinDigitalInput inputListener = null;
       // We've not seen this request before
       if (listenerHolder == null) {
         inputListener = Activator.getGPIOController().provisionDigitalInputPin(pin, pinName, pr);
         listenerHolder = new ListenerHolder(inputListener);
       } else
         // We've seen it before so we use the old inputListener
         inputListener = listenerHolder.inputListener;
       // create new Pi4jGPIOPinInputListener
       Pi4jGPIOPinInputListener listener =
           new Pi4jGPIOPinInputListener(inputListener, gPIOInputListener);
       // set on the listener holder
       listenerHolder.setListener(listener);
       // put into map
       refToListenerMap.put(reference, listenerHolder);
     }
   } else {
     System.err.println(
         "adding IGPIOPinInputListener service...pinId is not available for pinId=" + pinId);
   }
   return gPIOInputListener;
 }
  /**
   * Finish constructing handlers and link them together.
   *
   * @see org.eclipse.jetty.server.handler.ContextHandler#startContext()
   */
  @Override
  protected void startContext() throws Exception {
    ServletContainerInitializerCaller sciBean = getBean(ServletContainerInitializerCaller.class);
    if (sciBean != null) sciBean.start();

    if (_servletHandler != null) {
      // Call decorators on all holders, and also on any EventListeners before
      // decorators are called on any other classes (like servlets and filters)
      if (_servletHandler.getListeners() != null) {
        for (ListenerHolder holder : _servletHandler.getListeners()) {
          _objFactory.decorate(holder.getListener());
        }
      }
    }

    super.startContext();

    // OK to Initialize servlet handler now that all relevant object trees have been started
    if (_servletHandler != null) _servletHandler.initialize();
  }
  private void doCancel(final Dialog dialog) {
    assert TransactionUtils.isTransactionExecutionThread()
        : "Code run in wrong thread. Must be run in TransactionThread. Now in "
            + Thread.currentThread();
    assert !done.get();

    final InviteClntTransaction transaction =
        getTransactionManager().findTransaction(dialog, SIP_INVITE_CLIENT);

    final DialogStateEvent<BaseSipMessage> stateEvent =
        new DefaultDialogStateEvent<BaseSipMessage>(dialog, SessionState.SESSION_TERMINATED, null);

    dialogStateListenerHolder.getNotifier().onSessionTerminated(stateEvent);
    // dialogStateListenerHolder.getNotifier().onSessionEnded(stateEvent);
    // DIALOG.putCustomParameter(ParamKey.INITIAL_MESSAGE, ((Transaction)
    // transaction).getInitialMessage());

    if (transaction != null) {
      transaction.cancel();
    }
  }
  public void handleIncomingCancel(Request msg) throws DialogStateException {
    assert !done.get();
    assert msg != null && MessageType.SIP_CANCEL == MessageType.parse(msg.getMethod());

    if (!done.get()) {
      Logger.log("Remote party has sent SIP_CANCEL");

      final Dialog dialog = getStackContext().getDialogStorage().findDialogForMessage(msg);

      if (dialog != null) {
        dialog.getMessageHistory().addMessage(msg, true);

        final InviteSrvTransaction transaction =
            getTransactionManager().findTransaction(dialog, SIP_INVITE_SERVER);

        if (transaction != null) {
          final DialogStateEvent<BaseSipMessage> stateEvent =
              new DefaultDialogStateEvent<BaseSipMessage>(
                  dialog, SessionState.SESSION_TERMINATED, msg);

          dialogStateListenerHolder.getNotifier().onSessionTerminated(stateEvent);
          dialogStateListenerHolder.getNotifier().onSessionEnded(stateEvent);
          // DIALOG.putCustomParameter(ParamKey.INITIAL_MESSAGE, ((Transaction)
          // transaction).getInitialMessage());

          transaction.cancel();
        } else {
          // assert false : "Transaction already terminated for msg: " + msg.shortDescription() + "
          // dialog: " + dialog;
          throw new DialogStateException(
              dialog, DialogStateException.Error.REQUEST_FOR_UNKNOWN_DIALOG, msg);
        }
      } else {
        // assert false : "Dialog is already terminated or never exist. Message :" +
        // msg.shortDescription();
        throw new DialogStateException(
            dialog, DialogStateException.Error.REQUEST_FOR_UNKNOWN_DIALOG, msg);
      }
    }
  }
 public void removeIncomingCallListener(final IncomingCallListener listener) {
   incomingCallListenerHolder.removeListener(listener);
 }
 public void addIncomingCallListener(
     ClientIdentity identity, SDPType type, IncomingCallListener listener) {
   incomingCallListenerHolder.addListener(listener, identity, type);
 }
 public void addIncomingCallListener(
     ClientIdentity clientIdentity, IncomingCallListener listener) {
   incomingCallListenerHolder.addListener(listener, clientIdentity);
 }
 public void addIncomingCallListener(SDPType sdpType, final IncomingCallListener listener) {
   incomingCallListenerHolder.addListener(listener, sdpType);
 }
 public void addIncomingCallListener(final IncomingCallListener listener) {
   incomingCallListenerHolder.addListener(listener);
 }
 public void removeDialogStateListener(final DialogStateListener<BaseSipMessage> listener) {
   dialogStateListenerHolder.removeListener(listener);
 }
 public void addDialogStateListener(
     final Dialog dialog, final DialogStateListener<BaseSipMessage> listener) {
   dialogStateListenerHolder.addListener(listener, dialog);
 }