r1572 - in xwiki/trunk: core/src/main/java/com/xpn/xwiki/store src/test/java/com/xpn/xwiki/test
Ludovic Dubost
ludovic at users.forge.objectweb.org
Wed Nov 15 17:00:37 CET 2006
Author: ludovic
Date: 2006-11-15 17:00:36 +0100 (Wed, 15 Nov 2006)
New Revision: 1572
Modified:
xwiki/trunk/core/src/main/java/com/xpn/xwiki/store/XWikiHibernateAttachmentStore.java
xwiki/trunk/src/test/java/com/xpn/xwiki/test/StoreTest.java
Log:
Fix XWIKI-428 Delete doc with bad attachment
---
Test was added to delete attachment with missing data in xwikiattachment_content or xwikiattachment_archive
---
Modified: xwiki/trunk/core/src/main/java/com/xpn/xwiki/store/XWikiHibernateAttachmentStore.java
===================================================================
--- xwiki/trunk/core/src/main/java/com/xpn/xwiki/store/XWikiHibernateAttachmentStore.java 2006-11-15 14:32:32 UTC (rev 1571)
+++ xwiki/trunk/core/src/main/java/com/xpn/xwiki/store/XWikiHibernateAttachmentStore.java 2006-11-15 16:00:36 UTC (rev 1572)
@@ -232,29 +232,29 @@
// Delete the three attachement entries
try {
loadAttachmentContent(attachment, context, false);
+ try {
+ session.delete(attachment.getAttachment_content());
+ } catch (Exception e) {
+ if (log.isWarnEnabled())
+ log.warn("Error deleting attachment content " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
+ }
} catch (Exception e) {
if (log.isWarnEnabled())
log.warn("Error loading attachment content when deleting attachment " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
}
try {
- session.delete(attachment.getAttachment_content());
- } catch (Exception e) {
- if (log.isWarnEnabled())
- log.warn("Error deleting attachment content " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
- }
- try {
loadAttachmentArchive(attachment, context, false);
+ try {
+ session.delete(attachment.getAttachment_archive());
+ } catch (Exception e) {
+ if (log.isWarnEnabled())
+ log.warn("Error deleting attachment archive " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
+ }
} catch(XWikiException e){
if (log.isWarnEnabled())
log.warn("Error loading attachment archive when deleting attachment " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
}
- try {
- session.delete(attachment.getAttachment_archive());
- } catch (Exception e) {
- if (log.isWarnEnabled())
- log.warn("Error deleting attachment archive " + attachment.getFilename() + " of doc " + attachment.getDoc().getFullName());
- }
try {
session.delete(attachment);
Modified: xwiki/trunk/src/test/java/com/xpn/xwiki/test/StoreTest.java
===================================================================
--- xwiki/trunk/src/test/java/com/xpn/xwiki/test/StoreTest.java 2006-11-15 14:32:32 UTC (rev 1571)
+++ xwiki/trunk/src/test/java/com/xpn/xwiki/test/StoreTest.java 2006-11-15 16:00:36 UTC (rev 1572)
@@ -41,6 +41,7 @@
import com.xpn.xwiki.store.XWikiStoreInterface;
import com.xpn.xwiki.store.XWikiAttachmentStoreInterface;
import com.xpn.xwiki.store.XWikiVersioningStoreInterface;
+import com.xpn.xwiki.store.XWikiHibernateStore;
public class StoreTest extends HibernateTestCase {
@@ -492,4 +493,62 @@
StringInputStream is = new StringInputStream(txt);
archive = new Archive("", is);
}
+
+
+ public void deleteDocWithBadAttachment1(XWikiStoreInterface store, String web, String name) throws XWikiException, IOException {
+ XWikiDocument doc3 = new XWikiDocument(web, name);
+ doc3 = (XWikiDocument) store.loadXWikiDoc(doc3, getXWikiContext());
+ store.deleteXWikiDoc(doc3, getXWikiContext());
+
+ XWikiDocument doc4 = new XWikiDocument(web, name);
+ doc4.setContent(Utils.content1);
+ doc4.setAuthor(Utils.author);
+ doc4.setParent(Utils.parent);
+ store.saveXWikiDoc(doc4, getXWikiContext());
+
+ XWikiDocument doc5 = new XWikiDocument(web, name);
+ doc5 = (XWikiDocument) store.loadXWikiDoc(doc5, getXWikiContext());
+ List attachlist = doc5.getAttachmentList();
+ assertEquals("Attachment is still there", 0, attachlist.size());
+ }
+
+ public void testDeleteDocWithBadAttachment1() throws XWikiException, IOException {
+ Utils.setStandardData();
+ attachmentReadWrite(getXWiki().getStore(), Utils.web, Utils.name);
+
+ getXWiki().getHibernateStore().beginTransaction(getXWikiContext());
+ StoreHibernateTest.runSQL(getXWiki().getHibernateStore(), "delete from xwikiattachment_content", getXWikiContext());
+ getXWiki().getHibernateStore().endTransaction(getXWikiContext(), true);
+
+ xwiki.flushCache();
+
+ deleteDocWithAttachment(getXWiki().getStore(), Utils.web, Utils.name);
+ }
+
+ public void testDeleteDocWithBadAttachment2() throws XWikiException, IOException {
+ Utils.setStandardData();
+ attachmentReadWrite(getXWiki().getStore(), Utils.web, Utils.name);
+
+ getXWiki().getHibernateStore().beginTransaction(getXWikiContext());
+ StoreHibernateTest.runSQL(getXWiki().getHibernateStore(), "delete from xwikiattachment_archive", getXWikiContext());
+ getXWiki().getHibernateStore().endTransaction(getXWikiContext(), true);
+
+ xwiki.flushCache();
+
+ deleteDocWithAttachment(getXWiki().getStore(), Utils.web, Utils.name);
+ }
+
+ public void testDeleteDocWithBadAttachment3() throws XWikiException, IOException {
+ Utils.setStandardData();
+ attachmentReadWrite(getXWiki().getStore(), Utils.web, Utils.name);
+
+ getXWiki().getHibernateStore().beginTransaction(getXWikiContext());
+ StoreHibernateTest.runSQL(getXWiki().getHibernateStore(), "delete from xwikiattachment", getXWikiContext());
+ getXWiki().getHibernateStore().endTransaction(getXWikiContext(), true);
+
+ xwiki.flushCache();
+
+ deleteDocWithAttachment(getXWiki().getStore(), Utils.web, Utils.name);
+ }
+
}
More information about the Xwiki-notifications
mailing list