You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/05/15 13:10:33 UTC
ambari git commit: AMBARI-11149. Widgets: attempted to
move/add/delete a widget causes exception (dlysnichenko)
Repository: ambari
Updated Branches:
refs/heads/trunk c36ec9091 -> eef00a9ec
AMBARI-11149. Widgets: attempted to move/add/delete a widget causes exception (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/eef00a9e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/eef00a9e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/eef00a9e
Branch: refs/heads/trunk
Commit: eef00a9ec7d9561eeac087d743a852e3d34d67ba
Parents: c36ec90
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Fri May 15 14:09:51 2015 +0300
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Fri May 15 14:09:51 2015 +0300
----------------------------------------------------------------------
.../internal/WidgetLayoutResourceProvider.java | 9 ++++++++
.../entities/WidgetLayoutUserWidgetEntity.java | 8 +++----
.../WidgetLayoutResourceProviderTest.java | 23 ++++++++++++++++----
.../ambari/server/orm/dao/WidgetDAOTest.java | 3 ++-
.../server/orm/dao/WidgetLayoutDAOTest.java | 2 --
5 files changed, 33 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/eef00a9e/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 8f068d5..174a106 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
@@ -286,6 +286,15 @@ public class WidgetLayoutResourceProvider extends AbstractControllerResourceProv
Set widgetsSet = (LinkedHashSet) propertyMap.get(WIDGETLAYOUT_WIDGETS_PROPERTY_ID);
+ //Remove old relations from widget entities
+ for (WidgetLayoutUserWidgetEntity widgetLayoutUserWidgetEntity : entity.getListWidgetLayoutUserWidgetEntity()) {
+ widgetLayoutUserWidgetEntity.getWidget().getListWidgetLayoutUserWidgetEntity()
+ .remove(widgetLayoutUserWidgetEntity);
+ widgetDAO.merge(widgetLayoutUserWidgetEntity.getWidget());
+ }
+ entity.setListWidgetLayoutUserWidgetEntity(new LinkedList<WidgetLayoutUserWidgetEntity>());
+ widgetLayoutDAO.merge(entity);
+
List<WidgetLayoutUserWidgetEntity> widgetLayoutUserWidgetEntityList = new LinkedList<WidgetLayoutUserWidgetEntity>();
int order=0;
for (Object widgetObject : widgetsSet) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/eef00a9e/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/WidgetLayoutUserWidgetEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/WidgetLayoutUserWidgetEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/WidgetLayoutUserWidgetEntity.java
index 1d6e1b5..dbae31b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/WidgetLayoutUserWidgetEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/WidgetLayoutUserWidgetEntity.java
@@ -17,6 +17,7 @@
*/
package org.apache.ambari.server.orm.entities;
+import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@@ -43,7 +44,7 @@ public class WidgetLayoutUserWidgetEntity {
@JoinColumn(name = "widget_layout_id", referencedColumnName = "id")
private WidgetLayoutEntity widgetLayout;
- @ManyToOne
+ @ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "widget_id", referencedColumnName = "id")
private WidgetEntity widget;
@@ -97,10 +98,7 @@ public class WidgetLayoutUserWidgetEntity {
WidgetLayoutUserWidgetEntity that = (WidgetLayoutUserWidgetEntity) o;
- if (widgetLayout.getId() != that.widgetLayout.getId()) return false;
- if (widget.getId() != that.widget.getId()) return false;
-
- return true;
+ return (widgetLayout.equals(that.widgetLayout) && widget.equals(that.widget));
}
@Override
http://git-wip-us.apache.org/repos/asf/ambari/blob/eef00a9e/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 1a9e230..8184d34 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
@@ -221,7 +221,15 @@ public class WidgetLayoutResourceProviderTest {
dao.create(capture(entityCapture));
expectLastCall();
- replay(amc, clusters, cluster, dao);
+ WidgetEntity widgetEntity = new WidgetEntity();
+ widgetEntity.setId(1L);
+ widgetEntity.setListWidgetLayoutUserWidgetEntity(new ArrayList<WidgetLayoutUserWidgetEntity>());
+ WidgetEntity widgetEntity2 = new WidgetEntity();
+ widgetEntity2.setId(2L);
+ widgetEntity2.setListWidgetLayoutUserWidgetEntity(new ArrayList<WidgetLayoutUserWidgetEntity>());
+ expect(widgetDAO.findById(1L)).andReturn(widgetEntity).atLeastOnce();
+
+ replay(amc, clusters, cluster, dao, widgetDAO);
Map<String, Object> requestProps = new HashMap<String, Object>();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID, "c1");
@@ -231,6 +239,9 @@ public class WidgetLayoutResourceProviderTest {
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID, "admin");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID, "CLUSTER");
Set widgetsInfo = new LinkedHashSet();
+ Map<String, String> widget = new HashMap<String, String>();
+ widget.put("id","1");
+ widgetsInfo.add(widget);
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID, widgetsInfo);
Request request = PropertyHelper.getCreateRequest(
@@ -255,15 +266,19 @@ public class WidgetLayoutResourceProviderTest {
String oldLayoutName = entity.getLayoutName();
String oldScope = entity.getScope();
- resetToStrict(dao);
+ resetToStrict(dao, widgetDAO);
expect(dao.findById(1L)).andReturn(entity).anyTimes();
expect(dao.merge((WidgetLayoutEntity) anyObject())).andReturn(entity).anyTimes();
- replay(dao);
+ expect(widgetDAO.merge(widgetEntity)).andReturn(widgetEntity).anyTimes();
+ expect(widgetDAO.findById(2L)).andReturn(widgetEntity2).anyTimes();
+ replay(dao, widgetDAO);
requestProps = new HashMap<String, Object>();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID, "layout_name_new");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID, "USER");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID, "1");
+ widget.put("id","2");
+ widgetsInfo.add(widget);
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID, widgetsInfo);
request = PropertyHelper.getUpdateRequest(requestProps, null);
@@ -273,7 +288,7 @@ public class WidgetLayoutResourceProviderTest {
Assert.assertFalse(oldLayoutName.equals(entity.getLayoutName()));
Assert.assertFalse(oldScope.equals(entity.getScope()));
- verify(amc, clusters, cluster, dao);
+ verify(amc, clusters, cluster, dao, widgetDAO);
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/eef00a9e/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetDAOTest.java
index 38bbbaf..080558a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetDAOTest.java
@@ -71,6 +71,7 @@ public class WidgetDAOTest {
widgetEntity.setWidgetName("widget" + i);
widgetEntity.setWidgetType("GAUGE");
widgetEntity.setWidgetValues("${`jvmMemoryHeapUsed + jvmMemoryHeapMax`}");
+ widgetEntity.setListWidgetLayoutUserWidgetEntity(new LinkedList<WidgetLayoutUserWidgetEntity>());
final WidgetLayoutEntity widgetLayoutEntity = new WidgetLayoutEntity();
widgetLayoutEntity.setClusterId(clusterId);
widgetLayoutEntity.setLayoutName("layout name" + i);
@@ -83,7 +84,7 @@ public class WidgetDAOTest {
widgetLayoutUserWidget.setWidgetLayout(widgetLayoutEntity);
widgetLayoutUserWidget.setWidgetOrder(0);
- widgetDAO.create(widgetEntity);
+ widgetEntity.getListWidgetLayoutUserWidgetEntity().add(widgetLayoutUserWidget);
List<WidgetLayoutUserWidgetEntity> widgetLayoutUserWidgetEntityList = new LinkedList<WidgetLayoutUserWidgetEntity>();
widgetLayoutUserWidgetEntityList.add(widgetLayoutUserWidget);
http://git-wip-us.apache.org/repos/asf/ambari/blob/eef00a9e/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetLayoutDAOTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetLayoutDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetLayoutDAOTest.java
index b3badb1..5b9ea6a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetLayoutDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/WidgetLayoutDAOTest.java
@@ -90,8 +90,6 @@ public class WidgetLayoutDAOTest {
widgetEntity.setWidgetType("GAUGE");
widgetEntity.setWidgetValues("${`jvmMemoryHeapUsed + jvmMemoryHeapMax`}");
- widgetDAO.create(widgetEntity);
-
WidgetLayoutUserWidgetEntity widgetLayoutUserWidget = new WidgetLayoutUserWidgetEntity();
widgetLayoutUserWidget.setWidget(widgetEntity);
widgetLayoutUserWidget.setWidgetLayout(widgetLayoutEntity);