summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/common/src/com/netscape/certsrv/tps/profile/ProfileData.java29
-rw-r--r--base/common/src/com/netscape/certsrv/tps/profile/ProfileResource.java4
-rw-r--r--base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileCLI.java8
-rw-r--r--base/server/cmscore/src/com/netscape/cmscore/dbs/CSCfgRecord.java1
-rw-r--r--base/tps-tomcat/shared/webapps/tps/js/profile.js53
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ProfileService.java32
6 files changed, 63 insertions, 64 deletions
diff --git a/base/common/src/com/netscape/certsrv/tps/profile/ProfileData.java b/base/common/src/com/netscape/certsrv/tps/profile/ProfileData.java
index d733777aa..81e0dea3a 100644
--- a/base/common/src/com/netscape/certsrv/tps/profile/ProfileData.java
+++ b/base/common/src/com/netscape/certsrv/tps/profile/ProfileData.java
@@ -21,7 +21,6 @@ package com.netscape.certsrv.tps.profile;
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 ProfileData {
String id;
String status;
- Map<String, String> properties = new LinkedHashMap<String, String>();
+ Map<String, String> properties;
Link link;
@@ -91,24 +90,7 @@ public class ProfileData {
}
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 ProfileData {
ProfileData before = new ProfileData();
before.setID("profile1");
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/profile/ProfileResource.java b/base/common/src/com/netscape/certsrv/tps/profile/ProfileResource.java
index 50a205cd7..48d3a8c4d 100644
--- a/base/common/src/com/netscape/certsrv/tps/profile/ProfileResource.java
+++ b/base/common/src/com/netscape/certsrv/tps/profile/ProfileResource.java
@@ -20,7 +20,6 @@ package com.netscape.certsrv.tps.profile;
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 ProfileResource {
@ClientResponseType(entityType=ProfileData.class)
public Response addProfile(ProfileData profileData);
- @PUT
+ @PATCH
@Path("{profileID}")
@ACLMapping("profiles.modify")
@ClientResponseType(entityType=ProfileData.class)
diff --git a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileCLI.java
index 8b02f2e57..b27578ffc 100644
--- a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileCLI.java
@@ -61,9 +61,11 @@ public class ProfileCLI extends CLI {
if (showProperties) {
System.out.println(" Properties:");
Map<String, String> properties = profileData.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/server/cmscore/src/com/netscape/cmscore/dbs/CSCfgRecord.java b/base/server/cmscore/src/com/netscape/cmscore/dbs/CSCfgRecord.java
index f8e07b43e..854244150 100644
--- a/base/server/cmscore/src/com/netscape/cmscore/dbs/CSCfgRecord.java
+++ b/base/server/cmscore/src/com/netscape/cmscore/dbs/CSCfgRecord.java
@@ -54,6 +54,7 @@ public class CSCfgRecord {
public void setProperties(Map<String, String> properties) {
this.properties.clear();
+ if (properties == null) return;
this.properties.putAll(properties);
}
diff --git a/base/tps-tomcat/shared/webapps/tps/js/profile.js b/base/tps-tomcat/shared/webapps/tps/js/profile.js
index 6b496e560..410328ca8 100644
--- a/base/tps-tomcat/shared/webapps/tps/js/profile.js
+++ b/base/tps-tomcat/shared/webapps/tps/js/profile.js
@@ -24,46 +24,45 @@ var ProfileModel = Model.extend({
parseResponse: function(response) {
return {
id: response.id,
+ profileID: response.id,
status: response.Status,
properties: response.Properties.Property
};
},
- parseXML: function(data) {
- var xml = $(data);
- var entry = $("Profile", 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/ProfileService.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ProfileService.java
index 723075a40..d21b8939e 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ProfileService.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/ProfileService.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;
@@ -206,23 +207,34 @@ public class ProfileService extends PKIService implements ProfileResource {
ProfileRecord record = database.getRecord(profileID);
- String status = record.getStatus();
- if (!"Disabled".equals(status)) {
+ // only disabled profile can be updated
+ if (!"Disabled".equals(record.getStatus())) {
throw new ForbiddenException("Unable to update profile " + profileID);
}
- status = profileData.getStatus();
- if (!"Enabled".equals(status)) {
- throw new ForbiddenException("Invalid profile status: " + status);
+ // update status if specified
+ String status = profileData.getStatus();
+ if (status != null && !"Disabled".equals(status)) {
+ if (!"Enabled".equals(status)) {
+ throw new ForbiddenException("Invalid profile 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 profile
+ record.setStatus(status);
}
- Principal principal = servletRequest.getUserPrincipal();
- if (database.requiresApproval() && !database.canApprove(principal)) {
- status = "Pending_Approval";
+ // update properties if specified
+ Map<String, String> properties = profileData.getProperties();
+ if (properties != null) {
+ record.setProperties(properties);
}
- record.setStatus(status);
- record.setProperties(profileData.getProperties());
database.updateRecord(profileID, record);
profileData = createProfileData(database.getRecord(profileID));