ambari git commit: AMBARI-11702 Enhanced Dashboard: Server Error on toggling add widget (additional patch) (dsen)

2015-06-05 Thread dsen
Repository: ambari
Updated Branches:
  refs/heads/trunk 615c2d698 - ea7485ae5


AMBARI-11702 Enhanced Dashboard: Server Error on toggling add widget 
(additional patch) (dsen)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ea7485ae
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ea7485ae
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ea7485ae

Branch: refs/heads/trunk
Commit: ea7485ae568d533d7aea9f31de8a96846d0d5a8c
Parents: 615c2d6
Author: Dmytro Sen d...@apache.org
Authored: Fri Jun 5 15:50:53 2015 +0300
Committer: Dmytro Sen d...@apache.org
Committed: Fri Jun 5 15:50:53 2015 +0300

--
 .../controller/internal/WidgetLayoutResourceProviderTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ambari/blob/ea7485ae/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProviderTest.java
--
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProviderTest.java
index 8184d34..2f05402 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/WidgetLayoutResourceProviderTest.java
@@ -268,7 +268,7 @@ public class WidgetLayoutResourceProviderTest {
 
 resetToStrict(dao, widgetDAO);
 expect(dao.findById(1L)).andReturn(entity).anyTimes();
-expect(dao.merge((WidgetLayoutEntity) 
anyObject())).andReturn(entity).anyTimes();
+expect(dao.mergeWithFlush((WidgetLayoutEntity) 
anyObject())).andReturn(entity).anyTimes();
 expect(widgetDAO.merge(widgetEntity)).andReturn(widgetEntity).anyTimes();
 expect(widgetDAO.findById(2L)).andReturn(widgetEntity2).anyTimes();
 replay(dao, widgetDAO);



ambari git commit: AMBARI-11702. Enhanced Dashboard: Server Error on toggling add widget.

2015-06-04 Thread swagle
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
 {
+