Author: hoang_to
Date: 2011-01-11 05:48:36 -0500 (Tue, 11 Jan 2011)
New Revision: 5728
Modified:
portal/branches/branch-GTNPORTAL-1745/webui/framework/src/main/java/org/exoplatform/webui/config/Param.java
Log:
GTNPORTAL-1742: Prevent to load concurrently the same webui parameter
Modified:
portal/branches/branch-GTNPORTAL-1745/webui/framework/src/main/java/org/exoplatform/webui/config/Param.java
===================================================================
---
portal/branches/branch-GTNPORTAL-1745/webui/framework/src/main/java/org/exoplatform/webui/config/Param.java 2011-01-11
09:56:11 UTC (rev 5727)
+++
portal/branches/branch-GTNPORTAL-1745/webui/framework/src/main/java/org/exoplatform/webui/config/Param.java 2011-01-11
10:48:36 UTC (rev 5728)
@@ -64,36 +64,41 @@
public Object getMapXMLObject(WebuiRequestContext context) throws Exception
{
- if (object != null)
- return object;
- ResourceResolver resolver = context.getResourceResolver(value);
- InputStream is = resolver.getInputStream(value);
- object = XMLObject.getObject(is);
- is.close();
+ if(object == null)
+ {
+ synchronized (this)
+ {
+ if(object == null)
+ {
+ ResourceResolver resolver = context.getResourceResolver(value);
+ InputStream is = resolver.getInputStream(value);
+ object = XMLObject.getObject(is);
+ is.close();
+ }
+ }
+ }
return object;
}
@SuppressWarnings("unchecked")
public Object getMapGroovyObject(WebuiRequestContext context) throws Exception
{
- try
+ if(object == null)
{
- if (object != null)
- return object;
- ResourceResolver resolver = context.getResourceResolver(value);
- InputStream is = resolver.getInputStream(value);
- //TODO if is == null throw an exception saying the it's impossible to find
the file
- Binding binding = new Binding();
- GroovyShell shell = new
GroovyShell(Thread.currentThread().getContextClassLoader(), binding);
- object = shell.evaluate(is);
- is.close();
- return object;
+ synchronized (this)
+ {
+ if(object == null)
+ {
+ ResourceResolver resolver = context.getResourceResolver(value);
+ InputStream is = resolver.getInputStream(value);
+ Binding binding = new Binding();
+ GroovyShell shell = new
GroovyShell(Thread.currentThread().getContextClassLoader(), binding);
+ object = shell.evaluate(is);
+ is.close();
+ }
+ }
}
- catch (Exception e)
- {
- log.error("A problem in the groovy script : " + value, e);
- throw e;
- }
+ return object;
}
public Object getFreshObject(WebuiRequestContext context) throws Exception