From 3d5467032eb72a4bba1bec8f15093325e493c263 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Tue, 30 Jun 2015 09:51:00 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/branches/common/common-gcore-resources/1.3@115634 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.core.resources.prefs | 1 - distro/changelog.xml | 3 +++ pom.xml | 2 +- src/main/java/org/gcube/common/resources/gcore/Resource.java | 5 +++++ .../java/org/gcube/common/resources/gcore/Resources.java | 5 +++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index a035832..29abf99 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,4 +1,3 @@ -#Mon Dec 03 17:40:30 CET 2012 eclipse.preferences.version=1 encoding//src/main/java=UTF-8 encoding//src/main/resources=UTF-8 diff --git a/distro/changelog.xml b/distro/changelog.xml index ef814d4..62e8a6d 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -19,4 +19,7 @@ Deprecated localAvailableStorage() methods and added replacements localAvailableSpace() + + Added lock on resource unmashalling + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 31331ea..ef11732 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.gcube.resources common-gcore-resources - 1.3.0-SNAPSHOT + 1.3.1-SNAPSHOT scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/Common/${project.artifactId} diff --git a/src/main/java/org/gcube/common/resources/gcore/Resource.java b/src/main/java/org/gcube/common/resources/gcore/Resource.java index 5ecb1cd..8f0e807 100644 --- a/src/main/java/org/gcube/common/resources/gcore/Resource.java +++ b/src/main/java/org/gcube/common/resources/gcore/Resource.java @@ -5,6 +5,8 @@ import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAttribute; @@ -22,6 +24,9 @@ public abstract class Resource { //default resource type version private static String CURRENT_VERSION = "0.4.x"; + + protected transient Lock lock = new ReentrantLock(); + /** * The type of the resource */ diff --git a/src/main/java/org/gcube/common/resources/gcore/Resources.java b/src/main/java/org/gcube/common/resources/gcore/Resources.java index 695263b..c5dc13b 100644 --- a/src/main/java/org/gcube/common/resources/gcore/Resources.java +++ b/src/main/java/org/gcube/common/resources/gcore/Resources.java @@ -147,6 +147,8 @@ public class Resources { */ public static T marshal(Object resource,T result) { + if (resource instanceof Resource) + ((Resource) resource).lock.lock(); try { JAXBContext context = context(resource.getClass()); Marshaller m = context.createMarshaller(); @@ -158,6 +160,9 @@ public class Resources { } catch(Exception e) { throw new RuntimeException("serialisation error",e); + } finally{ + if (resource instanceof Resource) + ((Resource) resource).lock.unlock(); } }