diff options
author | awnuk <awnuk@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-12-21 07:42:50 +0000 |
---|---|---|
committer | awnuk <awnuk@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-12-21 07:42:50 +0000 |
commit | 5a467a1aa4e26db85e25a35275c5dfd0d320d7b2 (patch) | |
tree | b0d2c21179fd12ed3bfc2da154b03e201c39a25a /pki/base/common/src/com/netscape/cmscore | |
parent | 9a945471f8dcf20441f18ae28b610f52905e51c5 (diff) | |
download | pki-5a467a1aa4e26db85e25a35275c5dfd0d320d7b2.tar.gz pki-5a467a1aa4e26db85e25a35275c5dfd0d320d7b2.tar.xz pki-5a467a1aa4e26db85e25a35275c5dfd0d320d7b2.zip |
Fixed bugzilla bug #649343.
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@1659 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/base/common/src/com/netscape/cmscore')
6 files changed, 98 insertions, 8 deletions
diff --git a/pki/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java b/pki/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java index 84744af36..797dd8324 100644 --- a/pki/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java +++ b/pki/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java @@ -792,10 +792,15 @@ public class DBSubsystem implements IDBSubsystem { reg.registerObjectClass( RepositoryRecord.class.getName(), repRecordOC); } - if (!reg.isAttributeRegistered(RepositoryRecord.ATTR_SERIALNO)) { - reg.registerAttribute(RepositoryRecord.ATTR_SERIALNO, + if (!reg.isAttributeRegistered(IRepositoryRecord.ATTR_SERIALNO)) { + reg.registerAttribute(IRepositoryRecord.ATTR_SERIALNO, new BigIntegerMapper(RepositorySchema.LDAP_ATTR_SERIALNO)); } + if (!reg.isAttributeRegistered(IRepositoryRecord.ATTR_PUB_STATUS)) { + reg.registerAttribute(IRepositoryRecord.ATTR_PUB_STATUS, + new StringMapper(RepositorySchema.LDAP_ATTR_PUB_STATUS)); + } + } catch (EBaseException e) { if (CMS.isPreOpMode()) return; diff --git a/pki/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java b/pki/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java index e177f8d2e..7aa63fa1d 100644 --- a/pki/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java +++ b/pki/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java @@ -39,13 +39,13 @@ import com.netscape.certsrv.dbs.repository.*; */ public class RepositoryRecord implements IRepositoryRecord { - public final static String ATTR_SERIALNO = "serialNo"; - private BigInteger mSerialNo = null; + private String mPublishingStatus = null; protected static Vector mNames = new Vector(); static { - mNames.addElement(ATTR_SERIALNO); + mNames.addElement(IRepositoryRecord.ATTR_SERIALNO); + mNames.addElement(IRepositoryRecord.ATTR_PUB_STATUS); } /** @@ -59,8 +59,10 @@ public class RepositoryRecord implements IRepositoryRecord { * Sets attribute. */ public void set(String name, Object obj) throws EBaseException { - if (name.equalsIgnoreCase(ATTR_SERIALNO)) { + if (name.equalsIgnoreCase(IRepositoryRecord.ATTR_SERIALNO)) { mSerialNo = (BigInteger) obj; + } else if (name.equalsIgnoreCase(IRepositoryRecord.ATTR_PUB_STATUS)) { + mPublishingStatus = (String) obj; } else { throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_ATTRIBUTE", name)); } @@ -70,8 +72,10 @@ public class RepositoryRecord implements IRepositoryRecord { * Retrieves attribute from this record. */ public Object get(String name) throws EBaseException { - if (name.equalsIgnoreCase(ATTR_SERIALNO)) { + if (name.equalsIgnoreCase(IRepositoryRecord.ATTR_SERIALNO)) { return mSerialNo; + } else if (name.equalsIgnoreCase(IRepositoryRecord.ATTR_PUB_STATUS)) { + return mPublishingStatus; } else { throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_ATTRIBUTE", name)); } @@ -101,4 +105,8 @@ public class RepositoryRecord implements IRepositoryRecord { public BigInteger getSerialNumber() { return mSerialNo; } + + public String getPublishingStatus() { + return mPublishingStatus; + } } diff --git a/pki/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java b/pki/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java index 70bb7d4be..436c8633e 100644 --- a/pki/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java +++ b/pki/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java @@ -40,4 +40,5 @@ public class RepositorySchema { public static final String LDAP_OC_TOP = "top"; public static final String LDAP_OC_REPOSITORY = "repository"; public static final String LDAP_ATTR_SERIALNO = "serialno"; + public static final String LDAP_ATTR_PUB_STATUS = "publishingStatus"; } diff --git a/pki/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java b/pki/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java index 3ae3380e5..7d7b8e9b5 100644 --- a/pki/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java +++ b/pki/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java @@ -418,6 +418,7 @@ public class PublisherProcessor implements int publishingQueuePriorityLevel = queueConfig.getInteger("priorityLevel", 0); int maxNumberOfPublishingThreads = queueConfig.getInteger("maxNumberOfThreads", 1); int publishingQueuePageSize = queueConfig.getInteger("pageSize", 100); + int savePublishingStatus = queueConfig.getInteger("saveStatus", 0); CMS.debug("PublisherProcessor: startup: Publishing Queue Enabled: " + isPublishingQueueEnabled + " Priority Level: " + publishingQueuePriorityLevel + " Maximum Number of Threads: " + maxNumberOfPublishingThreads + @@ -426,7 +427,8 @@ public class PublisherProcessor implements reqNotifier.setPublishingQueue (isPublishingQueueEnabled, publishingQueuePriorityLevel, maxNumberOfPublishingThreads, - publishingQueuePageSize); + publishingQueuePageSize, + savePublishingStatus); } } } diff --git a/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java b/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java index ff9ceb4f6..f390d436d 100644 --- a/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java +++ b/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java @@ -602,6 +602,14 @@ public class RequestQueue return (IRepository) mRepository; } + public String getPublishingStatus() { + return mRepository.getPublishingStatus(); + } + + public void setPublishingStatus(String status) { + mRepository.setPublishingStatus(status); + } + protected String mBaseDN; protected IDBSubsystem mDB; protected RequestRepository mRepository; diff --git a/pki/base/common/src/com/netscape/cmscore/request/RequestRepository.java b/pki/base/common/src/com/netscape/cmscore/request/RequestRepository.java index db77f41ac..c6ab7129e 100644 --- a/pki/base/common/src/com/netscape/cmscore/request/RequestRepository.java +++ b/pki/base/common/src/com/netscape/cmscore/request/RequestRepository.java @@ -23,6 +23,7 @@ import java.math.*; import com.netscape.certsrv.dbs.EDBException; import com.netscape.certsrv.dbs.IDBSubsystem; import com.netscape.certsrv.dbs.*; +import com.netscape.certsrv.dbs.repository.*; import com.netscape.certsrv.request.*; import com.netscape.certsrv.base.*; import com.netscape.certsrv.apps.*; @@ -145,4 +146,69 @@ class RequestRepository * the LDAP base DN for this repository */ protected String mBaseDN; + + + public String getPublishingStatus() { + RepositoryRecord record = null; + Object obj = null; + IDBSSession dbs = null; + String status = null; + + try { + dbs = mDB.createSession(); + obj = dbs.read(mBaseDN); + } catch (Exception e) { + CMS.debug("RequestRepository: getPublishingStatus: Error: " + e); + CMS.debugStackTrace(); + } finally { + // Close session - ignoring errors (UTIL) + if (dbs != null) { + try { + dbs.close(); + } catch (Exception ex) { + CMS.debug("RequestRepository: getPublishingStatus: Error: " + ex); + } + } + } + + if (obj != null || (obj instanceof RepositoryRecord)) { + record = (RepositoryRecord) obj; + status = record.getPublishingStatus(); + } else { + CMS.debug("RequestRepository: obj is NOT instanceof RepositoryRecord"); + } + CMS.debug("RequestRepository: getPublishingStatus mBaseDN: " + mBaseDN + + " status: " + ((status != null)?status:"null")); + + return status; + } + + public void setPublishingStatus(String status) { + IDBSSession dbs = null; + + CMS.debug("RequestRepository: setPublishingStatus mBaseDN: " + mBaseDN + " status: " + status); + ModificationSet mods = new ModificationSet(); + + if (status != null && status.length() > 0) { + mods.add(IRepositoryRecord.ATTR_PUB_STATUS, + Modification.MOD_REPLACE, status); + + try { + dbs = mDB.createSession(); + dbs.modify(mBaseDN, mods); + } catch (Exception e) { + CMS.debug("RequestRepository: setPublishingStatus: Error: " + e); + CMS.debugStackTrace(); + } finally { + // Close session - ignoring errors (UTIL) + if (dbs != null) { + try { + dbs.close(); + } catch (Exception ex) { + CMS.debug("RequestRepository: setPublishingStatus: Error: " + ex); + } + } + } + } + } } |