diff options
Diffstat (limited to 'base')
46 files changed, 420 insertions, 604 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 d50bfedf3..a2be4c4b0 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 @@ -167,7 +167,7 @@ public class CATest { Collection<CertRequestInfo> list = null; try { - list = certClient.listRequests("complete", null, null, null, null, null).getRequests(); + list = certClient.listRequests("complete", null, null, null, null, null).getEntries(); } catch (Exception e) { e.printStackTrace(); } @@ -205,7 +205,7 @@ public class CATest { CertDataInfos infos = null; try { - infos = certClient.listCerts("VALID", 100, 10); + infos = certClient.listCerts("VALID", null, null, null, null); } catch (Exception e) { e.printStackTrace(); } @@ -268,7 +268,7 @@ public class CATest { //Get a list of Profiles - ProfileDataInfos pInfos = client.listProfiles(); + ProfileDataInfos pInfos = client.listProfiles(null, null); printProfileInfos(pInfos); @@ -289,7 +289,7 @@ public class CATest { log(e.toString()); } - for (CertRequestInfo info : reqInfo.getRequests()) { + for (CertRequestInfo info : reqInfo.getEntries()) { printRequestInfo(info); CertReviewResponse reviewData = client.reviewRequest(info.getRequestId()); @@ -309,7 +309,7 @@ public class CATest { log(e.toString()); } - for (CertRequestInfo info : reqInfo.getRequests()) { + for (CertRequestInfo info : reqInfo.getEntries()) { printRequestInfo(info); } } @@ -402,7 +402,7 @@ public class CATest { return; } - Collection<ProfileDataInfo> listProfiles = pInfos.getProfileInfos(); + Collection<ProfileDataInfo> listProfiles = pInfos.getEntries(); if (listProfiles != null) { log("\nProfiles found. \n"); for (ProfileDataInfo info: listProfiles) { @@ -455,7 +455,7 @@ public class CATest { return; } - Collection<CertDataInfo> listCerts = infos.getCertInfos(); + Collection<CertDataInfo> listCerts = infos.getEntries(); if (listCerts != null) { log("\nCertificates found with search filter: " + filter + "\n"); for (CertDataInfo info: listCerts) { diff --git a/base/common/src/com/netscape/certsrv/base/DataCollection.java b/base/common/src/com/netscape/certsrv/base/DataCollection.java index 8432604f0..f5f46bcb8 100644 --- a/base/common/src/com/netscape/certsrv/base/DataCollection.java +++ b/base/common/src/com/netscape/certsrv/base/DataCollection.java @@ -47,7 +47,9 @@ public class DataCollection<E> { } public void setEntries(Collection<E> entries) { - this.entries = entries; + this.entries.clear(); + if (entries == null) return; + this.entries.addAll(entries); } public void addEntry(E entry) { @@ -63,8 +65,10 @@ public class DataCollection<E> { return links; } - public void setLink(Collection<Link> links) { - this.links = links; + public void setLinks(Collection<Link> links) { + this.links.clear(); + if (links == null) return; + this.links.addAll(links); } public void addLink(Link link) { diff --git a/base/common/src/com/netscape/certsrv/ca/CAClient.java b/base/common/src/com/netscape/certsrv/ca/CAClient.java index 24a84a2ea..fecef38f5 100644 --- a/base/common/src/com/netscape/certsrv/ca/CAClient.java +++ b/base/common/src/com/netscape/certsrv/ca/CAClient.java @@ -50,8 +50,8 @@ public class CAClient extends SubsystemClient { profileClient = createProxy(ProfileResource.class); } - public ProfileDataInfos listProfiles() { - return profileClient.listProfiles(); + public ProfileDataInfos listProfiles(Integer start, Integer size) { + return profileClient.listProfiles(start, size); } public ProfileData getProfile(String id) { diff --git a/base/common/src/com/netscape/certsrv/cert/CertClient.java b/base/common/src/com/netscape/certsrv/cert/CertClient.java index 9de548cad..ab7ad9a55 100644 --- a/base/common/src/com/netscape/certsrv/cert/CertClient.java +++ b/base/common/src/com/netscape/certsrv/cert/CertClient.java @@ -51,8 +51,8 @@ public class CertClient extends Client { return certClient.reviewCert(id); } - public CertDataInfos listCerts(String status, Integer start, Integer size) { - return certClient.listCerts(status, start, size); + public CertDataInfos listCerts(String status, Integer maxResults, Integer maxTime, Integer start, Integer size) { + return certClient.listCerts(status, maxResults, maxTime, start, size); } public CertDataInfos findCerts(CertSearchRequest data, Integer start, Integer size) { @@ -120,8 +120,8 @@ public class CertClient extends Client { return certRequestClient.getEnrollmentTemplate(id); } - public ProfileDataInfos listEnrollmentTemplates() { - return certRequestClient.listEnrollmentTemplates(); + public ProfileDataInfos listEnrollmentTemplates(Integer start, Integer size) { + return certRequestClient.listEnrollmentTemplates(start, size); } } diff --git a/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java b/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java index 475e90815..1010f3d40 100644 --- a/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java +++ b/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java @@ -17,56 +17,18 @@ //--- END COPYRIGHT BLOCK --- package com.netscape.certsrv.cert; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; -import org.jboss.resteasy.plugins.providers.atom.Link; +import com.netscape.certsrv.base.DataCollection; @XmlRootElement(name = "CertDataInfos") -public class CertDataInfos { +public class CertDataInfos extends DataCollection<CertDataInfo> { - protected Collection<CertDataInfo> certInfos = new ArrayList<CertDataInfo>(); - protected List<Link> links = new ArrayList<Link>(); - - /** - * @return the CertInfos - */ - @XmlElementRef - public Collection<CertDataInfo> getCertInfos() { - return certInfos; - } - - /** - * @param certInfos the CertInfos to set - */ - public void setCertInfos(Collection<CertDataInfo> certInfos) { - this.certInfos = certInfos; - } - - /** - * @return the links - */ @XmlElementRef - public List<Link> getLinks() { - return links; - } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links = links; - } - - public void addCertData(CertDataInfo certInfo){ - this.certInfos.add(certInfo); - } - - public void addLink(Link link) { - this.links.add(link); + public Collection<CertDataInfo> getEntries() { + return super.getEntries(); } } diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java index a6a520c23..6948b285b 100644 --- a/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java +++ b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java @@ -19,84 +19,33 @@ package com.netscape.certsrv.cert; import java.io.StringReader; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; -import com.netscape.certsrv.base.Link; +import org.jboss.resteasy.plugins.providers.atom.Link; + +import com.netscape.certsrv.base.DataCollection; import com.netscape.certsrv.request.RequestStatus; @XmlRootElement(name = "CertRequestInfos") -@XmlAccessorType(XmlAccessType.FIELD) -public class CertRequestInfos { +public class CertRequestInfos extends DataCollection<CertRequestInfo> { @XmlElementRef - protected Collection<CertRequestInfo> requests = new ArrayList<CertRequestInfo>(); - - @XmlElement(name = "Links") - protected List<Link> links = new ArrayList<Link>(); - - /** - * @return the requests - */ - public Collection<CertRequestInfo> getRequests() { - return requests; - } - - /** - * @param requests the requests to set - */ - public void setRequests(Collection<CertRequestInfo> requests) { - this.requests.clear(); - if (requests == null) return; - this.requests.addAll(requests); - } - - /** - * @param requests the request to add - */ - public void addRequest(CertRequestInfo request) { - requests.add(request); - } - - /** - * @return the links - */ - public List<Link> getLinks() { - return links; - } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links.clear(); - if (links == null) return; - this.links.addAll(links); - } - - /** - * @param links the link to add - */ - public void addLink(Link link) { - links.add(link); + public Collection<CertRequestInfo> getEntries() { + return super.getEntries(); } @XmlTransient public String getNext() { - for (Link link : links) { - if ("next".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("next".equals(link.getRel())) { + return link.getHref().toString(); } } return null; @@ -104,45 +53,14 @@ public class CertRequestInfos { @XmlTransient public String getPrevious() { - for (Link link : links) { - if ("previous".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("previous".equals(link.getRel())) { + return link.getHref().toString(); } } return null; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((links == null) ? 0 : links.hashCode()); - result = prime * result + ((requests == null) ? 0 : requests.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - CertRequestInfos other = (CertRequestInfos) obj; - if (links == null) { - if (other.links != null) - return false; - } else if (!links.equals(other.links)) - return false; - if (requests == null) { - if (other.requests != null) - return false; - } else if (!requests.equals(other.requests)) - return false; - return true; - } - public String toString() { try { StringWriter sw = new StringWriter(); @@ -173,7 +91,7 @@ public class CertRequestInfos { request.setRequestType("enrollment"); request.setRequestStatus(RequestStatus.COMPLETE); request.setCertRequestType("pkcs10"); - before.addRequest(request); + before.addEntry(request); String string = before.toString(); System.out.println(string); diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java b/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java index 0d58be282..7656080a1 100644 --- a/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java +++ b/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java @@ -81,7 +81,9 @@ public interface CertRequestResource { @GET @Path("certrequests/profiles") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public ProfileDataInfos listEnrollmentTemplates(); + public ProfileDataInfos listEnrollmentTemplates( + @QueryParam("start") Integer start, + @QueryParam("size") Integer size); @GET @Path("certrequests/profiles/{id}") diff --git a/base/common/src/com/netscape/certsrv/cert/CertResource.java b/base/common/src/com/netscape/certsrv/cert/CertResource.java index a667fdc2d..b5b282b18 100644 --- a/base/common/src/com/netscape/certsrv/cert/CertResource.java +++ b/base/common/src/com/netscape/certsrv/cert/CertResource.java @@ -1,7 +1,6 @@ package com.netscape.certsrv.cert; import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; @@ -17,16 +16,15 @@ import com.netscape.certsrv.dbs.certdb.CertId; @Path("") public interface CertResource { - public static final int DEFAULT_MAXTIME = 0; - public static final int DEFAULT_MAXRESULTS = 20; - @GET @Path("certs") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public CertDataInfos listCerts( @QueryParam("status") String status, - @DefaultValue("" + DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults, - @DefaultValue("" + DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime); + @QueryParam("maxResults") Integer maxResults, + @QueryParam("maxTime") Integer maxTime, + @QueryParam("start") Integer start, + @QueryParam("size") Integer size); @POST @Path("certs/search") diff --git a/base/common/src/com/netscape/certsrv/key/KeyClient.java b/base/common/src/com/netscape/certsrv/key/KeyClient.java index 385996eed..272f8ca04 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyClient.java +++ b/base/common/src/com/netscape/certsrv/key/KeyClient.java @@ -41,8 +41,9 @@ public class KeyClient extends Client { keyRequestClient = createProxy(KeyRequestResource.class); } - public KeyDataInfos findKeys(String clientID, String status, Integer maxSize, Integer maxTime) { - return keyClient.listKeys(clientID, status, maxSize, maxTime); + public KeyDataInfos findKeys(String clientID, String status, Integer maxSize, Integer maxTime, + Integer start, Integer size) { + return keyClient.listKeys(clientID, status, maxSize, maxTime, start, size); } public KeyData retrieveKey(KeyRecoveryRequest data) { diff --git a/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java index d9fc885b4..eab8ae97c 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java +++ b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java @@ -17,82 +17,18 @@ // --- END COPYRIGHT BLOCK --- package com.netscape.certsrv.key; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlTransient; -import com.netscape.certsrv.base.Link; +import com.netscape.certsrv.base.DataCollection; @XmlRootElement(name = "KeyDataInfos") -public class KeyDataInfos { +public class KeyDataInfos extends DataCollection<KeyDataInfo> { - protected Collection<KeyDataInfo> keyInfos = new ArrayList<KeyDataInfo>(); - protected List<Link> links = new ArrayList<Link>(); - - /** - * @return the keyInfos - */ @XmlElementRef public Collection<KeyDataInfo> getKeyInfos() { - return keyInfos; - } - - /** - * @param keyInfos the keyInfos to set - */ - public void setKeyInfos(Collection<KeyDataInfo> keyInfos) { - this.keyInfos = keyInfos; - } - - /** - * @param keyInfo the keyInfo to add - */ - public void addKeyInfo(KeyDataInfo keyInfo) { - keyInfos.add(keyInfo); - } - - /** - * @return the links - */ - @XmlElementRef - public List<Link> getLinks() { - return links; - } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links = links; - } - - @XmlTransient - public String getNext() { - if (links == null) { - return null; - } - for (Link link : links) { - if ("next".equals(link.getRelationship())) { - return link.getHref(); - } - } - return null; - } - - @XmlTransient - public String getPrevious() { - if (links == null) { - return null; - } - for (Link link : links) { - if ("previous".equals(link.getRelationship())) { - return link.getHref(); - } - } - return null; + return super.getEntries(); } } diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java index 90756f8d3..403dc7d41 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java +++ b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java @@ -19,84 +19,32 @@ package com.netscape.certsrv.key; import java.io.StringReader; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; -import com.netscape.certsrv.base.Link; +import org.jboss.resteasy.plugins.providers.atom.Link; + +import com.netscape.certsrv.base.DataCollection; import com.netscape.certsrv.request.RequestStatus; @XmlRootElement(name = "KeyRequestInfos") -@XmlAccessorType(XmlAccessType.FIELD) -public class KeyRequestInfos { +public class KeyRequestInfos extends DataCollection<KeyRequestInfo> { @XmlElementRef - protected Collection<KeyRequestInfo> requests = new ArrayList<KeyRequestInfo>(); - - @XmlElement(name = "Link") - protected List<Link> links = new ArrayList<Link>(); - - /** - * @return the requests - */ - public Collection<KeyRequestInfo> getRequests() { - return requests; - } - - /** - * @param requests the requests to set - */ - public void setRequests(Collection<KeyRequestInfo> requests) { - this.requests.clear(); - if (requests == null) return; - this.requests.addAll(requests); - } - - /** - * @param request the request to add - */ - public void addRequest(KeyRequestInfo request) { - requests.add(request); - } - - /** - * @return the links - */ - public List<Link> getLinks() { - return links; + public Collection<KeyRequestInfo> getEntries() { + return super.getEntries(); } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links.clear(); - if (links == null) return; - this.links.addAll(links); - } - - /** - * @param links the link to add - */ - public void addLink(Link link) { - this.links.add(link); - } - @XmlTransient public String getNext() { - for (Link link : links) { - if ("next".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("next".equals(link.getRel())) { + return link.getHref().toString(); } } return null; @@ -104,45 +52,14 @@ public class KeyRequestInfos { @XmlTransient public String getPrevious() { - for (Link link : links) { - if ("previous".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("previous".equals(link.getRel())) { + return link.getHref().toString(); } } return null; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((links == null) ? 0 : links.hashCode()); - result = prime * result + ((requests == null) ? 0 : requests.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - KeyRequestInfos other = (KeyRequestInfos) obj; - if (links == null) { - if (other.links != null) - return false; - } else if (!links.equals(other.links)) - return false; - if (requests == null) { - if (other.requests != null) - return false; - } else if (!requests.equals(other.requests)) - return false; - return true; - } - public String toString() { try { StringWriter sw = new StringWriter(); @@ -172,7 +89,7 @@ public class KeyRequestInfos { KeyRequestInfo request = new KeyRequestInfo(); request.setRequestType("securityDataEnrollment"); request.setRequestStatus(RequestStatus.COMPLETE); - before.addRequest(request); + before.addEntry(request); String string = before.toString(); System.out.println(string); diff --git a/base/common/src/com/netscape/certsrv/key/KeyResource.java b/base/common/src/com/netscape/certsrv/key/KeyResource.java index bcca6bb97..a574abb65 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyResource.java +++ b/base/common/src/com/netscape/certsrv/key/KeyResource.java @@ -23,7 +23,9 @@ public interface KeyResource { public KeyDataInfos listKeys(@QueryParam("clientID") String clientID, @QueryParam("status") String status, @QueryParam("maxResults") Integer maxResults, - @QueryParam("maxTime") Integer maxTime); + @QueryParam("maxTime") Integer maxTime, + @QueryParam("start") Integer start, + @QueryParam("size") Integer size); /** diff --git a/base/common/src/com/netscape/certsrv/kra/KRAClient.java b/base/common/src/com/netscape/certsrv/kra/KRAClient.java index 73ad56454..ebccd664d 100644 --- a/base/common/src/com/netscape/certsrv/kra/KRAClient.java +++ b/base/common/src/com/netscape/certsrv/kra/KRAClient.java @@ -63,7 +63,7 @@ public class KRAClient extends SubsystemClient { KeyRequestInfos infos = keyRequestClient.listRequests( requestState, requestType, null, new RequestId(0), 100, 100, 10 ); - Collection<KeyRequestInfo> list = infos.getRequests(); + Collection<KeyRequestInfo> list = infos.getEntries(); return list; } @@ -82,7 +82,7 @@ public class KRAClient extends SubsystemClient { } public KeyDataInfo getKeyData(String clientId, String status) { - KeyDataInfos infos = keyClient.listKeys(clientId, status, 100, 10); + KeyDataInfos infos = keyClient.listKeys(clientId, status, null, null, null, null); Collection<KeyDataInfo> list = infos.getKeyInfos(); Iterator<KeyDataInfo> iter = list.iterator(); diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileClient.java b/base/common/src/com/netscape/certsrv/profile/ProfileClient.java index eefd0660e..2ea6d8698 100644 --- a/base/common/src/com/netscape/certsrv/profile/ProfileClient.java +++ b/base/common/src/com/netscape/certsrv/profile/ProfileClient.java @@ -44,8 +44,8 @@ public class ProfileClient extends Client { return profileClient.retrieveProfile(id); } - public ProfileDataInfos listProfiles() { - return profileClient.listProfiles(); + public ProfileDataInfos listProfiles(Integer start, Integer size) { + return profileClient.listProfiles(start, size); } public void enableProfile(String id) { diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java index ed2c11cf7..a323491b4 100644 --- a/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java +++ b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java @@ -18,58 +18,29 @@ package com.netscape.certsrv.profile; import java.util.Collection; -import java.util.List; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; -import com.netscape.certsrv.base.Link; +import org.jboss.resteasy.plugins.providers.atom.Link; -@XmlRootElement(name = "ProfileDataInfos") -public class ProfileDataInfos { - - protected Collection<ProfileDataInfo> profileInfos; - protected List<Link> links; - - /** - * @return the ProfileInfos - */ - @XmlElementRef - public Collection<ProfileDataInfo> getProfileInfos() { - return profileInfos; - } +import com.netscape.certsrv.base.DataCollection; +//import com.netscape.certsrv.base.Link; - /** - * @param ProfileInfos theProfileInfos to set - */ - public void setProfileInfos(Collection<ProfileDataInfo> profileInfos) { - this.profileInfos = profileInfos; - } +@XmlRootElement(name = "ProfileDataInfos") +public class ProfileDataInfos extends DataCollection<ProfileDataInfo> { - /** - * @return the links - */ @XmlElementRef - public List<Link> getLinks() { - return links; - } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links = links; + public Collection<ProfileDataInfo> getEntries() { + return super.getEntries(); } @XmlTransient public String getNext() { - if (links == null) { - return null; - } - for (Link link : links) { - if ("next".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("next".equals(link. getRel())) { + return link.getHref().toString(); } } return null; @@ -77,12 +48,9 @@ public class ProfileDataInfos { @XmlTransient public String getPrevious() { - if (links == null) { - return null; - } - for (Link link : links) { - if ("previous".equals(link.getRelationship())) { - return link.getHref(); + for (Link link : getLinks()) { + if ("previous".equals(link.getRel())) { + return link.getHref().toString(); } } return null; diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileResource.java b/base/common/src/com/netscape/certsrv/profile/ProfileResource.java index 06dd785c3..5af61bff7 100644 --- a/base/common/src/com/netscape/certsrv/profile/ProfileResource.java +++ b/base/common/src/com/netscape/certsrv/profile/ProfileResource.java @@ -24,7 +24,9 @@ public interface ProfileResource { @GET @ACLMapping("profile.list") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public ProfileDataInfos listProfiles(); + public ProfileDataInfos listProfiles( + @QueryParam("start") Integer start, + @QueryParam("size") Integer size); @GET @Path("{id}") diff --git a/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java index 7e9445dbc..157c8db26 100644 --- a/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java +++ b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java @@ -17,61 +17,9 @@ //--- END COPYRIGHT BLOCK --- package com.netscape.certsrv.request; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import com.netscape.certsrv.base.Link; +import com.netscape.certsrv.base.DataCollection; //Convenience class to simply hold a Collection of CMSRequests and a List of Links. -public class CMSRequestInfos { - - protected Collection<CMSRequestInfo> requests = new ArrayList<CMSRequestInfo>(); - protected List<Link> links = new ArrayList<Link>(); - - /** - * @return the requests - */ - public Collection<CMSRequestInfo> getRequests() { - return requests; - } - - /** - * @param requests the requests to set - */ - public void setRequests(Collection<CMSRequestInfo> requests) { - this.requests.clear(); - if (requests == null) return; - this.requests.addAll(requests); - } - - /** - * @param requests the requests to add - */ - public void addRequest(CMSRequestInfo request) { - requests.add(request); - } - - /** - * @return the links - */ - public List<Link> getLinks() { - return links; - } - - /** - * @param links the links to set - */ - public void setLinks(List<Link> links) { - this.links.clear(); - if (links == null) return; - this.links.addAll(links); - } +public class CMSRequestInfos extends DataCollection<CMSRequestInfo> { - /** - * @param links the link to add - */ - public void addLink(Link link) { - links.add(link); - } } diff --git a/base/common/src/com/netscape/certsrv/system/TPSConnectorResource.java b/base/common/src/com/netscape/certsrv/system/TPSConnectorResource.java index c29fa3d19..aeee39071 100644 --- a/base/common/src/com/netscape/certsrv/system/TPSConnectorResource.java +++ b/base/common/src/com/netscape/certsrv/system/TPSConnectorResource.java @@ -43,7 +43,9 @@ import com.netscape.certsrv.key.KeyData; public interface TPSConnectorResource { @GET @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public TPSConnectorCollection findConnectors(Integer start, Integer size); + public TPSConnectorCollection findConnectors( + @QueryParam("start") Integer start, + @QueryParam("size") Integer size); @GET @Path("{id}") diff --git a/base/java-tools/src/com/netscape/cmstools/cert/CertFindCLI.java b/base/java-tools/src/com/netscape/cmstools/cert/CertFindCLI.java index 7f8eb75f1..97a76d793 100644 --- a/base/java-tools/src/com/netscape/cmstools/cert/CertFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/cert/CertFindCLI.java @@ -21,6 +21,7 @@ package com.netscape.cmstools.cert; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.util.Collection; import java.util.Date; import javax.xml.bind.JAXBException; @@ -29,7 +30,6 @@ import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.ParseException; -import com.netscape.certsrv.base.PKIException; import com.netscape.certsrv.cert.CertDataInfo; import com.netscape.certsrv.cert.CertDataInfos; import com.netscape.certsrv.cert.CertSearchRequest; @@ -118,24 +118,15 @@ public class CertFindCLI extends CLI { addSearchAttribute(cmd, searchData); - CertDataInfos certs = null; - try { - certs = certCLI.certClient.findCerts(searchData, start, size); - } catch (PKIException e) { - System.err.println("Error: Cannot list certificates. " + e.getMessage()); - System.exit(1); - } - - if (certs.getCertInfos() == null || certs.getCertInfos().isEmpty()) { - MainCLI.printMessage("No certificates found"); - System.exit(0); // valid result - } + CertDataInfos certs = certCLI.certClient.findCerts(searchData, start, size); - MainCLI.printMessage(certs.getCertInfos().size() + " certificate(s) found"); + MainCLI.printMessage(certs.getTotal() + " entries found"); + if (certs.getTotal() == 0) return; boolean first = true; - for (CertDataInfo cert : certs.getCertInfos()) { + Collection<CertDataInfo> entries = certs.getEntries(); + for (CertDataInfo cert : entries) { if (first) { first = false; } else { @@ -145,7 +136,7 @@ public class CertFindCLI extends CLI { CertCLI.printCertInfo(cert); } - MainCLI.printMessage("Number of entries returned " + certs.getCertInfos().size()); + MainCLI.printMessage("Number of entries returned " + certs.getEntries().size()); } public void addOptions() { diff --git a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestFindCLI.java b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestFindCLI.java index 79970393c..d09c7698f 100644 --- a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestFindCLI.java @@ -18,11 +18,12 @@ package com.netscape.cmstools.cert; +import java.util.Collection; + import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.ParseException; -import com.netscape.certsrv.base.PKIException; import com.netscape.certsrv.cert.CertRequestInfo; import com.netscape.certsrv.cert.CertRequestInfos; import com.netscape.certsrv.request.RequestId; @@ -50,7 +51,6 @@ public class CertRequestFindCLI extends CLI { addOptions(); CommandLine cmd = null; - CertRequestInfos certRequests = null; try { cmd = parser.parse(options, args); } catch (ParseException e) { @@ -82,19 +82,15 @@ public class CertRequestFindCLI extends CLI { String requestType = cmd.getOptionValue("type"); if (requestType != null && requestType.equals("all")) requestType = null; - try { - certRequests = certCLI.certClient.certRequestClient.listRequests(requestState, requestType, start, size, maxResults, maxTime); - } catch (PKIException e) { - System.err.println("Error: Cannot list certificate requests. " + e.getMessage()); - System.exit(-1); - } - if (certRequests.getRequests() == null || certRequests.getRequests().isEmpty()) { - MainCLI.printMessage("No matches found."); - System.exit(-1); - } + CertRequestInfos response = certCLI.certClient.certRequestClient.listRequests(requestState, requestType, start, size, maxResults, maxTime); + MainCLI.printMessage(response.getTotal() + " entries matched"); + if (response.getTotal() == 0) return; + + Collection<CertRequestInfo> entries = response.getEntries(); boolean first = true; - for (CertRequestInfo certRequest : certRequests.getRequests()) { + + for (CertRequestInfo certRequest : entries) { if (first) { first = false; } else { @@ -104,7 +100,7 @@ public class CertRequestFindCLI extends CLI { CertCLI.printCertRequestInfo(certRequest); } - MainCLI.printMessage("Number of entries returned " + certRequests.getRequests().size()); + MainCLI.printMessage("Number of entries returned " + entries.size()); } public void addOptions() { diff --git a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestProfileFindCLI.java b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestProfileFindCLI.java index 48c051905..72172535a 100644 --- a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestProfileFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestProfileFindCLI.java @@ -2,7 +2,12 @@ package com.netscape.cmstools.cert; import java.util.Collection; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.ParseException; + import com.netscape.certsrv.profile.ProfileDataInfo; +import com.netscape.certsrv.profile.ProfileDataInfos; import com.netscape.cmstools.cli.CLI; import com.netscape.cmstools.cli.MainCLI; import com.netscape.cmstools.profile.ProfileCLI; @@ -21,7 +26,38 @@ public class CertRequestProfileFindCLI extends CLI { } public void execute(String[] args) throws Exception { - Collection<ProfileDataInfo> infos = certCLI.certClient.listEnrollmentTemplates().getProfileInfos(); + + Option option = new Option(null, "start", true, "Page start"); + option.setArgName("start"); + options.addOption(option); + + option = new Option(null, "size", true, "Page size"); + option.setArgName("size"); + options.addOption(option); + + CommandLine cmd = null; + + try { + cmd = parser.parse(options, args); + + } catch (ParseException e) { + System.err.println("Error: " + e.getMessage()); + printHelp(); + System.exit(1); + } + + String s = cmd.getOptionValue("start"); + Integer start = s == null ? null : Integer.valueOf(s); + + s = cmd.getOptionValue("size"); + Integer size = s == null ? null : Integer.valueOf(s); + + ProfileDataInfos response = certCLI.certClient.listEnrollmentTemplates(start, size); + + MainCLI.printMessage(response.getTotal() + " entries matched"); + if (response.getTotal() == 0) return; + + Collection<ProfileDataInfo> infos = response.getEntries(); boolean first = true; for (ProfileDataInfo info: infos) { diff --git a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestSubmitCLI.java b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestSubmitCLI.java index d43763f11..205e2884d 100644 --- a/base/java-tools/src/com/netscape/cmstools/cert/CertRequestSubmitCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/cert/CertRequestSubmitCLI.java @@ -73,7 +73,7 @@ public class CertRequestSubmitCLI extends CLI { } private void printRequestInformation(CertRequestInfos cri) { - Collection<CertRequestInfo> allRequests = cri.getRequests(); + Collection<CertRequestInfo> allRequests = cri.getEntries(); boolean first = true; for (CertRequestInfo x : allRequests) { if (first) { diff --git a/base/java-tools/src/com/netscape/cmstools/group/GroupFindCLI.java b/base/java-tools/src/com/netscape/cmstools/group/GroupFindCLI.java index 45c2acf16..b7bc81d90 100644 --- a/base/java-tools/src/com/netscape/cmstools/group/GroupFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/group/GroupFindCLI.java @@ -76,11 +76,10 @@ public class GroupFindCLI extends CLI { GroupCollection response = groupCLI.groupClient.findGroups(filter, start, size); - Collection<GroupData> entries = response.getEntries(); - - MainCLI.printMessage(response.getTotal() + " group(s) matched"); + MainCLI.printMessage(response.getTotal() + " entries matched"); if (response.getTotal() == 0) return; + Collection<GroupData> entries = response.getEntries(); boolean first = true; for (GroupData groupData : entries) { diff --git a/base/java-tools/src/com/netscape/cmstools/group/GroupMemberFindCLI.java b/base/java-tools/src/com/netscape/cmstools/group/GroupMemberFindCLI.java index ee694912d..841a0f8c4 100644 --- a/base/java-tools/src/com/netscape/cmstools/group/GroupMemberFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/group/GroupMemberFindCLI.java @@ -82,11 +82,10 @@ public class GroupMemberFindCLI extends CLI { GroupMemberCollection response = groupMemberCLI.groupClient.findGroupMembers(groupID, start, size); - Collection<GroupMemberData> entries = response.getEntries(); - - MainCLI.printMessage(response.getTotal() + " group member(s) matched"); + MainCLI.printMessage(response.getTotal() + " entries matched"); if (response.getTotal() == 0) return; + Collection<GroupMemberData> entries = response.getEntries(); boolean first = true; for (GroupMemberData groupMemberData : entries) { diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java index 9a91f37e2..25fe6af3c 100644 --- a/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java @@ -63,6 +63,14 @@ public class KeyFindCLI extends CLI { option.setArgName("max time"); options.addOption(option); + option = new Option(null, "start", true, "Page start"); + option.setArgName("start"); + options.addOption(option); + + option = new Option(null, "size", true, "Page size"); + option.setArgName("size"); + options.addOption(option); + CommandLine cmd = null; try { @@ -83,7 +91,13 @@ public class KeyFindCLI extends CLI { s = cmd.getOptionValue("maxTime"); Integer maxTime = s == null ? null : Integer.valueOf(s); - KeyDataInfos keys = keyCLI.keyClient.findKeys(clientID, status, maxResults, maxTime); + s = cmd.getOptionValue("start"); + Integer start = s == null ? null : Integer.valueOf(s); + + s = cmd.getOptionValue("size"); + Integer size = s == null ? null : Integer.valueOf(s); + + KeyDataInfos keys = keyCLI.keyClient.findKeys(clientID, status, maxResults, maxTime, start, size); Collection<KeyDataInfo> entries = keys.getKeyInfos(); diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java index d74a2c2f1..5ed2bf729 100644 --- a/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java @@ -106,10 +106,10 @@ public class KeyRequestFindCLI extends CLI { KeyRequestInfos keys = keyCLI.keyClient.findKeyRequests( status, type, clientID, start, pageSize, maxResults, maxTime); - Collection<KeyRequestInfo> entries = keys.getRequests(); - - MainCLI.printMessage(entries.size() + " key request(s) matched"); + MainCLI.printMessage(keys.getTotal() + " entries matched"); + if (keys.getTotal() == 0) return; + Collection<KeyRequestInfo> entries = keys.getEntries(); boolean first = true; for (KeyRequestInfo info : entries) { diff --git a/base/java-tools/src/com/netscape/cmstools/logging/ActivityFindCLI.java b/base/java-tools/src/com/netscape/cmstools/logging/ActivityFindCLI.java index 08c8496ca..88b817798 100644 --- a/base/java-tools/src/com/netscape/cmstools/logging/ActivityFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/logging/ActivityFindCLI.java @@ -72,11 +72,11 @@ public class ActivityFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); ActivityCollection result = activityCLI.activityClient.findActivities(start, size); - Collection<ActivityData> activities = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " activity(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<ActivityData> activities = result.getEntries(); boolean first = true; for (ActivityData activityData : activities) { diff --git a/base/java-tools/src/com/netscape/cmstools/profile/ProfileFindCLI.java b/base/java-tools/src/com/netscape/cmstools/profile/ProfileFindCLI.java index 1370319f9..21559551c 100644 --- a/base/java-tools/src/com/netscape/cmstools/profile/ProfileFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/profile/ProfileFindCLI.java @@ -2,7 +2,11 @@ package com.netscape.cmstools.profile; import java.util.Collection; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; + import com.netscape.certsrv.profile.ProfileDataInfo; +import com.netscape.certsrv.profile.ProfileDataInfos; import com.netscape.cmstools.cli.CLI; import com.netscape.cmstools.cli.MainCLI; @@ -21,7 +25,37 @@ public class ProfileFindCLI extends CLI { public void execute(String[] args) throws Exception { - Collection<ProfileDataInfo> infos = profileCLI.profileClient.listProfiles().getProfileInfos(); + Option option = new Option(null, "start", true, "Page start"); + option.setArgName("start"); + options.addOption(option); + + option = new Option(null, "size", true, "Page size"); + option.setArgName("size"); + options.addOption(option); + + CommandLine cmd = null; + + try { + cmd = parser.parse(options, args); + + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + printHelp(); + System.exit(1); + } + + String s = cmd.getOptionValue("start"); + Integer start = s == null ? null : Integer.valueOf(s); + + s = cmd.getOptionValue("size"); + Integer size = s == null ? null : Integer.valueOf(s); + + ProfileDataInfos response = profileCLI.profileClient.listProfiles(start, size); + + MainCLI.printMessage(response.getTotal() + " entries matched"); + if (response.getTotal() == 0) return; + + Collection<ProfileDataInfo> infos = response.getEntries(); boolean first = true; for (ProfileDataInfo info: infos) { diff --git a/base/java-tools/src/com/netscape/cmstools/selftests/SelfTestFindCLI.java b/base/java-tools/src/com/netscape/cmstools/selftests/SelfTestFindCLI.java index 4570d9a91..241f6c300 100644 --- a/base/java-tools/src/com/netscape/cmstools/selftests/SelfTestFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/selftests/SelfTestFindCLI.java @@ -72,11 +72,11 @@ public class SelfTestFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); SelfTestCollection result = selfTestCLI.selfTestClient.findSelfTests(start, size); - Collection<SelfTestData> selfTests = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " self test(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<SelfTestData> selfTests = result.getEntries(); boolean first = true; for (SelfTestData selfTestInfo : selfTests) { diff --git a/base/java-tools/src/com/netscape/cmstools/system/TPSConnectorFindCLI.java b/base/java-tools/src/com/netscape/cmstools/system/TPSConnectorFindCLI.java index 737851704..a210d3ab3 100644 --- a/base/java-tools/src/com/netscape/cmstools/system/TPSConnectorFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/system/TPSConnectorFindCLI.java @@ -72,7 +72,7 @@ public class TPSConnectorFindCLI extends CLI { TPSConnectorCollection result = tpsConnectorCLI.tpsConnectorClient.findConnectors(start, size); - MainCLI.printMessage(result.getTotal() + " TPS connector(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; Collection<TPSConnectorData> conns = result.getEntries(); diff --git a/base/java-tools/src/com/netscape/cmstools/tps/authenticator/AuthenticatorFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/authenticator/AuthenticatorFindCLI.java index 81724bb31..683d2891c 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/authenticator/AuthenticatorFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/authenticator/AuthenticatorFindCLI.java @@ -72,11 +72,11 @@ public class AuthenticatorFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); AuthenticatorCollection result = authenticatorCLI.authenticatorClient.findAuthenticators(start, size); - Collection<AuthenticatorData> authenticators = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " authenticator(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<AuthenticatorData> authenticators = result.getEntries(); boolean first = true; for (AuthenticatorData authenticatorData : authenticators) { diff --git a/base/java-tools/src/com/netscape/cmstools/tps/cert/TPSCertFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/cert/TPSCertFindCLI.java index 9ba66a62a..12ec1b9da 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/cert/TPSCertFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/cert/TPSCertFindCLI.java @@ -72,11 +72,11 @@ public class TPSCertFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); TPSCertCollection result = certCLI.certClient.findCerts(start, size); - Collection<TPSCertData> certs = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " certificate(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<TPSCertData> certs = result.getEntries(); boolean first = true; for (TPSCertData certData : certs) { diff --git a/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionFindCLI.java index 7cb4c1b16..d78727d7b 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/connection/ConnectionFindCLI.java @@ -72,11 +72,11 @@ public class ConnectionFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); ConnectionCollection result = connectionCLI.connectionClient.findConnections(start, size); - Collection<ConnectionData> connections = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " connection(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<ConnectionData> connections = result.getEntries(); boolean first = true; for (ConnectionData connectionData : connections) { diff --git a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileFindCLI.java index 907641462..cabacaacd 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileFindCLI.java @@ -72,11 +72,11 @@ public class ProfileFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); ProfileCollection result = profileCLI.profileClient.findProfiles(start, size); - Collection<ProfileData> profiles = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " profile(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<ProfileData> profiles = result.getEntries(); boolean first = true; for (ProfileData profileData : profiles) { diff --git a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileMappingFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileMappingFindCLI.java index 6e101a049..9d87cc43c 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileMappingFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/profile/ProfileMappingFindCLI.java @@ -72,11 +72,11 @@ public class ProfileMappingFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); ProfileMappingCollection result = profileMappingCLI.profileMappingClient.findProfileMappings(start, size); - Collection<ProfileMappingData> profileMappings = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " profile mapping(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<ProfileMappingData> profileMappings = result.getEntries(); boolean first = true; for (ProfileMappingData profileMappingData : profileMappings) { diff --git a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenFindCLI.java b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenFindCLI.java index 2e43f3cdd..6cfb1fb00 100644 --- a/base/java-tools/src/com/netscape/cmstools/tps/token/TokenFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/tps/token/TokenFindCLI.java @@ -72,11 +72,11 @@ public class TokenFindCLI extends CLI { Integer size = s == null ? null : Integer.valueOf(s); TokenCollection result = tokenCLI.tokenClient.findTokens(start, size); - Collection<TokenData> tokens = result.getEntries(); - MainCLI.printMessage(result.getTotal() + " token(s) matched"); + MainCLI.printMessage(result.getTotal() + " entries matched"); if (result.getTotal() == 0) return; + Collection<TokenData> tokens = result.getEntries(); boolean first = true; for (TokenData tokenData : tokens) { diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserCertFindCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserCertFindCLI.java index db7c0304b..dd8f68762 100644 --- a/base/java-tools/src/com/netscape/cmstools/user/UserCertFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/user/UserCertFindCLI.java @@ -82,11 +82,10 @@ public class UserCertFindCLI extends CLI { UserCertCollection response = userCertCLI.userClient.findUserCerts(userID, start, size); - Collection<UserCertData> entries = response.getEntries(); - - MainCLI.printMessage(response.getTotal() + " user cert(s) matched"); + MainCLI.printMessage(response.getTotal() + " entries matched"); if (response.getTotal() == 0) return; + Collection<UserCertData> entries = response.getEntries(); boolean first = true; for (UserCertData userCertData : entries) { diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java index ed49d1c65..6142a3712 100644 --- a/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java @@ -76,11 +76,10 @@ public class UserFindCLI extends CLI { UserCollection response = userCLI.userClient.findUsers(filter, start, size); - Collection<UserData> entries = response.getEntries(); - - MainCLI.printMessage(response.getTotal() + " user(s) matched"); + MainCLI.printMessage(response.getTotal() + " entries matched"); if (response.getTotal() == 0) return; + Collection<UserData> entries = response.getEntries(); boolean first = true; for (UserData userData : entries) { diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserMembershipFindCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserMembershipFindCLI.java index 66b8f36bb..33ea72d21 100644 --- a/base/java-tools/src/com/netscape/cmstools/user/UserMembershipFindCLI.java +++ b/base/java-tools/src/com/netscape/cmstools/user/UserMembershipFindCLI.java @@ -82,11 +82,10 @@ public class UserMembershipFindCLI extends CLI { UserMembershipCollection response = userMembershipCLI.userClient.findUserMemberships(userID, start, size); - Collection<UserMembershipData> entries = response.getEntries(); - - MainCLI.printMessage(response.getTotal() + " membership(s) matched"); + MainCLI.printMessage(response.getTotal() + " entries matched"); if (response.getTotal() == 0) return; + Collection<UserMembershipData> entries = response.getEntries(); boolean first = true; for (UserMembershipData userMembershipData : entries) { diff --git a/base/server/cms/src/com/netscape/cms/servlet/cert/CertRequestDAO.java b/base/server/cms/src/com/netscape/cms/servlet/cert/CertRequestDAO.java index 70433339f..c94ee1496 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/cert/CertRequestDAO.java +++ b/base/server/cms/src/com/netscape/cms/servlet/cert/CertRequestDAO.java @@ -93,14 +93,16 @@ public class CertRequestDAO extends CMSRequestDAO { CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); - Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getRequests(); + ret.setTotal(cmsInfos.getTotal()); + + Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getEntries(); // We absolutely know 100% that this list is a list // of CertRequestInfo objects. This is because the method // createCMSRequestInfo. Is the only one adding to it List<CertRequestInfo> list = (List<CertRequestInfo>) cmsList; - ret.setRequests(list); + ret.setEntries(list); ret.setLinks(cmsInfos.getLinks()); @@ -179,9 +181,11 @@ public class CertRequestDAO extends CMSRequestDAO { IRequest reqs[] = (IRequest[]) results.get(CAProcessor.ARG_REQUESTS); for (IRequest req : reqs) { CertRequestInfo info = CertRequestInfoFactory.create(req, uriInfo); - ret.addRequest(info); + ret.addEntry(info); } + ret.setTotal(ret.getEntries().size()); + // TODO - what happens if the errorCode is internal error ? return ret; diff --git a/base/server/cms/src/com/netscape/cms/servlet/cert/CertService.java b/base/server/cms/src/com/netscape/cms/servlet/cert/CertService.java index 483ae139c..1b4954822 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/cert/CertService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/cert/CertService.java @@ -103,6 +103,8 @@ public class CertService extends PKIService implements CertResource { ICertificateRepository repo; Random random; + public static final int DEFAULT_MAXTIME = 0; + public static final int DEFAULT_MAXRESULTS = 20; public final static int DEFAULT_SIZE = 20; public CertService() { @@ -387,36 +389,74 @@ public class CertService extends PKIService implements CertResource { } @Override - public CertDataInfos listCerts(String status, int maxResults, int maxTime) { - // get ldap filter + public CertDataInfos listCerts(String status, Integer maxResults, Integer maxTime, Integer start, Integer size) { + + maxResults = maxResults == null ? DEFAULT_MAXRESULTS : maxResults; + maxTime = maxTime == null ? DEFAULT_MAXTIME : maxTime; + start = start == null ? 0 : start; + size = size == null ? DEFAULT_SIZE : size; + String filter = createSearchFilter(status); - CMS.debug("listKeys: filter is " + filter); + CMS.debug("listCerts: filter is " + filter); - CertDataInfos infos; + CertDataInfos infos = new CertDataInfos(); try { - infos = getCertList(filter, maxResults, maxTime); + Enumeration<ICertRecord> e = repo.searchCertificates(filter, maxResults, maxTime); + if (e == null) { + throw new EBaseException("search results are null"); + } + + // store non-null results in a list + List<CertDataInfo> results = new ArrayList<CertDataInfo>(); + while (e.hasMoreElements()) { + ICertRecord rec = e.nextElement(); + if (rec == null) continue; + results.add(createCertDataInfo(rec)); + } + + int total = results.size(); + infos.setTotal(total); + + // return entries in the requested page + for (int i = start; i < start + size && i < total ; i++) { + infos.addEntry(results.get(i)); + } + + if (start > 0) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start - size, 0)).build(); + infos.addLink(new Link("prev", uri)); + } + + if (start + size < total) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build(); + infos.addLink(new Link("next", uri)); + } + } catch (Exception e) { e.printStackTrace(); - throw new PKIException("Error listing certs in CertsResourceService.listCerts!", e); + throw new PKIException("Error listing certs in CertService.listCerts!", e); } + return infos; } @Override public CertDataInfos searchCerts(CertSearchRequest data, Integer start, Integer size) { + if (data == null) { throw new BadRequestException("Search request is null."); } + start = start == null ? 0 : start; size = size == null ? DEFAULT_SIZE : size; String filter = createSearchFilter(data); CertDataInfos infos = new CertDataInfos(); - - Enumeration<ICertRecord> e = null; try { - - e = repo.findCertRecords(filter); + Enumeration<ICertRecord> e = repo.findCertRecords(filter); + if (e == null) { + throw new EBaseException("search results are null"); + } int i = 0; @@ -427,13 +467,15 @@ public class CertService extends PKIService implements CertResource { // return entries up to the page size for (; i < start + size && e.hasMoreElements(); i++) { ICertRecord user = e.nextElement(); - infos.addCertData(createCertDataInfo(user)); + infos.addEntry(createCertDataInfo(user)); } // count the total entries for (; e.hasMoreElements(); i++) e.nextElement(); + infos.setTotal(i); + if (start > 0) { URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start - size, 0)).build(); infos.addLink(new Link("prev", uri)); @@ -443,48 +485,14 @@ public class CertService extends PKIService implements CertResource { URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build(); infos.addLink(new Link("next", uri)); } + } catch (Exception e1) { - throw new PKIException("Error listing certs in CertsResourceService.listCerts!", e1); + throw new PKIException("Error searching certs in CertService.searchCerts!", e1); } return infos; } - /** - * Returns list of certs meeting specified search filter. - * Currently, vlv searches are not used for certs. - * - * @param filter - * @param maxResults - * @param maxTime - * @param uriInfo - * @return - * @throws EBaseException - * @throws InvalidKeyException - */ - private CertDataInfos getCertList(String filter, int maxResults, int maxTime) - throws EBaseException, InvalidKeyException { - List<CertDataInfo> list = new ArrayList<CertDataInfo>(); - Enumeration<ICertRecord> e = null; - - e = repo.searchCertificates(filter, maxResults, maxTime); - if (e == null) { - throw new EBaseException("search results are null"); - } - - while (e.hasMoreElements()) { - ICertRecord rec = e.nextElement(); - if (rec != null) { - list.add(createCertDataInfo(rec)); - } - } - - CertDataInfos ret = new CertDataInfos(); - ret.setCertInfos(list); - - return ret; - } - public CertData getCert(CertRetrievalRequest data, boolean generateNonce) throws EBaseException, CertificateEncodingException { CertId certId = data.getCertId(); diff --git a/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java b/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java index bef0455a9..49cd4515d 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java +++ b/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java @@ -88,14 +88,16 @@ public class KeyRequestDAO extends CMSRequestDAO { CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); - Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getRequests(); + ret.setTotal(cmsInfos.getTotal()); + + Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getEntries(); // We absolutely know 100% that this list is a list // of KeyRequestInfo objects. This is because the method // createCMSRequestInfo. Is the only one adding to it List<KeyRequestInfo> list = (List<KeyRequestInfo>) cmsList; - ret.setRequests(list); + ret.setEntries(list); ret.setLinks(cmsInfos.getLinks()); diff --git a/base/server/cms/src/com/netscape/cms/servlet/key/KeyService.java b/base/server/cms/src/com/netscape/cms/servlet/key/KeyService.java index 90bc61d2d..27cc909e5 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/key/KeyService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/key/KeyService.java @@ -20,8 +20,11 @@ package com.netscape.cms.servlet.key; import java.math.BigInteger; +import java.net.URI; +import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Path; @@ -32,6 +35,8 @@ import javax.ws.rs.core.Request; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; +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; @@ -74,15 +79,16 @@ public class KeyService extends PKIService implements KeyResource { @Context private HttpServletRequest servletRequest; - private IKeyRepository repo; - private IKeyRecoveryAuthority kra; - private IRequestQueue queue; - private final static String LOGGING_SIGNED_AUDIT_SECURITY_DATA_RETRIEVE_KEY = "LOGGING_SIGNED_AUDIT_SECURITY_DATA_RETRIEVE_KEY_5"; public static final int DEFAULT_MAXRESULTS = 100; public static final int DEFAULT_MAXTIME = 10; + public final static int DEFAULT_SIZE = 20; + + private IKeyRepository repo; + private IKeyRecoveryAuthority kra; + private IRequestQueue queue; public KeyService() { kra = ( IKeyRecoveryAuthority ) CMS.getSubsystem( "kra" ); @@ -288,8 +294,11 @@ public class KeyService extends PKIService implements KeyResource { * Used to generate list of key infos based on the search parameters */ @Override - public KeyDataInfos listKeys(String clientID, String status, Integer maxResults, Integer maxTime) { - // auth and authz + public KeyDataInfos listKeys(String clientID, String status, Integer maxResults, Integer maxTime, + Integer start, Integer size) { + + start = start == null ? 0 : start; + size = size == null ? DEFAULT_SIZE : size; // get ldap filter String filter = createSearchFilter(status, clientID); @@ -300,24 +309,42 @@ public class KeyService extends PKIService implements KeyResource { KeyDataInfos infos = new KeyDataInfos(); try { - Enumeration<IKeyRecord> e = null; - - e = repo.searchKeys(filter, maxResults, maxTime); + Enumeration<IKeyRecord> e = repo.searchKeys(filter, maxResults, maxTime); if (e == null) { return infos; } + // store non-null results in a list + List<KeyDataInfo> results = new ArrayList<KeyDataInfo>(); while (e.hasMoreElements()) { IKeyRecord rec = e.nextElement(); - if (rec != null) { - infos.addKeyInfo(createKeyDataInfo(rec)); - } + if (rec == null) continue; + results.add(createKeyDataInfo(rec)); + } + + int total = results.size(); + infos.setTotal(total); + + // return entries in the requested page + for (int i = start; i < start + size && i < total; i++) { + infos.addEntry(results.get(i)); + } + + if (start > 0) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build(); + infos.addLink(new Link("prev", uri)); + } + + if (start + size < total) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build(); + infos.addLink(new Link("next", uri)); } } catch (EBaseException e) { e.printStackTrace(); throw new PKIException(e.getMessage()); } + return infos; } diff --git a/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java b/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java index 1ee810769..02840451c 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java @@ -96,6 +96,8 @@ public class ProfileService extends PKIService implements ProfileResource { @Context private HttpServletRequest servletRequest; + public final static int DEFAULT_SIZE = 20; + private IProfileSubsystem ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); private IPluginRegistry registry = (IPluginRegistry) CMS.getSubsystem(CMS.SUBSYSTEM_REGISTRY); private IConfigStore cs = CMS.getConfigStore().getSubStore("profile"); @@ -106,8 +108,11 @@ public class ProfileService extends PKIService implements ProfileResource { "LOGGING_SIGNED_AUDIT_CONFIG_CERT_PROFILE_3"; @Override - public ProfileDataInfos listProfiles() { - List<ProfileDataInfo> list = new ArrayList<ProfileDataInfo>(); + public ProfileDataInfos listProfiles(Integer start, Integer size) { + + start = start == null ? 0 : start; + size = size == null ? DEFAULT_SIZE : size; + ProfileDataInfos infos = new ProfileDataInfos(); boolean visibleOnly = true; @@ -122,24 +127,41 @@ public class ProfileService extends PKIService implements ProfileResource { principal.hasRole("Certificate Manager Administrators"))) { visibleOnly = false; } - Enumeration<String> profileIds = ps.getProfileIds(); - if (profileIds != null) { - while (profileIds.hasMoreElements()) { - String id = profileIds.nextElement(); - ProfileDataInfo info = null; - try { - info = createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers)); - } catch (EBaseException e) { - continue; - } - if (info != null) { - list.add(info); - } + Enumeration<String> e = ps.getProfileIds(); + if (e == null) return infos; + + // store non-null results in a list + List<ProfileDataInfo> results = new ArrayList<ProfileDataInfo>(); + while (e.hasMoreElements()) { + try { + String id = e.nextElement(); + ProfileDataInfo info = createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers)); + if (info == null) continue; + results.add(info); + } catch (EBaseException ex) { + continue; } } - infos.setProfileInfos(list); + int total = results.size(); + infos.setTotal(total); + + // return entries in the requested page + for (int i = start; i < start + size && i < total; i++) { + infos.addEntry(results.get(i)); + } + + if (start > 0) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build(); + infos.addLink(new Link("prev", uri)); + } + + if (start + size < total) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build(); + infos.addLink(new Link("next", uri)); + } + return infos; } diff --git a/base/server/cms/src/com/netscape/cms/servlet/request/CMSRequestDAO.java b/base/server/cms/src/com/netscape/cms/servlet/request/CMSRequestDAO.java index e54f8a4c6..931ade159 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/request/CMSRequestDAO.java +++ b/base/server/cms/src/com/netscape/cms/servlet/request/CMSRequestDAO.java @@ -23,10 +23,11 @@ import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; +import org.jboss.resteasy.plugins.providers.atom.Link; + import com.netscape.certsrv.apps.CMS; import com.netscape.certsrv.authority.IAuthority; import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.base.Link; import com.netscape.certsrv.request.CMSRequestInfo; import com.netscape.certsrv.request.CMSRequestInfos; import com.netscape.certsrv.request.IRequest; @@ -91,6 +92,7 @@ public abstract class CMSRequestDAO { IRequestVirtualList vlvlist = queue.getPagedRequestsByFilter(start, false, filter, pageSize + 1, "requestId"); totalSize = vlvlist.getSize(); + ret.setTotal(totalSize); current = vlvlist.getCurrentIndex(); int numRecords = (totalSize > (current + pageSize)) ? pageSize : @@ -98,7 +100,7 @@ public abstract class CMSRequestDAO { for (int i = 0; i < numRecords; i++) { IRequest request = vlvlist.getElementAt(i); - ret.addRequest(createCMSRequestInfo(request, uriInfo)); + ret.addEntry(createCMSRequestInfo(request, uriInfo)); } } else { // The non-vlv requests are indexed, but are not paginated. @@ -113,9 +115,10 @@ public abstract class CMSRequestDAO { RequestId rid = requests.nextElement(); IRequest request = queue.findRequest(rid); if (request != null) { - ret.addRequest(createCMSRequestInfo(request, uriInfo)); + ret.addEntry(createCMSRequestInfo(request, uriInfo)); } } + ret.setTotal(ret.getEntries().size()); } // builder for vlv links diff --git a/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java b/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java index 56da823d2..cd3ffee5a 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/request/CertRequestService.java @@ -18,6 +18,7 @@ package com.netscape.cms.servlet.request; +import java.net.URI; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; @@ -30,6 +31,8 @@ import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Request; import javax.ws.rs.core.UriInfo; +import org.jboss.resteasy.plugins.providers.atom.Link; + import com.netscape.certsrv.apps.CMS; import com.netscape.certsrv.authentication.EAuthException; import com.netscape.certsrv.authorization.EAuthzException; @@ -119,13 +122,15 @@ public class CertRequestService extends PKIService implements CertRequestResourc @Override public CertRequestInfos enrollCert(CertEnrollmentRequest data) { - CertRequestInfos infos; + if (data == null) { CMS.debug("enrollCert: data is null"); throw new BadRequestException("Unable to create enrollment reequest: Invalid input data"); } + CertRequestDAO dao = new CertRequestDAO(); + CertRequestInfos infos; try { infos = dao.submitRequest(data, servletRequest, uriInfo, getLocale(headers)); } catch (EAuthException e) { @@ -354,35 +359,54 @@ public class CertRequestService extends PKIService implements CertRequestResourc } @Override - public ProfileDataInfos listEnrollmentTemplates() { + public ProfileDataInfos listEnrollmentTemplates(Integer start, Integer size) { + + start = start == null ? DEFAULT_START : start; + size = size == null ? DEFAULT_PAGESIZE : size; + IProfileSubsystem ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); - List<ProfileDataInfo> list = new ArrayList<ProfileDataInfo>(); - ProfileDataInfos infos = new ProfileDataInfos(); - boolean visibleOnly = true; if (ps == null) { - return null; + throw new PKIException("Profile subsystem unavailable."); } - Enumeration<String> profileIds = ps.getProfileIds(); - if (profileIds != null) { - while (profileIds.hasMoreElements()) { - String id = profileIds.nextElement(); - ProfileDataInfo info = null; - try { - info = ProfileService.createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers)); - } catch (EBaseException e) { - continue; - } + ProfileDataInfos infos = new ProfileDataInfos(); + boolean visibleOnly = true; - if (info != null) { - list.add(info); - } + Enumeration<String> e = ps.getProfileIds(); + if (e == null) return infos; + + // store non-null results in a list + List<ProfileDataInfo> results = new ArrayList<ProfileDataInfo>(); + while (e.hasMoreElements()) { + try { + String id = e.nextElement(); + ProfileDataInfo info = ProfileService.createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers)); + if (info == null) continue; + results.add(info); + } catch (EBaseException ex) { + continue; } } - infos.setProfileInfos(list); + int total = results.size(); + infos.setTotal(total); + + // return entries in the requested page + for (int i = start; i < start + size && i < total; i++) { + infos.addEntry(results.get(i)); + } + + if (start > 0) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build(); + infos.addLink(new Link("prev", uri)); + } + + if (start + size < total) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build(); + infos.addLink(new Link("next", uri)); + } + return infos; } - } |