Package com.sissi.pipeline.in.auth.impl

Source Code of com.sissi.pipeline.in.auth.impl.AuthMechanismProcessor

package com.sissi.pipeline.in.auth.impl;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.sissi.context.JIDContext;
import com.sissi.pipeline.in.ProxyProcessor;
import com.sissi.pipeline.in.auth.AuthCallback;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.Stream;
import com.sissi.protocol.iq.auth.Auth;
import com.sissi.protocol.iq.auth.Failure;

/**
* @author kim 2013-10-24
*/
public class AuthMechanismProcessor extends ProxyProcessor {

  private final Map<String, AuthCallback> authCallbacks = new HashMap<String, AuthCallback>();

  public AuthMechanismProcessor(Set<AuthCallback> authCallbacks) {
    super();
    for (AuthCallback authCallback : authCallbacks) {
      this.authCallbacks.put(authCallback.support(), authCallback);
    }
  }

  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    Auth auth = protocol.cast(Auth.class);
    AuthCallback callback = this.authCallbacks.get(auth.getMechanism());
    return callback != null ? !callback.auth(auth, context) : !context.write(Failure.INSTANCE_INVALIDMECHANISM).write(Stream.closeGraceFully()).close();
  }
}
TOP

Related Classes of com.sissi.pipeline.in.auth.impl.AuthMechanismProcessor

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.