diff options
author | Ade Lee <alee@redhat.com> | 2013-07-31 13:38:33 -0400 |
---|---|---|
committer | Ade Lee <alee@redhat.com> | 2013-07-31 16:57:57 -0400 |
commit | 5d5b40fe43ee4a2a18356039271bf405f6881432 (patch) | |
tree | 4855dab09db1ff360d2638bf06791b50041d987a /base | |
parent | d4b0d0ca07ffb2b4b093d9c0feae58f9d63c5336 (diff) | |
download | pki-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')
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 ++; } } |