java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java | 41 +++++++++-
java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java | 32 +++++++
2 files changed, 69 insertions(+), 4 deletions(-)
New commits:
commit 3858b5b578f513f13315f75ad60ffc7a341a857b
Author: Joshua Roys <joshua.roys(a)gtri.gatech.edu>
Date: Tue Mar 9 19:41:17 2010 +0000
Add an API function: errata.listUnpublishedErrata
This will list unpublished errata for the logged-in user's org.
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
index a58aa36..98fc044 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java
@@ -537,7 +537,46 @@ public class ErrataHandler extends BaseHandler {
return ErrataManager.applicableChannels(errata.getId(),
loggedInUser.getOrg().getId(), null, Map.class).toArray();
}
-
+
+ /**
+ * Returns a list of unpublished errata for the logged-in user's Org.
+ * @param sessionKey The sessionKey for the logged in user
+ * @return Returns an array of errata
+ *
+ * @xmlrpc.doc Returns a list of unpublished errata
+ * @xmlrpc.param #session_key()
+ * @xmlrpc.returntype
+ * #array()
+ * #struct()
+ * #prop("int", "id")
+ * #prop("int", "published")
+ * #prop("string", "advisory")
+ * #prop("string", "advisory_name")
+ * #prop("string", "advisory_type")
+ * #prop("string", "synopsis")
+ * #prop("dateTime.iso8601", "created")
+ * #prop("dateTime.iso8601", "update_date")
+ * #struct_end()
+ * #array_end()
+ */
+ public Object[] listUnpublishedErrata(String sessionKey) {
+ User loggedInUser = getLoggedInUser(sessionKey);
+ Map[] unpub = (Map[])ErrataManager.unpublishedOwnedErrata(loggedInUser,
Map.class)
+ .toArray(new Map[0]);
+
+ for (Map errataItem : unpub) {
+ // remove items that can be NULL to prevent xmlrpc failure
+ Iterator<Map.Entry> itr = errataItem.entrySet().iterator();
+ for (; itr.hasNext();) {
+ if (itr.next().getValue() == null) {
+ itr.remove();
+ }
+ }
+ }
+
+ return unpub;
+ }
+
/**
* Returns a list of CVEs for a given erratum
* @param sessionKey The sessionKey for the logged in user
diff --git a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
index f2411f3..a7ebfde 100644
--- a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
+++ b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java
@@ -415,7 +415,17 @@ public class ErrataManager extends BaseManager {
* @return all of the errata.
*/
public static DataResult unpublishedOwnedErrata(User user) {
- return ownedErrata(user, "unpublished_owned_errata");
+ return unpublishedOwnedErrata(user, null);
+ }
+
+ /**
+ * Returns all of the unpublished errata.
+ * @param user Currently logged in user.
+ * @param clazz The class you would like the return values represented as
+ * @return all of the errata.
+ */
+ public static DataResult unpublishedOwnedErrata(User user, Class clazz) {
+ return ownedErrata(user, "unpublished_owned_errata", clazz);
}
/**
@@ -476,7 +486,6 @@ public class ErrataManager extends BaseManager {
return dr;
}
-
/**
* Helper method to get the unpublished/published errata
* @param user Currently logged in user
@@ -484,7 +493,24 @@ public class ErrataManager extends BaseManager {
* @return all of the errata
*/
private static DataResult ownedErrata(User user, String mode) {
- SelectMode m = ModeFactory.getMode("Errata_queries", mode);
+ return ownedErrata(user, mode, null);
+ }
+
+ /**
+ * Helper method to get the unpublished/published errata
+ * @param user Currently logged in user
+ * @param mode Tells which mode (published/unpublished) we need to run
+ * @param clazz The class you would like the return values represented as
+ * @return all of the errata
+ */
+ private static DataResult ownedErrata(User user, String mode, Class clazz) {
+ SelectMode m;
+ if (clazz == null) {
+ m = ModeFactory.getMode("Errata_queries", mode);
+ }
+ else {
+ m = ModeFactory.getMode("Errata_queries", mode, clazz);
+ }
Map params = new HashMap();
params.put("org_id", user.getOrg().getId());
return makeDataResult(params, new HashMap(), null, m);
Show replies by date