package com.sissi.pipeline.in.stream;
import java.util.Set;
import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.protocol.Feature;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.Stream;
import com.sissi.protocol.feature.Mechanisms;
import com.sissi.protocol.feature.Register;
import com.sissi.ucenter.access.AuthMechanism;
/**
* @author kim 2013-10-24
*/
public class StreamFeatureAuthProcessor implements Input {
private final Feature[] features;
public StreamFeatureAuthProcessor(Set<AuthMechanism> mechanisms) {
super();
Mechanisms feature = new Mechanisms();
for (AuthMechanism mechanism : mechanisms) {
feature.add(mechanism.support());
}
this.features = new Feature[] { feature, Register.FEATURE };
}
@Override
public boolean input(JIDContext context, Protocol protocol) {
return !context.auth() ? this.writeFeature(protocol.cast(Stream.class)) : true;
}
private boolean writeFeature(Stream stream) {
stream.addFeature(this.features);
return true;
}
}