|
From: <die...@us...> - 2014-01-30 16:19:53
|
Revision: 4558
http://openutils.svn.sourceforge.net/openutils/?rev=4558&view=rev
Author: diego_schivo
Date: 2014-01-30 16:19:49 +0000 (Thu, 30 Jan 2014)
Log Message:
-----------
MEDIA-312 - Possibility for MediaTypeHandler to do something on media deletion
Modified Paths:
--------------
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java
magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/BaseExternalVideoProvider.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -1,5 +1,7 @@
package net.sourceforge.openutils.mgnlmedia.externalvideo;
+import info.magnolia.cms.core.Content;
+
/**
* @author molaschi
* @version $Id: $
@@ -26,4 +28,12 @@
this.name = name;
}
+ /**
+ * {@inheritDoc}
+ */
+ public boolean onPreDelete(Content media)
+ {
+ return true;
+ }
+
}
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoProvider.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -36,4 +36,6 @@
String getPreviewUrl(Content media);
String getFilename(Content media);
+
+ boolean onPreDelete(Content media);
}
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/externalvideo/ExternalVideoTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -34,13 +34,21 @@
import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaConfigurationManager;
import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/*
*
*/
public class ExternalVideoTypeHandler extends BaseVideoTypeHandler
{
+ /**
+ * Logger.
+ */
+ private static final Logger log = LoggerFactory.getLogger(ExternalVideoTypeHandler.class);
+
public static final String ND_PROVIDER = "provider";
public static ExternalVideoProvider getExternalVideoProvider(Content media)
@@ -157,7 +165,15 @@
ExternalVideoProvider provider = getVideoProvider(media);
if (provider != null)
{
- provider.processVideo(media);
+ try
+ {
+ provider.processVideo(media);
+ }
+ catch (Throwable e)
+ {
+ log.error(e.getMessage(), e);
+ return false;
+ }
}
return super.onPostSave(media);
@@ -166,6 +182,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public String getFilename(Content media)
{
ExternalVideoProvider provider = getVideoProvider(media);
@@ -230,4 +247,22 @@
{
return "/.resources/media/icons/thumb-video.png";
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onPreDelete(Content media)
+ {
+ if (!super.onPreDelete(media))
+ {
+ return false;
+ }
+ ExternalVideoProvider provider = getVideoProvider(media);
+ if (provider == null)
+ {
+ return true;
+ }
+ return provider.onPreDelete(media);
+ }
}
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -29,6 +29,7 @@
import info.magnolia.cms.security.Permission;
import info.magnolia.cms.util.AlertUtil;
import info.magnolia.cms.util.ContentUtil;
+import info.magnolia.cms.util.NodeDataUtil;
import info.magnolia.commands.CommandsManager;
import info.magnolia.context.Context;
import info.magnolia.context.MgnlContext;
@@ -56,6 +57,7 @@
import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaTypeConfiguration;
import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule;
import net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl;
+import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler;
import org.apache.commons.chain.Command;
import org.apache.commons.lang.StringUtils;
@@ -304,8 +306,26 @@
try
{
- hm.delete(this.node);
- hm.save();
+ Content content = hm.getContent(this.node);
+ if (MediaConfigurationManager.MEDIA.equals(content.getItemType()))
+ {
+ String type = NodeDataUtil.getString(node, "type");
+ MediaTypeHandler typeHandler = type != null ? MediaConfigurationManager
+ .getInstance()
+ .getTypes()
+ .get(type)
+ .getHandler() : null;
+ // MEDIA-312
+ if (typeHandler == null || typeHandler.onPreDelete(content))
+ {
+ hm.delete(this.node);
+ hm.save();
+ }
+ }
+ else if (ItemType.CONTENT.equals(content.getItemType()))
+ {
+ // TODO recursion?
+ }
}
catch (RepositoryException ex)
{
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/MediaTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -208,4 +208,6 @@
* Notify module stopping to handler
*/
void stop();
+
+ boolean onPreDelete(Content media);
}
Modified: magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java
===================================================================
--- magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2014-01-28 15:49:36 UTC (rev 4557)
+++ magnoliamodules/branches/magnolia44/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2014-01-30 16:19:49 UTC (rev 4558)
@@ -384,6 +384,14 @@
{
// Do nothing
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean onPreDelete(Content media)
+ {
+ return true;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|