Repository: ambari
Updated Branches:
refs/heads/trunk 6a0d1e0a2 - 98640c636
AMBARI-11702. Enhanced Dashboard: Server Error on toggling add widget.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/98640c63
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/98640c63
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/98640c63
Branch: refs/heads/trunk
Commit: 98640c63692960188d54a981665a2468769751e2
Parents: 6a0d1e0
Author: Siddharth Wagle swa...@hortonworks.com
Authored: Thu Jun 4 13:54:39 2015 -0700
Committer: Siddharth Wagle swa...@hortonworks.com
Committed: Thu Jun 4 13:54:44 2015 -0700
--
.../internal/WidgetLayoutResourceProvider.java | 96 +++-
.../ambari/server/orm/dao/WidgetLayoutDAO.java | 11 +++
2 files changed, 63 insertions(+), 44 deletions(-)
--
http://git-wip-us.apache.org/repos/asf/ambari/blob/98640c63/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProvider.java
--
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProvider.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProvider.java
index 174a106..7bee12c 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProvider.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProvider.java
@@ -50,6 +50,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* Resource provider for widget layout resources.
@@ -80,6 +82,9 @@ public class WidgetLayoutResourceProvider extends
AbstractControllerResourceProv
};
@SuppressWarnings(serial)
+ private static ReadWriteLock lock = new ReentrantReadWriteLock();
+
+ @SuppressWarnings(serial)
public static SetString propertyIds = new HashSetString() {
{
add(WIDGETLAYOUT_ID_PROPERTY_ID);
@@ -267,55 +272,58 @@ public class WidgetLayoutResourceProvider extends
AbstractControllerResourceProv
} catch (Exception ex) {
throw new AmbariException(WidgetLayout should have numerical id);
}
- final WidgetLayoutEntity entity = widgetLayoutDAO.findById(layoutId);
- if (entity == null) {
-throw new ObjectNotFoundException(There is no widget layout with
id + layoutId);
- }
- if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID
{
-
entity.setLayoutName(propertyMap.get(WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID).toString());
- }
- if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID
{
-
entity.setSectionName(propertyMap.get(WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID).toString());
- }
- if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID
{
-
entity.setDisplayName(propertyMap.get(WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID).toString());
- }
- if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_SCOPE_PROPERTY_ID
{
-
entity.setScope(propertyMap.get(WIDGETLAYOUT_SCOPE_PROPERTY_ID).toString());
- }
-
- Set widgetsSet = (LinkedHashSet)
propertyMap.get(WIDGETLAYOUT_WIDGETS_PROPERTY_ID);
+ lock.writeLock().lock();
+ try {
+final WidgetLayoutEntity entity =
widgetLayoutDAO.findById(layoutId);
+if (entity == null) {
+ throw new ObjectNotFoundException(There is no widget layout
with id + layoutId);
+}
+if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID
{
+
entity.setLayoutName(propertyMap.get(WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID).toString());
+}
+if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID
{
+
entity.setSectionName(propertyMap.get(WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID).toString());
+}
+if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID
{
+
entity.setDisplayName(propertyMap.get(WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID).toString());
+}
+if
(StringUtils.isNotBlank(ObjectUtils.toString(propertyMap.get(WIDGETLAYOUT_SCOPE_PROPERTY_ID
{
+