Revision: 4274
http://openutils.svn.sourceforge.net/openutils/?rev=4274&view=rev
Author: fnecci
Date: 2013-06-27 13:08:19 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
Check for resolution inside synchronized block, maybe it has been created by an other thread
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java
Modified: magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java 2013-06-27 13:07:55 UTC (rev 4273)
+++ magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/utils/ImageUtils.java 2013-06-27 13:08:19 UTC (rev 4274)
@@ -848,11 +848,9 @@
{
return checkOrCreateResolution(media, resolutionTarget, nodeDataName, false);
}
-
- public static boolean checkOrCreateResolution(final Content media, final String resolutionTarget,
- String nodeDataName, final boolean lazy)
+
+ private static boolean checkResolution(final Content media, final String resolutionTarget, final boolean lazy)
{
-
Content resolutions = getResolutionsNode(media);
String resolution = resolutionTarget;
@@ -885,10 +883,15 @@
// go on with res calculation
}
- String type = media.getNodeData("type").getString();
- if (StringUtils.equals(type, "other"))
+ return false;
+ }
+
+ public static boolean checkOrCreateResolution(final Content media, final String resolutionTarget,
+ String nodeDataName, final boolean lazy)
+ {
+ if (checkResolution(media, resolutionTarget, lazy))
{
- return false;
+ return true;
}
if (nodeDataName == null)
@@ -984,6 +987,14 @@
synchronized (MediaEl.module().getLocks().nextLock())
{
+ // Check again for resolution, maybe it has been created by an other thread
+ if (checkResolution(node, resolutionTarget, lazy))
+ {
+ log.debug(
+ "Resolution {} for {} already generated",
+ new Object[]{resolutioNodeName, node.getHandle() });
+ return;
+ }
currentWorkingThreads++;
if (log.isDebugEnabled())
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|