package ameba.message.internal;
import ameba.core.Requests;
import org.glassfish.jersey.internal.inject.InjectionManager;
import org.glassfish.jersey.internal.inject.Providers;
import org.glassfish.jersey.message.internal.HeaderUtils;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.RuntimeDelegate;
/**
* <p>MessageHelper class.</p>
*
* @author icode
*
*/
public class MessageHelper {
/**
* Constant <code>STREAMING_RANGE_ENABLED="streaming.range.enabled"</code>
*/
public static final String STREAMING_RANGE_ENABLED = "streaming.range.enabled";
private MessageHelper() {
}
/**
* <p>disableCurrentStreamingRange.</p>
*/
public static void disableCurrentStreamingRange() {
Requests.setProperty(STREAMING_RANGE_ENABLED, false);
}
/**
* <p>enableCurrentStreamingRange.</p>
*/
public static void enableCurrentStreamingRange() {
Requests.setProperty(STREAMING_RANGE_ENABLED, true);
}
/**
* <p>getStreamingProcesses.</p>
*
* @param manager InjectionManager.
* @return a {@link java.lang.Iterable} object.
*/
public static Iterable<StreamingProcess> getStreamingProcesses(InjectionManager manager) {
return Providers.getAllProviders(manager, StreamingProcess.class);
}
/**
* <p>getStreamingProcess.</p>
*
* @param entity a T object.
* @param manager manager
* @param <T> a T object.
* @return a {@link ameba.message.internal.StreamingProcess} object.
*/
@SuppressWarnings("unchecked")
public static <T> StreamingProcess<T> getStreamingProcess(T entity, InjectionManager manager) {
for (StreamingProcess process : getStreamingProcesses(manager)) {
if (process.isSupported(entity)) {
return process;
}
}
return null;
}
/**
* <p>getHeaderString.</p>
*
* @param headers a {@link javax.ws.rs.core.MultivaluedMap} object.
* @param name a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getHeaderString(MultivaluedMap<String, Object> headers, String name) {
return HeaderUtils.asHeaderString(headers.get(name), RuntimeDelegate.getInstance());
}
}