mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
22.22.2016 f38ae1391a42405f80b3e15bcaa2354f5b94994e
OPENDJ-3332 Rest2ldap: return the OpenAPI descriptors over REST

Follow up of CHF-135 "Api descriptor requests (?_api) cannot be proxified".
This change allows to query OpenAPI descriptions by using the "_api" query parameter.

Add the OpenApiRequestFilter to the filter chains to handle requests using the "_api" query parameter.
4 files modified
17 ■■■■ changed files
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java 2 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java 5 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/Rest2LdapEndpoint.java 6 ●●●● patch | view | raw | blame | history
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
@@ -64,6 +64,7 @@
import org.forgerock.http.handler.HttpClientHandler;
import org.forgerock.http.io.Buffer;
import org.forgerock.http.protocol.Headers;
import org.forgerock.http.swagger.OpenApiRequestFilter;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.i18n.slf4j.LocalizedLogger;
@@ -218,6 +219,7 @@
            configureConnectionFactories(config.get("ldapConnectionFactories"));
            final Filter authorizationFilter = buildAuthorizationFilter(config.get("authorization").required());
            return chainOf(newHttpHandler(configureRest2Ldap(configDirectory)),
                           new OpenApiRequestFilter(),
                           new ErrorLoggerFilter(),
                           authorizationFilter);
        } catch (final Exception e) {
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java
@@ -15,11 +15,11 @@
 */
package org.opends.server.protocols.http;
import static org.forgerock.http.grizzly.GrizzlySupport.newGrizzlyHttpHandler;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.messages.ProtocolMessages.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
import static org.forgerock.http.grizzly.GrizzlySupport.newGrizzlyHttpHandler;
import java.io.IOException;
import java.net.InetAddress;
@@ -943,7 +943,7 @@
    public ApiProducer<Swagger> getApiProducer()
    {
      // Needed to enforce generation of CREST APIs
      return new SwaggerApiProducer(null, null, null);
      return new SwaggerApiProducer(null);
    }
  }
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java
@@ -15,6 +15,7 @@
 */
package org.opends.server.protocols.http.rest2ldap;
import static org.forgerock.http.handler.Handlers.chainOf;
import static org.forgerock.http.routing.RouteMatchers.newResourceApiVersionBehaviourManager;
import static org.forgerock.http.routing.Version.version;
import static org.forgerock.json.resource.RouteMatchers.resourceApiVersionContextFilter;
@@ -39,6 +40,7 @@
import org.forgerock.http.io.Buffer;
import org.forgerock.http.routing.ResourceApiVersionBehaviourManager;
import org.forgerock.http.routing.Version;
import org.forgerock.http.swagger.OpenApiRequestFilter;
import org.forgerock.json.JsonPointer;
import org.forgerock.json.resource.BadRequestException;
import org.forgerock.json.resource.ConnectionFactory;
@@ -125,7 +127,8 @@
    @Override
    public Handler start() throws HttpApplicationException
    {
      return newHttpHandler(startRequestHandler());
      return chainOf(newHttpHandler(startRequestHandler()),
                     new OpenApiRequestFilter());
    }
    FilterChain startRequestHandler() throws HttpApplicationException
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/Rest2LdapEndpoint.java
@@ -15,6 +15,7 @@
 */
package org.opends.server.protocols.http.rest2ldap;
import static org.forgerock.http.handler.Handlers.chainOf;
import static org.forgerock.opendj.rest2ldap.Rest2LdapJsonConfigurator.configureEndpoint;
import static org.forgerock.util.Options.defaultOptions;
import static org.opends.messages.ConfigMessages.ERR_CONFIG_REST2LDAP_INVALID;
@@ -30,6 +31,7 @@
import org.forgerock.http.HttpApplication;
import org.forgerock.http.HttpApplicationException;
import org.forgerock.http.io.Buffer;
import org.forgerock.http.swagger.OpenApiRequestFilter;
import org.forgerock.json.JsonValueException;
import org.forgerock.json.resource.CrestApplication;
import org.forgerock.json.resource.RequestHandler;
@@ -81,7 +83,9 @@
      final File endpointConfig = getFileForPath(configuration.getConfigDirectory(), serverContext);
      try
      {
        return newHttpHandler(configureEndpoint(endpointConfig, defaultOptions()));
        return chainOf(
            newHttpHandler(configureEndpoint(endpointConfig, defaultOptions())),
            new OpenApiRequestFilter());
      }
      catch (IOException e)
      {