summaryrefslogtreecommitdiffstats
path: root/base/tps/src
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2016-05-27 03:11:08 +0200
committerEndi S. Dewata <edewata@redhat.com>2016-05-27 18:17:30 +0200
commit7f112797da0238ad97e3006b6cf63907ec42372f (patch)
tree966c8b7a31db7d9ae314680a28811df238519053 /base/tps/src
parent9ff1cb21bee15cb569ad22b75d82b8312ba47061 (diff)
downloadpki-7f112797da0238ad97e3006b6cf63907ec42372f.tar.gz
pki-7f112797da0238ad97e3006b6cf63907ec42372f.tar.xz
pki-7f112797da0238ad97e3006b6cf63907ec42372f.zip
Fixed hard-coded database name for TPS VLV indexes.
The vlv.ldif for TPS has been modified to remove the hard-coded database name and to use customizable parameter instead. The token and activity REST services have been modified to search the database using VLV. The existing database can be fixed using the following procedure: http://pki.fedoraproject.org/wiki/Database_Upgrade_for_PKI_10.3.x#Relocating_VLV_indexes https://fedorahosted.org/pki/ticket/2342
Diffstat (limited to 'base/tps/src')
-rw-r--r--base/tps/src/org/dogtagpki/server/tps/dbs/ActivityDatabase.java2
-rw-r--r--base/tps/src/org/dogtagpki/server/tps/dbs/TokenDatabase.java2
-rw-r--r--base/tps/src/org/dogtagpki/server/tps/rest/ActivityService.java34
-rw-r--r--base/tps/src/org/dogtagpki/server/tps/rest/TokenService.java28
4 files changed, 34 insertions, 32 deletions
diff --git a/base/tps/src/org/dogtagpki/server/tps/dbs/ActivityDatabase.java b/base/tps/src/org/dogtagpki/server/tps/dbs/ActivityDatabase.java
index fdcd4eaff..46ab2128d 100644
--- a/base/tps/src/org/dogtagpki/server/tps/dbs/ActivityDatabase.java
+++ b/base/tps/src/org/dogtagpki/server/tps/dbs/ActivityDatabase.java
@@ -107,7 +107,7 @@ public class ActivityDatabase extends LDAPDatabase<ActivityRecord> {
createFilter(sb, attributes);
if (sb.length() == 0) {
- sb.append("(id=*)");
+ sb.append("(&(tokenID=*)(userID=*))"); // listActivities VLV
}
return sb.toString();
diff --git a/base/tps/src/org/dogtagpki/server/tps/dbs/TokenDatabase.java b/base/tps/src/org/dogtagpki/server/tps/dbs/TokenDatabase.java
index 19f4830b3..f751c66c9 100644
--- a/base/tps/src/org/dogtagpki/server/tps/dbs/TokenDatabase.java
+++ b/base/tps/src/org/dogtagpki/server/tps/dbs/TokenDatabase.java
@@ -67,7 +67,7 @@ public class TokenDatabase extends LDAPDatabase<TokenRecord> {
createFilter(sb, attributes);
if (sb.length() == 0) {
- sb.append("(id=*)");
+ sb.append("(&(id=*)(userID=*))"); // listTokens VLV
}
return sb.toString();
diff --git a/base/tps/src/org/dogtagpki/server/tps/rest/ActivityService.java b/base/tps/src/org/dogtagpki/server/tps/rest/ActivityService.java
index 6002e7a94..5fb3d1956 100644
--- a/base/tps/src/org/dogtagpki/server/tps/rest/ActivityService.java
+++ b/base/tps/src/org/dogtagpki/server/tps/rest/ActivityService.java
@@ -21,7 +21,6 @@ package org.dogtagpki.server.tps.rest;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
-import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
@@ -38,6 +37,7 @@ 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.PKIException;
+import com.netscape.certsrv.dbs.IDBVirtualList;
import com.netscape.certsrv.logging.ActivityCollection;
import com.netscape.certsrv.logging.ActivityData;
import com.netscape.certsrv.logging.ActivityResource;
@@ -121,37 +121,39 @@ public class ActivityService extends PKIService implements ActivityResource {
TPSSubsystem subsystem = (TPSSubsystem)CMS.getSubsystem(TPSSubsystem.ID);
ActivityDatabase database = subsystem.getActivityDatabase();
- Iterator<ActivityRecord> activities = database.findRecords(filter).iterator();
+ IDBVirtualList<ActivityRecord> list = database.findRecords(filter, null, "date", size);
+ int total = list.getSize();
ActivityCollection response = new ActivityCollection();
- int i = 0;
- // skip to the start of the page
- for ( ; i<start && activities.hasNext(); i++) activities.next();
+ // return entries in the requested page
+ for (int i = start; i < start + size && i < total; i++) {
+ ActivityRecord record = list.getElementAt(i);
- // return entries up to the page size
- for ( ; i<start+size && activities.hasNext(); i++) {
- response.addEntry(createActivityData(activities.next()));
+ if (record == null) {
+ CMS.debug("ActivityService: Activity record not found");
+ throw new PKIException("Activity record not found");
+ }
+
+ response.addEntry(createActivityData(record));
}
- // count the total entries
- for ( ; activities.hasNext(); i++) activities.next();
- response.setTotal(i);
+ response.setTotal(total);
if (start > 0) {
- URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build();
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start - size, 0)).build();
response.addLink(new Link("prev", uri));
}
- if (start+size < i) {
- URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build();
+ if (start+size < total) {
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build();
response.addLink(new Link("next", uri));
}
return createOKResponse(response);
} catch (Exception e) {
- e.printStackTrace();
+ CMS.debug(e);
throw new PKIException(e.getMessage());
}
}
@@ -170,7 +172,7 @@ public class ActivityService extends PKIService implements ActivityResource {
return createOKResponse(createActivityData(database.getRecord(activityID)));
} catch (Exception e) {
- e.printStackTrace();
+ CMS.debug(e);
throw new PKIException(e.getMessage());
}
}
diff --git a/base/tps/src/org/dogtagpki/server/tps/rest/TokenService.java b/base/tps/src/org/dogtagpki/server/tps/rest/TokenService.java
index 2104f292b..40022a440 100644
--- a/base/tps/src/org/dogtagpki/server/tps/rest/TokenService.java
+++ b/base/tps/src/org/dogtagpki/server/tps/rest/TokenService.java
@@ -24,7 +24,6 @@ import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import java.util.ResourceBundle;
@@ -46,6 +45,7 @@ import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.BadRequestException;
import com.netscape.certsrv.base.PKIException;
import com.netscape.certsrv.dbs.EDBException;
+import com.netscape.certsrv.dbs.IDBVirtualList;
import com.netscape.certsrv.ldap.LDAPExceptionConverter;
import com.netscape.certsrv.logging.ILogger;
import com.netscape.certsrv.tps.token.TokenCollection;
@@ -259,31 +259,31 @@ public class TokenService extends PKIService implements TokenResource {
TPSSubsystem subsystem = (TPSSubsystem) CMS.getSubsystem(TPSSubsystem.ID);
TokenDatabase database = subsystem.getTokenDatabase();
- Iterator<TokenRecord> tokens = database.findRecords(filter, attributes).iterator();
+ IDBVirtualList<TokenRecord> list = database.findRecords(filter, null, "modifyTimestamp", size);
+ int total = list.getSize();
TokenCollection response = new TokenCollection();
- int i = 0;
-
- // skip to the start of the page
- for (; i < start && tokens.hasNext(); i++)
- tokens.next();
// return entries up to the page size
- for (; i < start + size && tokens.hasNext(); i++) {
- response.addEntry(createTokenData(tokens.next()));
+ for (int i = start; i < start + size && i < total; i++) {
+ TokenRecord record = list.getElementAt(i);
+
+ if (record == null) {
+ CMS.debug("TokenService: Token record not found");
+ throw new PKIException("Token record not found");
+ }
+
+ response.addEntry(createTokenData(record));
}
- // count the total entries
- for (; tokens.hasNext(); i++)
- tokens.next();
- response.setTotal(i);
+ response.setTotal(total);
if (start > 0) {
URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start - size, 0)).build();
response.addLink(new Link("prev", uri));
}
- if (start + size < i) {
+ if (start + size < total) {
URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build();
response.addLink(new Link("next", uri));
}