summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/common/src/com/netscape/certsrv/tps/token/TokenClient.java4
-rw-r--r--base/java-tools/src/com/netscape/cmstools/tps/token/TokenCLI.java2
-rw-r--r--base/java-tools/src/com/netscape/cmstools/tps/token/TokenModifyCLI.java25
-rw-r--r--base/server/cmscore/src/com/netscape/cmscore/dbs/LDAPDatabase.java14
-rw-r--r--base/server/share/webapps/pki/js/pki-ui.js7
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/rest/TokenService.java31
6 files changed, 66 insertions, 17 deletions
diff --git a/base/common/src/com/netscape/certsrv/tps/token/TokenClient.java b/base/common/src/com/netscape/certsrv/tps/token/TokenClient.java
index ba2ae3c0f..32a56b3d4 100644
--- a/base/common/src/com/netscape/certsrv/tps/token/TokenClient.java
+++ b/base/common/src/com/netscape/certsrv/tps/token/TokenClient.java
@@ -55,8 +55,8 @@ public class TokenClient extends Client {
return client.getEntity(response, TokenData.class);
}
- public TokenData updateToken(String tokenID, TokenData tokenData) {
- Response response = resource.replaceToken(tokenID, tokenData);
+ public TokenData modifyToken(String tokenID, TokenData tokenData) {
+ Response response = resource.modifyToken(tokenID, tokenData);
return client.getEntity(response, TokenData.class);
}
diff --git a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenCLI.java
index 40d1f9447..e7dd6a308 100644
--- a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenCLI.java
@@ -52,7 +52,7 @@ public class TokenCLI extends CLI {
public static void printToken(TokenData token) {
System.out.println(" Token ID: " + token.getID());
if (token.getUserID() != null) System.out.println(" User ID: " + token.getUserID());
- if (token.getType() != null) System.out.println(" Status: " + token.getType());
+ if (token.getType() != null) System.out.println(" Type: " + token.getType());
if (token.getStatus() != null) System.out.println(" Status: " + token.getStatus());
if (token.getAppletID() != null) System.out.println(" Applet ID: " + token.getAppletID());
if (token.getKeyInfo() != null) System.out.println(" Key Info: " + token.getKeyInfo());
diff --git a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenModifyCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenModifyCLI.java
index 1c5602caa..38e9fb00d 100644
--- a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenModifyCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenModifyCLI.java
@@ -42,13 +42,28 @@ public class TokenModifyCLI extends CLI {
}
public void printHelp() {
- formatter.printHelp(getFullName() + " <Token ID> --user <User ID> [OPTIONS...]", options);
+ formatter.printHelp(getFullName() + " <Token ID> [OPTIONS...]", options);
}
public void createOptions() {
Option option = new Option(null, "user", true, "User ID");
option.setArgName("User ID");
- option.setRequired(true);
+ options.addOption(option);
+
+ option = new Option(null, "type", true, "Type");
+ option.setArgName("Type");
+ options.addOption(option);
+
+ option = new Option(null, "applet", true, "Applet ID");
+ option.setArgName("Applet ID");
+ options.addOption(option);
+
+ option = new Option(null, "key-info", true, "Key info");
+ option.setArgName("Key info");
+ options.addOption(option);
+
+ option = new Option(null, "policy", true, "Policy");
+ option.setArgName("Policy");
options.addOption(option);
}
@@ -84,8 +99,12 @@ public class TokenModifyCLI extends CLI {
TokenData tokenData = new TokenData();
tokenData.setID(tokenID);
tokenData.setUserID(cmd.getOptionValue("user"));
+ tokenData.setType(cmd.getOptionValue("type"));
+ tokenData.setAppletID(cmd.getOptionValue("applet"));
+ tokenData.setKeyInfo(cmd.getOptionValue("key-info"));
+ tokenData.setPolicy(cmd.getOptionValue("policy"));
- tokenData = tokenCLI.tokenClient.updateToken(tokenID, tokenData);
+ tokenData = tokenCLI.tokenClient.modifyToken(tokenID, tokenData);
MainCLI.printMessage("Modified token \"" + tokenID + "\"");
diff --git a/base/server/cmscore/src/com/netscape/cmscore/dbs/LDAPDatabase.java b/base/server/cmscore/src/com/netscape/cmscore/dbs/LDAPDatabase.java
index 650a65ea9..cfe958807 100644
--- a/base/server/cmscore/src/com/netscape/cmscore/dbs/LDAPDatabase.java
+++ b/base/server/cmscore/src/com/netscape/cmscore/dbs/LDAPDatabase.java
@@ -141,19 +141,31 @@ public abstract class LDAPDatabase<E extends IDBObj> extends Database<E> {
@Override
public void updateRecord(String id, E record) throws Exception {
+
CMS.debug("LDAPDatabase: updateRecord(\"" + id + "\")");
+
try (IDBSSession session = dbSubsystem.createSession()) {
String dn = createDN(id);
+ CMS.debug("LDAPDatabase: dn: " + dn);
+ CMS.debug("LDAPDatabase: changetype: modify");
ModificationSet mods = new ModificationSet();
for (Enumeration<String> names = record.getSerializableAttrNames(); names.hasMoreElements(); ) {
String name = names.nextElement();
Object value = record.get(name);
+ CMS.debug("LDAPDatabase: replace: " + name);
+ CMS.debug("LDAPDatabase: " + name + ": " + value);
+ CMS.debug("LDAPDatabase: -");
mods.add(name, Modification.MOD_REPLACE, value);
}
- CMS.debug("LDAPDatabase: modifying " + dn);
session.modify(dn, mods);
+ CMS.debug("LDAPDatabase: modification completed");
+
+ } catch (Exception e) {
+ CMS.debug("LDAPDatabase: modification failed");
+ CMS.debug(e);
+ throw e;
}
}
diff --git a/base/server/share/webapps/pki/js/pki-ui.js b/base/server/share/webapps/pki/js/pki-ui.js
index bf04d0121..7d8e6eef6 100644
--- a/base/server/share/webapps/pki/js/pki-ui.js
+++ b/base/server/share/webapps/pki/js/pki-ui.js
@@ -1106,10 +1106,7 @@ var EntryPage = Page.extend({
var name = input.attr("name");
var value = input.val();
- if (value == "") {
- delete self.entry[name];
- } else {
- self.entry[name] = value;
- }
+ // save all values including empty ones
+ self.entry[name] = value;
}
});
diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/TokenService.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/TokenService.java
index 898091d20..f12c39b1f 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/TokenService.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/rest/TokenService.java
@@ -367,36 +367,57 @@ public class TokenService extends PKIService implements TokenResource {
try {
TokenDatabase database = subsystem.getTokenDatabase();
+ // get existing record
tokenRecord = database.getRecord(tokenID);
// update user ID if specified
String userID = tokenData.getUserID();
if (userID != null) {
- tokenRecord.setUserID(userID);
+ if (userID.equals("")) { // remove value if empty
+ tokenRecord.setUserID(null);
+ } else { // otherwise replace value
+ tokenRecord.setUserID(userID);
+ }
}
// update type if specified
String type = tokenData.getType();
if (type != null) {
- tokenRecord.setType(type);
+ if (type.equals("")) { // remove value if empty
+ tokenRecord.setType(null);
+ } else { // otherwise replace value
+ tokenRecord.setType(type);
+ }
}
// update applet ID if specified
String appletID = tokenData.getAppletID();
if (appletID != null) {
- tokenRecord.setAppletID(appletID);
+ if (appletID.equals("")) { // remove value if empty
+ tokenRecord.setAppletID(null);
+ } else { // otherwise replace value
+ tokenRecord.setAppletID(appletID);
+ }
}
// update key info if specified
String keyInfo = tokenData.getKeyInfo();
if (keyInfo != null) {
- tokenRecord.setKeyInfo(keyInfo);
+ if (keyInfo.equals("")) { // remove value if empty
+ tokenRecord.setKeyInfo(null);
+ } else { // otherwise replace value
+ tokenRecord.setKeyInfo(keyInfo);
+ }
}
// update policy if specified
String policy = tokenData.getPolicy();
if (policy != null) {
- tokenRecord.setPolicy(policy);
+ if (policy.equals("")) { // remove value if empty
+ tokenRecord.setPolicy(null);
+ } else { //otherwise replace value
+ tokenRecord.setPolicy(policy);
+ }
}
database.updateRecord(tokenID, tokenRecord);