diff options
| author | Endi S. Dewata <edewata@redhat.com> | 2014-03-27 18:52:54 -0400 |
|---|---|---|
| committer | Endi S. Dewata <edewata@redhat.com> | 2014-03-29 18:20:49 -0400 |
| commit | ef56ae955857d607f04e5298bf200c755d1d0ca5 (patch) | |
| tree | 0d6c94b823c998c8c345a8ec3d3f4d1dbb0e402f | |
| parent | 16ee3c262fbac7d1475ad006f40e35b6bb9a4213 (diff) | |
| download | pki-ef56ae955857d607f04e5298bf200c755d1d0ca5.tar.gz pki-ef56ae955857d607f04e5298bf200c755d1d0ca5.tar.xz pki-ef56ae955857d607f04e5298bf200c755d1d0ca5.zip | |
Refactored TPS connections.
The TPS connections has been modified to use PATCH for update operation
as required by Backbone. The ConnectionData class has been modified to
accept null properties to indicate that the properties are not being
updated. The ConnectionModel class has been modified to use JSON data
type for enable and disable operations.
Ticket #654
5 files changed, 62 insertions, 64 deletions
diff --git a/base/common/src/com/netscape/certsrv/tps/connection/ConnectionData.java b/base/common/src/com/netscape/certsrv/tps/connection/ConnectionData.java index 3ab71c75d..0d1224d3c 100644 --- a/base/common/src/com/netscape/certsrv/tps/connection/ConnectionData.java +++ b/base/common/src/com/netscape/certsrv/tps/connection/ConnectionData.java @@ -21,7 +21,6 @@ package com.netscape.certsrv.tps.connection; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; -import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -62,7 +61,7 @@ public class ConnectionData { String id; String status; - Map<String, String> properties = new LinkedHashMap<String, String>(); + Map<String, String> properties; Link link; @@ -91,24 +90,7 @@ public class ConnectionData { } public void setProperties(Map<String, String> properties) { - this.properties.clear(); - this.properties.putAll(properties); - } - - public Collection<String> getPropertyNames() { - return properties.keySet(); - } - - public String getProperty(String name) { - return properties.get(name); - } - - public void setProperty(String name, String value) { - properties.put(name, value); - } - - public String removeProperty(String name) { - return properties.remove(name); + this.properties = properties; } public static class MapAdapter extends XmlAdapter<PropertyList, Map<String, String>> { @@ -223,8 +205,11 @@ public class ConnectionData { ConnectionData before = new ConnectionData(); before.setID("connection1"); before.setStatus("ENABLED"); - before.setProperty("param1", "value1"); - before.setProperty("param2", "value2"); + + Map<String, String> properties = new LinkedHashMap<String, String>(); + properties.put("param1", "value1"); + properties.put("param2", "value2"); + before.setProperties(properties); String string = before.toString(); System.out.println(string); diff --git a/base/common/src/com/netscape/certsrv/tps/connection/ConnectionResource.java b/base/common/src/com/netscape/certsrv/tps/connection/ConnectionResource.java index e16135063..216e3793b 100644 --- a/base/common/src/com/netscape/certsrv/tps/connection/ConnectionResource.java +++ b/base/common/src/com/netscape/certsrv/tps/connection/ConnectionResource.java @@ -20,7 +20,6 @@ package com.netscape.certsrv.tps.connection; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; @@ -30,6 +29,7 @@ import org.jboss.resteasy.annotations.ClientResponseType; import com.netscape.certsrv.acls.ACLMapping; import com.netscape.certsrv.authentication.AuthMethodMapping; +import com.netscape.certsrv.base.PATCH; /** @@ -57,7 +57,7 @@ public interface ConnectionResource { @ClientResponseType(entityType=ConnectionData.class) public Response addConnection(ConnectionData connectionData); - @PUT + @PATCH @Path("{connectionID}") @ACLMapping("connections.modify") @ClientResponseType(entityType=ConnectionData.class) diff --git a/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionCLI.java index 1159a2012..c0802ba13 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionCLI.java @@ -59,9 +59,11 @@ public class ConnectionCLI extends CLI { if (showProperties) { System.out.println(" Properties:"); Map<String, String> properties = connectionData.getProperties(); - for (String name : properties.keySet()) { - String value = properties.get(name); - System.out.println(" " + name + ": " + value); + if (properties != null) { + for (String name : properties.keySet()) { + String value = properties.get(name); + System.out.println(" " + name + ": " + value); + } } } diff --git a/base/tps-tomcat/shared/webapps/tps/js/connection.js b/base/tps-tomcat/shared/webapps/tps/js/connection.js index adf7a3c29..7c3743d45 100644 --- a/base/tps-tomcat/shared/webapps/tps/js/connection.js +++ b/base/tps-tomcat/shared/webapps/tps/js/connection.js @@ -24,46 +24,45 @@ var ConnectionModel = Model.extend({ parseResponse: function(response) { return { id: response.id, + connectionID: response.id, status: response.Status, properties: response.Properties.Property }; }, - parseXML: function(data) { - var xml = $(data); - var entry = $("Connection", xml); - var status = $("Status", entry); - return { - id: entry.attr("id"), - status: status.text() - }; - }, createRequest: function(attributes) { return { - id: attributes.id, - Status: attributes.status + id: attributes.profileID, + Status: attributes.status, + Properties: { + Property: attributes.properties + } }; }, enable: function(options) { var self = this; - $.post(self.url() + "?action=enable") - .done(function(data, textStatus, jqXHR) { - self.set(self.parseXML(data)); - options.success.call(self, data, textStatus, jqXHR); - }) - .fail(function(jqXHR, textStatus, errorThrown) { - options.error.call(self, jqXHR, textStatus, errorThrown); - }); + $.ajax({ + type: "POST", + url: self.url() + "?action=enable", + dataType: "json" + }).done(function(data, textStatus, jqXHR) { + self.set(self.parseResponse(data)); + if (options.success) options.success.call(self, data, textStatus, jqXHR); + }).fail(function(jqXHR, textStatus, errorThrown) { + if (options.error) options.error.call(self, jqXHR, textStatus, errorThrown); + }); }, disable: function(options) { var self = this; - $.post(self.url() + "?action=disable") - .done(function(data, textStatus, jqXHR) { - self.set(self.parseXML(data)); - options.success.call(self, data, textStatus, jqXHR); - }) - .fail(function(jqXHR, textStatus, errorThrown) { - options.error.call(self, jqXHR, textStatus, errorThrown); - }); + $.ajax({ + type: "POST", + url: self.url() + "?action=disable", + dataType: "json" + }).done(function(data, textStatus, jqXHR) { + self.set(self.parseResponse(data)); + if (options.success) options.success.call(self, data, textStatus, jqXHR); + }).fail(function(jqXHR, textStatus, errorThrown) { + if (options.error) options.error.call(self, jqXHR, textStatus, errorThrown); + }); } }); diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ConnectionService.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ConnectionService.java index 8e0b69dcf..daa9fb003 100644 --- a/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ConnectionService.java +++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ConnectionService.java @@ -23,6 +23,7 @@ import java.net.URI; import java.net.URLEncoder; import java.security.Principal; import java.util.Iterator; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Context; @@ -205,23 +206,34 @@ public class ConnectionService extends PKIService implements ConnectionResource ConnectionRecord record = database.getRecord(connectionID); - String status = record.getStatus(); - if (!"Disabled".equals(status)) { + // only disabled connection can be updated + if (!"Disabled".equals(record.getStatus())) { throw new ForbiddenException("Unable to update connection " + connectionID); } - status = connectionData.getStatus(); - if (!"Enabled".equals(status)) { - throw new ForbiddenException("Invalid connection status: " + status); + // update status if specified + String status = connectionData.getStatus(); + if (status != null && !"Disabled".equals(status)) { + if (!"Enabled".equals(status)) { + throw new ForbiddenException("Invalid connection status: " + status); + } + + // if user doesn't have rights, set to pending + Principal principal = servletRequest.getUserPrincipal(); + if (database.requiresApproval() && !database.canApprove(principal)) { + status = "Pending_Approval"; + } + + // enable connection + record.setStatus(status); } - Principal principal = servletRequest.getUserPrincipal(); - if (database.requiresApproval() && !database.canApprove(principal)) { - status = "Pending_Approval"; + // update properties if specified + Map<String, String> properties = connectionData.getProperties(); + if (properties != null) { + record.setProperties(properties); } - record.setStatus(status); - record.setProperties(connectionData.getProperties()); database.updateRecord(connectionID, record); connectionData = createConnectionData(database.getRecord(connectionID)); |
