java/code/src/com/redhat/rhn/domain/server/CrashFactory.java | 2
java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml | 3
java/code/src/com/redhat/rhn/frontend/xmlrpc/NoSuchCrashException.java | 35 ++++
java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java | 36 ++---
java/code/src/com/redhat/rhn/manager/system/CrashManager.java | 71
++++++++++
5 files changed, 130 insertions(+), 17 deletions(-)
New commits:
commit 15c773cb25f1736f86f541451827fca83663d23e
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Sun Feb 24 14:28:20 2013 +0100
abrt: deleteCrash xml-rpc api call
diff --git a/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java
b/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java
index e8a3522..ae211bf 100644
--- a/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java
@@ -57,6 +57,6 @@ public class CrashFactory extends HibernateFactory {
* @param crash Crash to delete.
*/
public static void delete(Crash crash) {
- // FIXME
+ singleton.removeObject(crash);
}
}
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
index f9ef85a..fe8474d 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
@@ -6892,6 +6892,9 @@ Follow this url to see the full list of inactive systems:
<trans-unit id="api.system.crash.nocrashesfound">
<source>No crashes recorded for the specified system.</source>
</trans-unit>
+ <trans-unit id="api.system.crash.nosuchcrash">
+ <source>No such crash found.</source>
+ </trans-unit>
<trans-unit id="api.errata.invalidadvisorytype">
<source>Invalid errata type, "{0}". Please use one of the
following: "Security Advisory", "Product Enhancement Advisory", or
"Bug Fix Advisory".</source>
</trans-unit>
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/NoSuchCrashException.java
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/NoSuchCrashException.java
new file mode 100644
index 0000000..155a6f7
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/NoSuchCrashException.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2013 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ *
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+
+package com.redhat.rhn.frontend.xmlrpc;
+
+import com.redhat.rhn.FaultException;
+import com.redhat.rhn.common.localization.LocalizationService;
+
+/**
+ * No Such Crash Exception
+ *
+ * @version $Rev$
+ */
+public class NoSuchCrashException extends FaultException {
+
+ /**
+ * NoSuchCrashException
+ */
+ public NoSuchCrashException() {
+ super(1071, "No Such Crash Found" , LocalizationService.getInstance().
+ getMessage("api.system.crash.nosuchcrash", new Object [] {}));
+ }
+}
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java
index 2391111..b794eb5 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java
@@ -15,7 +15,6 @@
package com.redhat.rhn.frontend.xmlrpc.system.crash;
-import com.redhat.rhn.common.hibernate.LookupException;
import com.redhat.rhn.domain.rhnpackage.PackageArch;
import com.redhat.rhn.domain.rhnpackage.PackageEvr;
import com.redhat.rhn.domain.rhnpackage.PackageEvrFactory;
@@ -23,15 +22,13 @@ import com.redhat.rhn.domain.rhnpackage.PackageFactory;
import com.redhat.rhn.domain.rhnpackage.PackageName;
import com.redhat.rhn.domain.server.Crash;
import com.redhat.rhn.domain.server.CrashCount;
-import com.redhat.rhn.domain.server.CrashFactory;
import com.redhat.rhn.domain.server.CrashFile;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
import com.redhat.rhn.frontend.xmlrpc.NoCrashesFoundException;
-import com.redhat.rhn.frontend.xmlrpc.NoSuchSystemException;
import com.redhat.rhn.frontend.xmlrpc.system.XmlRpcSystemHelper;
-import com.redhat.rhn.manager.system.SystemManager;
+import com.redhat.rhn.manager.system.CrashManager;
import org.apache.log4j.Logger;
@@ -222,18 +219,8 @@ public class CrashHandler extends BaseHandler {
*/
public List listSystemCrashFiles(String sessionKey, Integer crashId) {
User loggedInUser = getLoggedInUser(sessionKey);
-
- Crash crash = CrashFactory.lookupById(new Long(crashId.longValue()));
- Long serverId = crash.getServer().getId();
-
- Server server = null;
- try {
- server = SystemManager.lookupByIdAndUser(new Long(serverId.longValue()),
- loggedInUser);
- }
- catch (LookupException e) {
- throw new NoSuchSystemException();
- }
+ Crash crash = CrashManager.lookupCrashByUserAndId(loggedInUser,
+ new Long(crashId.longValue()));
List returnList = new ArrayList();
@@ -250,4 +237,21 @@ public class CrashHandler extends BaseHandler {
return returnList;
}
+
+ /**
+ * Delete a crash with given crash id.
+ * @param sessionKey Session key
+ * @param crashId Crash ID
+ * @return 1 In case of success, exception otherwise.
+ *
+ * @xmlrpc.doc Delete a crash with given crash id.
+ * @xmlrpc.param @param("string", "sessionKey")
+ * @xmlrpc.param #param("int", "crashId")
+ * @xmlrpc.returntype #return_int_success()
+ */
+ public Integer deleteCrash(String sessionKey, Integer crashId) {
+ User loggedInUser = getLoggedInUser(sessionKey);
+ CrashManager.deleteCrash(loggedInUser, new Long(crashId.longValue()));
+ return 1;
+ }
}
diff --git a/java/code/src/com/redhat/rhn/manager/system/CrashManager.java
b/java/code/src/com/redhat/rhn/manager/system/CrashManager.java
new file mode 100644
index 0000000..c63aaeb
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/manager/system/CrashManager.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2013 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ *
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+
+package com.redhat.rhn.manager.system;
+
+import com.redhat.rhn.common.hibernate.LookupException;
+import com.redhat.rhn.domain.server.Crash;
+import com.redhat.rhn.domain.server.CrashFactory;
+import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.xmlrpc.NoSuchCrashException;
+import com.redhat.rhn.frontend.xmlrpc.NoSuchSystemException;
+import com.redhat.rhn.manager.BaseManager;
+
+import org.apache.log4j.Logger;
+
+/**
+ * CrashManager
+ * @version $Rev$
+ */
+public class CrashManager extends BaseManager {
+
+ private static Logger log = Logger.getLogger(CrashManager.class);
+
+ /**
+ * Lookup Crash by its ID and User.
+ * @param user User to check the permissions for.
+ * @param crashId ID of the crash to search for.
+ * @return The crash for given ID.
+ */
+ public static Crash lookupCrashByUserAndId(User user, Long crashId) {
+ Crash crash = CrashFactory.lookupById(crashId);
+ if (crash == null) {
+ throw new NoSuchCrashException();
+ }
+
+ Long serverId = crash.getServer().getId();
+
+ Server server = null;
+ try {
+ server = SystemManager.lookupByIdAndUser(new Long(serverId.longValue()),
user);
+ }
+ catch (LookupException e) {
+ throw new NoSuchSystemException();
+ }
+
+ return crash;
+ }
+
+ /**
+ * Delete a crash
+ * @param user User to check the permissions for.
+ * @param crashId The id of the crash to delete.
+ */
+ public static void deleteCrash(User user, Long crashId) {
+ Crash crash = lookupCrashByUserAndId(user, crashId);
+ CrashFactory.delete(crash);
+ }
+}