summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2013-09-12 14:30:13 -0400
committerEndi S. Dewata <edewata@redhat.com>2013-09-17 14:37:34 -0400
commit848887dd45e69f38edfada28a986e29eec804d54 (patch)
tree54695beeeece5f4f1115caf595b6f3a1e56da252
parent3567f557307606c5f09496469a92f6972f5d5750 (diff)
Connected token database to LDAP.
The TokenDatabase has been reimplemented using LDAPDatabase. The TokenRecord has been modified to specify the object class and attribute mappings. Ticket #652
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/TPSSubsystem.java10
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenDatabase.java51
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenRecord.java21
-rw-r--r--base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenService.java10
4 files changed, 54 insertions, 38 deletions
diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/TPSSubsystem.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/TPSSubsystem.java
index 34edc58f4..853e970c1 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/TPSSubsystem.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/TPSSubsystem.java
@@ -32,9 +32,11 @@ import com.netscape.certsrv.authority.IAuthority;
import com.netscape.certsrv.base.EBaseException;
import com.netscape.certsrv.base.IConfigStore;
import com.netscape.certsrv.base.ISubsystem;
+import com.netscape.certsrv.dbs.IDBSubsystem;
import com.netscape.certsrv.logging.ILogger;
import com.netscape.certsrv.request.IRequestListener;
import com.netscape.certsrv.request.IRequestQueue;
+import com.netscape.cmscore.dbs.DBSubsystem;
/**
* @author Endi S. Dewata <edewata@redhat.com>
@@ -54,7 +56,7 @@ public class TPSSubsystem implements IAuthority, ISubsystem {
public AuthenticatorDatabase authenticatorDatabase = new AuthenticatorDatabase();
public ConnectionDatabase connectionDatabase = new ConnectionDatabase();
public TPSCertDatabase certDatabase = new TPSCertDatabase();
- public TokenDatabase tokenDatabase = new TokenDatabase();
+ public TokenDatabase tokenDatabase;
@Override
public String getId() {
@@ -70,6 +72,12 @@ public class TPSSubsystem implements IAuthority, ISubsystem {
public void init(ISubsystem owner, IConfigStore config) throws EBaseException {
this.owner = owner;
this.config = config;
+
+ IDBSubsystem dbSubsystem = DBSubsystem.getInstance();
+ IConfigStore cs = CMS.getConfigStore();
+
+ String tokenDatabaseDN = cs.getString("tokendb.baseDN");
+ tokenDatabase = new TokenDatabase(dbSubsystem, tokenDatabaseDN);
}
@Override
diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenDatabase.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenDatabase.java
index a4c8e34c5..d16e4fc25 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenDatabase.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenDatabase.java
@@ -20,48 +20,41 @@ package org.dogtagpki.server.tps.token;
import java.util.Date;
-import com.netscape.cmscore.dbs.Database;
+import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.dbs.IDBSubsystem;
+import com.netscape.cmscore.dbs.LDAPDatabase;
/**
- * This class implements in-memory token database. In the future this
- * will be replaced with LDAP database.
- *
* @author Endi S. Dewata
*/
-public class TokenDatabase extends Database<TokenRecord> {
+public class TokenDatabase extends LDAPDatabase<TokenRecord> {
- public TokenDatabase() {
- super("Token");
-
- // add sample records
- try {
- TokenRecord record1 = new TokenRecord();
- record1.setID("token1");
- record1.setUserID("user1");
- record1.setStatus("ENABLED");
- addRecord(record1);
-
- TokenRecord record2 = new TokenRecord();
- record2.setID("token2");
- record2.setUserID("user2");
- record2.setStatus("DISABLED");
- addRecord(record2);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public TokenDatabase(IDBSubsystem dbSubsystem, String baseDN) throws EBaseException {
+ super("Token", dbSubsystem, baseDN, TokenRecord.class);
}
- public void addRecord(TokenRecord tokenRecord) throws Exception {
+ @Override
+ public void addRecord(String id, TokenRecord tokenRecord) throws Exception {
tokenRecord.setStatus("ENABLED");
tokenRecord.setCreateTimestamp(new Date());
- addRecord(tokenRecord.getID(), tokenRecord);
+ super.addRecord(id, tokenRecord);
}
- public void updateRecord(TokenRecord tokenRecord) throws Exception {
+ @Override
+ public void updateRecord(String id, TokenRecord tokenRecord) throws Exception {
tokenRecord.setModifyTimestamp(new Date());
- updateRecord(tokenRecord.getID(), tokenRecord);
+ super.updateRecord(id, tokenRecord);
+ }
+
+ @Override
+ public String createDN(String id) {
+ return "cn=" + id + "," + baseDN;
+ }
+
+ @Override
+ public String createFilter(String filter) {
+ return "(id=*)";
}
}
diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenRecord.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenRecord.java
index ff3af5776..bf0d1b120 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenRecord.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenRecord.java
@@ -20,10 +20,17 @@ package org.dogtagpki.server.tps.token;
import java.util.Date;
+import com.netscape.cmscore.dbs.DBAttribute;
+import com.netscape.cmscore.dbs.DBObjectClasses;
+import com.netscape.cmscore.dbs.DBRecord;
+
/**
* @author Endi S. Dewata
*/
-public class TokenRecord {
+@DBObjectClasses({ "top", "tokenRecord" })
+public class TokenRecord extends DBRecord {
+
+ private static final long serialVersionUID = 1L;
String id;
String userID;
@@ -34,14 +41,16 @@ public class TokenRecord {
Date createTimestamp;
Date modifyTimestamp;
- public String getID() {
+ @DBAttribute("cn")
+ public String getId() {
return id;
}
- public void setID(String id) {
+ public void setId(String id) {
this.id = id;
}
+ @DBAttribute("tokenUserID")
public String getUserID() {
return userID;
}
@@ -50,6 +59,7 @@ public class TokenRecord {
this.userID = userID;
}
+ @DBAttribute("tokenStatus")
public String getStatus() {
return status;
}
@@ -58,6 +68,7 @@ public class TokenRecord {
this.status = status;
}
+ @DBAttribute("tokenReason")
public String getReason() {
return reason;
}
@@ -66,6 +77,7 @@ public class TokenRecord {
this.reason = reason;
}
+ @DBAttribute("tokenAppletID")
public String getAppletID() {
return appletID;
}
@@ -74,6 +86,7 @@ public class TokenRecord {
this.appletID = appletID;
}
+ @DBAttribute("keyInfo")
public String getKeyInfo() {
return keyInfo;
}
@@ -82,6 +95,7 @@ public class TokenRecord {
this.keyInfo = keyInfo;
}
+ @DBAttribute("dateOfCreate")
public Date getCreateTimestamp() {
return createTimestamp;
}
@@ -90,6 +104,7 @@ public class TokenRecord {
this.createTimestamp = createTimestamp;
}
+ @DBAttribute("dateOfModify")
public Date getModifyTimestamp() {
return modifyTimestamp;
}
diff --git a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenService.java b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenService.java
index 3cf3b9e4e..e84e7c5c8 100644
--- a/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenService.java
+++ b/base/tps-tomcat/src/org/dogtagpki/server/tps/token/TokenService.java
@@ -51,7 +51,7 @@ public class TokenService extends PKIService implements TokenResource {
public TokenData createTokenData(TokenRecord tokenRecord) {
TokenData tokenData = new TokenData();
- tokenData.setID(tokenRecord.getID());
+ tokenData.setID(tokenRecord.getId());
tokenData.setUserID(tokenRecord.getUserID());
tokenData.setStatus(tokenRecord.getStatus());
tokenData.setReason(tokenRecord.getReason());
@@ -60,7 +60,7 @@ public class TokenService extends PKIService implements TokenResource {
tokenData.setCreateTimestamp(tokenRecord.getCreateTimestamp());
tokenData.setModifyTimestamp(tokenRecord.getModifyTimestamp());
- String tokenID = tokenRecord.getID();
+ String tokenID = tokenRecord.getId();
try {
tokenID = URLEncoder.encode(tokenID, "UTF-8");
} catch (UnsupportedEncodingException e) {
@@ -77,7 +77,7 @@ public class TokenService extends PKIService implements TokenResource {
public TokenRecord createTokenRecord(TokenData tokenData) {
TokenRecord tokenRecord = new TokenRecord();
- tokenRecord.setID(tokenData.getID());
+ tokenRecord.setId(tokenData.getID());
tokenRecord.setUserID(tokenData.getUserID());
tokenRecord.setStatus(tokenData.getStatus());
tokenRecord.setReason(tokenData.getReason());
@@ -162,7 +162,7 @@ public class TokenService extends PKIService implements TokenResource {
TPSSubsystem subsystem = (TPSSubsystem)CMS.getSubsystem(TPSSubsystem.ID);
TokenDatabase database = subsystem.getTokenDatabase();
- database.addRecord(createTokenRecord(tokenData));
+ database.addRecord(tokenData.getID(), createTokenRecord(tokenData));
tokenData = createTokenData(database.getRecord(tokenData.getID()));
return Response
@@ -188,7 +188,7 @@ public class TokenService extends PKIService implements TokenResource {
TokenRecord tokenRecord = database.getRecord(tokenID);
tokenRecord.setUserID(tokenData.getUserID());
- database.updateRecord(tokenData.getID(), tokenRecord);
+ database.updateRecord(tokenID, tokenRecord);
tokenData = createTokenData(database.getRecord(tokenID));