summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorAde Lee <alee@redhat.com>2013-07-31 13:38:33 -0400
committerAde Lee <alee@redhat.com>2013-07-31 16:57:57 -0400
commit5d5b40fe43ee4a2a18356039271bf405f6881432 (patch)
tree4855dab09db1ff360d2638bf06791b50041d987a /base
parentd4b0d0ca07ffb2b4b093d9c0feae58f9d63c5336 (diff)
downloadpki-5d5b40fe43ee4a2a18356039271bf405f6881432.tar.gz
pki-5d5b40fe43ee4a2a18356039271bf405f6881432.tar.xz
pki-5d5b40fe43ee4a2a18356039271bf405f6881432.zip
Fixes for profile REST interface from code review.
Simplified the inputs, outputs for ProfileData
Diffstat (limited to 'base')
-rw-r--r--base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java10
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileData.java124
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileInput.java15
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileOutput.java15
-rw-r--r--base/common/src/com/netscape/cms/servlet/profile/ProfileService.java41
-rw-r--r--base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java69
6 files changed, 123 insertions, 151 deletions
diff --git a/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java b/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java
index 0268c2d7d..fd0db892a 100644
--- a/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java
+++ b/base/ca/functional/src/com/netscape/cms/servlet/test/CATest.java
@@ -18,7 +18,7 @@
package com.netscape.cms.servlet.test;
import java.util.Collection;
-import java.util.Map;
+import java.util.List;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
@@ -434,10 +434,10 @@ public class CATest {
log("Profile Input Information: \n");
- Map<String, ProfileInput> inputs = info.getInputs();
- for (Map.Entry<String, ProfileInput> entry : inputs.entrySet()) {
- log("Input Id: " + entry.getKey());
- for (ProfileAttribute attr: entry.getValue().getAttrs()) {
+ List<ProfileInput> inputs = info.getInputs();
+ for (ProfileInput input : inputs) {
+ log("Input Id: " + input.getId());
+ for (ProfileAttribute attr: input.getAttrs()) {
log("Input Attribute Name: " + attr.getName() + "\n");
log("Input Attribute Value: " + attr.getValue() + "\n");
}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileData.java b/base/common/src/com/netscape/certsrv/profile/ProfileData.java
index b1eca7887..619a39e67 100644
--- a/base/common/src/com/netscape/certsrv/profile/ProfileData.java
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileData.java
@@ -29,21 +29,24 @@ import java.util.Vector;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.jboss.resteasy.plugins.providers.atom.Link;
+
/**
* @author jmagne
*
*/
-@XmlRootElement(name = "ProfileData")
+@XmlRootElement(name = "Profile")
@XmlAccessorType(XmlAccessType.FIELD)
public class ProfileData {
- @XmlElement
+ @XmlAttribute
protected String id;
@XmlElement
@@ -76,18 +79,25 @@ public class ProfileData {
@XmlElement
protected boolean xmlOutput;
- @XmlElement(name = "Inputs")
- @XmlJavaTypeAdapter(InputAdapter.class)
- protected Map<String, ProfileInput> inputs = new LinkedHashMap<String, ProfileInput>();
+ @XmlElement(name = "Input")
+ protected List<ProfileInput> inputs = new ArrayList<ProfileInput>();
- @XmlElement(name = "Outputs")
- @XmlJavaTypeAdapter(OutputAdapter.class)
- protected Map<String, ProfileOutput> outputs = new LinkedHashMap<String, ProfileOutput>();
+ @XmlElement(name = "Output")
+ protected List<ProfileOutput> outputs = new ArrayList<ProfileOutput>();
@XmlElement(name = "PolicySets")
@XmlJavaTypeAdapter(PolicySetAdapter.class)
protected Map<String, List<ProfilePolicy>> policySets = new LinkedHashMap<String, List<ProfilePolicy>>();
+ protected Link link;
+
+ public Link getLink() {
+ return link;
+ }
+
+ public void setLink(Link link) {
+ this.link = link;
+ }
public String getAuthenticatorId() {
return authenticatorId;
@@ -177,27 +187,30 @@ public class ProfileData {
this.classId = classId;
}
- public void addProfileInput(String id, ProfileInput input) {
- inputs.put(id, input);
+ public void addProfileInput(ProfileInput input) {
+ inputs.add(input);
}
public ProfileInput getProfileInput(String id) {
- return inputs.get(id);
+ for (ProfileInput input: inputs) {
+ if (input.getId().equals(id)) return input;
+ }
+ return null;
}
- public Map<String, ProfileInput> getInputs() {
+ public List<ProfileInput> getInputs() {
return inputs;
}
- public void setInputs(Map<String, ProfileInput> inputs) {
+ public void setInputs(List<ProfileInput> inputs) {
this.inputs = inputs;
}
- public Map<String, ProfileOutput> getOutputs() {
+ public List<ProfileOutput> getOutputs() {
return outputs;
}
- public void setOutputs(Map<String, ProfileOutput> outputs) {
+ public void setOutputs(List<ProfileOutput> outputs) {
this.outputs = outputs;
}
@@ -213,84 +226,15 @@ public class ProfileData {
this.policySets.put(id, policySet);
}
- public void addProfileOutput(String id, ProfileOutput output) {
- outputs.put(id, output);
+ public void addProfileOutput(ProfileOutput output) {
+ outputs.add(output);
}
public ProfileOutput getProfileOutput(String id) {
- return outputs.get(id);
- }
-
- public static class InputAdapter extends XmlAdapter<InputList, Map<String, ProfileInput>> {
-
- public InputList marshal(Map<String,ProfileInput> map) {
- InputList list = new InputList();
- for (Map.Entry<String, ProfileInput> entry : map.entrySet()) {
- Input input = new Input();
- input.name = entry.getKey();
- input.value = entry.getValue();
- list.inputs.add(input);
- }
- return list;
- }
-
- public Map<String, ProfileInput> unmarshal(InputList list) {
- Map<String, ProfileInput> map = new LinkedHashMap<String, ProfileInput>();
- for (Input input : list.inputs) {
- map.put(input.name, input.value);
- }
- return map;
- }
- }
-
- public static class InputList {
- @XmlElement(name="input")
- public List<Input> inputs = new ArrayList<Input>();
- }
-
- public static class Input {
-
- @XmlElement(name="id")
- public String name;
-
- @XmlElement
- public ProfileInput value;
- }
-
- public static class OutputAdapter extends XmlAdapter<OutputList, Map<String, ProfileOutput>> {
-
- public OutputList marshal(Map<String,ProfileOutput> map) {
- OutputList list = new OutputList();
- for (Map.Entry<String, ProfileOutput> entry : map.entrySet()) {
- Output output = new Output();
- output.name = entry.getKey();
- output.value = entry.getValue();
- list.outputs.add(output);
- }
- return list;
- }
-
- public Map<String, ProfileOutput> unmarshal(OutputList list) {
- Map<String, ProfileOutput> map = new LinkedHashMap<String, ProfileOutput>();
- for (Output output : list.outputs) {
- map.put(output.name, output.value);
- }
- return map;
+ for (ProfileOutput output: outputs) {
+ if (output.getId().equals(id)) return output;
}
- }
-
- public static class OutputList {
- @XmlElement(name="output")
- public List<Output> outputs = new ArrayList<Output>();
- }
-
- public static class Output {
-
- @XmlElement(name="id")
- public String name;
-
- @XmlElement
- public ProfileOutput value;
+ return null;
}
public static class PolicySetAdapter extends XmlAdapter<PolicySetList, Map<String, Vector<ProfilePolicy>>> {
@@ -330,7 +274,7 @@ public class ProfileData {
}
public static void main(String args[]) throws Exception {
- Map<String, ProfileInput> inputs = new LinkedHashMap<String, ProfileInput>();
+ List<ProfileInput> inputs = new ArrayList<ProfileInput>();
//ProfileInput input = new ProfileInput();
//input.setClassId(classId);
//input.setInputId(inputId);
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileInput.java b/base/common/src/com/netscape/certsrv/profile/ProfileInput.java
index 3a3aefe4c..a9b9507cb 100644
--- a/base/common/src/com/netscape/certsrv/profile/ProfileInput.java
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileInput.java
@@ -22,12 +22,13 @@ import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import com.netscape.certsrv.property.Descriptor;
public class ProfileInput {
-
+ private String id;
private String classId;
private String name;
private String text;
@@ -38,8 +39,9 @@ public class ProfileInput {
// required for jaxb
}
- public ProfileInput(IProfileInput input, String classId, Locale locale) {
+ public ProfileInput(IProfileInput input, String id, String classId, Locale locale) {
this.name = input.getName(locale);
+ this.id = id;
this.classId = classId;
Enumeration<String> names = input.getValueNames();
while (names.hasMoreElements()) {
@@ -68,6 +70,15 @@ public class ProfileInput {
this.classId = classId;
}
+ @XmlAttribute
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
public void setName(String name) {
this.name = name;
}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java b/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java
index 492fdb46a..759b65ce7 100644
--- a/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java
@@ -24,6 +24,7 @@ import java.util.Locale;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@@ -33,12 +34,23 @@ import com.netscape.certsrv.property.Descriptor;
@XmlAccessorType(XmlAccessType.FIELD)
public class ProfileOutput {
+ @XmlAttribute
+ private String id;
+
@XmlElement
private String name;
@XmlElement
private String text;
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
@XmlElement
private String classId;
@@ -50,8 +62,9 @@ public class ProfileOutput {
// required for jaxb
}
- public ProfileOutput(IProfileOutput output, String classId, Locale locale) {
+ public ProfileOutput(IProfileOutput output, String id, String classId, Locale locale) {
this.name = output.getName(locale);
+ this.id = id;
this.classId = classId;
Enumeration<String> names = output.getValueNames();
while (names.hasMoreElements()) {
diff --git a/base/common/src/com/netscape/cms/servlet/profile/ProfileService.java b/base/common/src/com/netscape/cms/servlet/profile/ProfileService.java
index 0feaa126f..d4b23d95c 100644
--- a/base/common/src/com/netscape/cms/servlet/profile/ProfileService.java
+++ b/base/common/src/com/netscape/cms/servlet/profile/ProfileService.java
@@ -27,12 +27,13 @@ import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Vector;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.UriBuilder;
+import org.jboss.resteasy.plugins.providers.atom.Link;
+
import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.BadRequestException;
import com.netscape.certsrv.base.EBaseException;
@@ -113,7 +114,7 @@ public class ProfileService extends PKIService implements ProfileResource {
public ProfileData retrieveProfile(String profileId) throws ProfileNotFoundException {
ProfileData data = null;
- boolean visibleOnly = false;
+ boolean visibleOnly = true;
if (ps == null) {
return null;
@@ -123,7 +124,7 @@ public class ProfileService extends PKIService implements ProfileResource {
if ((principal != null) &&
(principal.hasRole("Certificate Manager Agents") ||
principal.hasRole("Certificate Manager Administrators"))) {
- visibleOnly = true;
+ visibleOnly = false;
}
Enumeration<String> profileIds = ps.getProfileIds();
@@ -161,6 +162,11 @@ public class ProfileService extends PKIService implements ProfileResource {
throw new ProfileNotFoundException(profileId);
}
+ UriBuilder profileBuilder = uriInfo.getBaseUriBuilder();
+ URI uri = profileBuilder.path(ProfileResource.class).path("{id}").
+ build(profileId);
+ data.setLink(new Link("self", uri));
+
return data;
}
@@ -202,8 +208,8 @@ public class ProfileService extends PKIService implements ProfileResource {
String classId = inputStore.getString(inputId + ".class_id");
- ProfileInput input = new ProfileInput(profileInput, classId, getLocale());
- data.addProfileInput(inputId, input);
+ ProfileInput input = new ProfileInput(profileInput, inputId, classId, getLocale());
+ data.addProfileInput(input);
}
}
@@ -221,8 +227,8 @@ public class ProfileService extends PKIService implements ProfileResource {
String classId = outputStore.getString(outputId + ".class_id");
- ProfileOutput output = new ProfileOutput(profileOutput, classId, getLocale());
- data.addProfileOutput(outputId, output);
+ ProfileOutput output = new ProfileOutput(profileOutput, outputId, classId, getLocale());
+ data.addProfileOutput(output);
}
}
@@ -254,6 +260,11 @@ public class ProfileService extends PKIService implements ProfileResource {
}
}
+ UriBuilder profileBuilder = uriInfo.getBaseUriBuilder();
+ URI uri = profileBuilder.path(ProfileResource.class).path("{id}").
+ build(profileId);
+ data.setLink(new Link("self", uri));
+
return data;
}
@@ -537,10 +548,10 @@ public class ProfileService extends PKIService implements ProfileResource {
private void populateProfileOutputs(ProfileData data, IProfile profile) throws EProfileException {
profile.deleteAllProfileOutputs();
- Map<String, ProfileOutput> outputs = data.getOutputs();
- for (Entry<String, ProfileOutput> entry: outputs.entrySet()) {
- String id = entry.getKey();
- String classId = entry.getValue().getClassId();
+ List<ProfileOutput> outputs = data.getOutputs();
+ for (ProfileOutput output: outputs) {
+ String id = output.getId();
+ String classId = output.getClassId();
NameValuePairs nvp = new NameValuePairs();
// TODO - add a field for params in ProfileOuput
@@ -551,10 +562,10 @@ public class ProfileService extends PKIService implements ProfileResource {
private void populateProfileInputs(ProfileData data, IProfile profile) throws EProfileException {
profile.deleteAllProfileInputs();
- Map<String, ProfileInput> inputs = data.getInputs();
- for (Entry<String, ProfileInput> entry: inputs.entrySet()) {
- String id = entry.getKey();
- String classId = entry.getValue().getClassId();
+ List<ProfileInput> inputs = data.getInputs();
+ for (ProfileInput input: inputs) {
+ String id = input.getId();
+ String classId = input.getClassId();
NameValuePairs nvp = new NameValuePairs();
// TODO - add a field for params in ProfileInput.
diff --git a/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java b/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
index 1463b096e..ba41a3da1 100644
--- a/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/profile/ProfileCLI.java
@@ -6,9 +6,7 @@ import java.io.FileOutputStream;
import java.net.URI;
import java.util.Arrays;
import java.util.Locale;
-import java.util.Map;
-import javax.ws.rs.core.UriBuilder;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
@@ -22,7 +20,6 @@ import com.netscape.certsrv.profile.ProfileData;
import com.netscape.certsrv.profile.ProfileDataInfo;
import com.netscape.certsrv.profile.ProfileInput;
import com.netscape.certsrv.profile.ProfileOutput;
-import com.netscape.certsrv.profile.ProfileResource;
import com.netscape.cmstools.cli.CLI;
import com.netscape.cmstools.cli.MainCLI;
@@ -93,54 +90,50 @@ public class ProfileCLI extends CLI {
}
public static void printProfileDataInfo(ProfileDataInfo info) {
- System.out.println("Profile ID: " + info.getProfileId());
- System.out.println("Profile URL: " + info.getProfileURL());
- System.out.println("Profile Name: " + info.getProfileName());
- System.out.println("Profile Description: " + info.getProfileDescription());
+ System.out.println(" Profile ID: " + info.getProfileId());
+ if (verbose) {
+ System.out.println(" URL: " + info.getProfileURL());
+ }
+ System.out.println(" Name: " + info.getProfileName());
+ System.out.println(" Description: " + info.getProfileDescription());
}
public static void printProfile(ProfileData data, URI baseUri) {
-
- UriBuilder profileBuilder = UriBuilder.fromUri(baseUri);
- URI uri = profileBuilder.path(ProfileResource.class).path("{id}").
- build(data.getId());
-
- System.out.println("Profile ID: " + data.getId());
- System.out.println("Profile URL: " + uri.toString());
- System.out.println("Profile Name: " + data.getName());
- System.out.println("Profile Description: " + data.getDescription() + "\n");
-
- System.out.println("Profile Inputs: " + data.getId());
- int count =0;
- for (Map.Entry<String, ProfileInput> entry: data.getInputs().entrySet()) {
- ProfileInput input = entry.getValue();
- System.out.println("Input " + count + " Id: " + entry.getKey());
- System.out.println("Input " + count + " Name: " + input.getName());
- System.out.println("Input " + count + " Class: " + input.getClassId());
+ System.out.println(" Profile ID: " + data.getId());
+ if (verbose) {
+ System.out.println(" URL: " + data.getLink().getHref().toString());
+ }
+ System.out.println(" Name: " + data.getName());
+ System.out.println(" Description: " + data.getDescription());
+
+ for (ProfileInput input: data.getInputs()) {
+ System.out.println();
+ System.out.println(" Input ID: " + input.getId());
+ System.out.println(" Name: " + input.getName());
+ System.out.println(" Class: " + input.getClassId());
for (ProfileAttribute attr: input.getAttrs()) {
- System.out.println("Input " + count + " Attribute Name: " + attr.getName());
- System.out.println("Input " + count + " Attribute Description: " +
+ System.out.println();
+ System.out.println(" Attribute Name: " + attr.getName());
+ System.out.println(" Attribute Description: " +
attr.getDescriptor().getDescription(Locale.getDefault()));
- System.out.println("Input " + count + " Attribute Syntax: " +
+ System.out.println(" Attribute Syntax: " +
attr.getDescriptor().getSyntax());
}
- count ++;
}
- count = 0;
- for (Map.Entry<String, ProfileOutput> entry: data.getOutputs().entrySet()) {
- ProfileOutput output = entry.getValue();
- System.out.println("Output " + count + " Id: " + entry.getKey());
- System.out.println("Output " + count + " Name: " + output.getName());
- System.out.println("Output " + count + " Class: " + output.getClassId());
+ for (ProfileOutput output: data.getOutputs()) {
+ System.out.println();
+ System.out.println(" Output ID: " + output.getId());
+ System.out.println(" Name: " + output.getName());
+ System.out.println(" Class: " + output.getClassId());
for (ProfileAttribute attr: output.getAttrs()) {
- System.out.println("Output " + count + " Attribute Name: " + attr.getName());
- System.out.println("Output " + count + " Attribute Description: " +
+ System.out.println();
+ System.out.println(" Attribute Name: " + attr.getName());
+ System.out.println(" Attribute Description: " +
attr.getDescriptor().getDescription(Locale.getDefault()));
- System.out.println("Output " + count + " Attribute Syntax: " +
+ System.out.println(" Attribute Syntax: " +
attr.getDescriptor().getSyntax());
}
- count ++;
}
}