From 4a164f90a4bab55c79314343d6127570a8fbed10 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 19 Sep 2016 09:18:00 +0000
Subject: [PATCH] OPENDJ-3250 Return the CREST descriptor over REST for config endpoint
---
opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java | 47 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java
index 7085ae5..2519aaa 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/rest2ldap/AdminEndpoint.java
@@ -12,14 +12,12 @@
* information: "Portions copyright [year] [name of copyright owner]".
*
* Copyright 2016 ForgeRock AS.
- *
*/
package org.opends.server.protocols.http.rest2ldap;
import static org.forgerock.http.routing.RouteMatchers.newResourceApiVersionBehaviourManager;
import static org.forgerock.http.routing.Version.version;
import static org.forgerock.json.resource.RouteMatchers.resourceApiVersionContextFilter;
-import static org.forgerock.json.resource.http.CrestHttp.newHttpHandler;
import static org.forgerock.opendj.ldap.schema.CoreSchema.getBooleanSyntax;
import static org.forgerock.opendj.ldap.schema.CoreSchema.getIntegerSyntax;
import static org.forgerock.opendj.rest2ldap.Rest2Ldap.*;
@@ -43,11 +41,15 @@
import org.forgerock.http.routing.Version;
import org.forgerock.json.JsonPointer;
import org.forgerock.json.resource.BadRequestException;
+import org.forgerock.json.resource.ConnectionFactory;
+import org.forgerock.json.resource.CrestApplication;
import org.forgerock.json.resource.FilterChain;
import org.forgerock.json.resource.Request;
import org.forgerock.json.resource.RequestHandler;
import org.forgerock.json.resource.ResourceException;
+import org.forgerock.json.resource.Resources;
import org.forgerock.json.resource.Router;
+import org.forgerock.json.resource.http.CrestHttp;
import org.forgerock.opendj.config.AbstractManagedObjectDefinition;
import org.forgerock.opendj.config.AggregationPropertyDefinition;
import org.forgerock.opendj.config.DefaultBehaviorProvider;
@@ -84,6 +86,7 @@
import org.opends.server.api.HttpEndpoint;
import org.opends.server.core.ServerContext;
import org.opends.server.types.InitializationException;
+import org.opends.server.util.BuildVersion;
/**
* An HTTP endpoint providing access to the server's monitoring backend (cn=monitor) and its configuration (cn=config).
@@ -115,9 +118,7 @@
return new AdminHttpApplication();
}
- /**
- * Specialized {@link HttpApplication} using internal connections to this local LDAP server.
- */
+ /** Specialized {@link HttpApplication} using internal connections to this local LDAP server. */
private final class AdminHttpApplication implements HttpApplication
{
private LDAPProfile ldapProfile = LDAPProfile.getInstance();
@@ -125,6 +126,11 @@
@Override
public Handler start() throws HttpApplicationException
{
+ return newHttpHandler(startRequestHandler());
+ }
+
+ FilterChain startRequestHandler() throws HttpApplicationException
+ {
final Map<String, Resource> resources = new HashMap<>();
// Define the entry point to the admin API.
@@ -196,12 +202,41 @@
// FIXME: Disable the warning header for now due to CREST-389 / CREST-390.
final ResourceApiVersionBehaviourManager behaviourManager = newResourceApiVersionBehaviourManager();
behaviourManager.setWarningEnabled(false);
- return newHttpHandler(new FilterChain(versionRouter, resourceApiVersionContextFilter(behaviourManager)));
+ return new FilterChain(versionRouter, resourceApiVersionContextFilter(behaviourManager));
+ }
+
+ private Handler newHttpHandler(RequestHandler handler)
+ {
+ final org.forgerock.json.resource.ConnectionFactory factory = Resources.newInternalConnectionFactory(handler);
+ return CrestHttp.newHttpHandler(new CrestApplication()
+ {
+ @Override
+ public ConnectionFactory getConnectionFactory()
+ {
+ return factory;
+ }
+
+ @Override
+ public String getApiId()
+ {
+ return "frapi:opendj:admin";
+ }
+
+ @Override
+ public String getApiVersion()
+ {
+ return BuildVersion.binaryVersion().toStringNoRevision();
+ }
+ });
}
private Resource buildResource(final AbstractManagedObjectDefinition<?, ?> mod)
{
final Resource resource = resource(mod.getName());
+ if (!mod.isTop())
+ {
+ resource.description(mod.getSynopsis());
+ }
configureResourceProperties(mod, resource);
configureResourceSubResources(mod, resource, false);
return resource;
--
Gitblit v1.10.0