Package org.openrdf.http.server.filters

Source Code of org.openrdf.http.server.filters.AcceptParamFilter

/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2009.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.http.server.filters;

import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.data.ClientInfo;
import org.restlet.data.Form;
import org.restlet.engine.http.header.PreferenceReader;
import org.restlet.routing.Filter;

import info.aduna.net.http.RequestHeaders;

/**
* Filter that stores any Accept request parameters in the request's headers,
* effectively overriding the existing Accept headers.
*
* @author Arjohn Kampman
*/
public class AcceptParamFilter extends Filter {

  public AcceptParamFilter(Context context, Restlet next) {
    super(context, next);
  }

  @Override
  protected int beforeHandle(Request request, Response response) {
    Form queryParams = request.getResourceRef().getQueryAsForm();
    String[] acceptValues = queryParams.getValuesArray(RequestHeaders.ACCEPT, true);

    if (acceptValues.length > 0) {
      ClientInfo clientInfo = request.getClientInfo();

      // Remove all existing media types, the parameter overrides them
      clientInfo.getAcceptedMediaTypes().clear();

      for (String value : acceptValues) {
        PreferenceReader.addMediaTypes(value, clientInfo);
      }
    }

    return Filter.CONTINUE;
  }
}
TOP

Related Classes of org.openrdf.http.server.filters.AcceptParamFilter

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.