Repository: ambari
Updated Branches:
  refs/heads/branch-1.7.0 2d0dbaef1 -> 6bbecfd9e


AMBARI-8136 - Views: creating instance of same name overwrites existing 
(tbeerbower)


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

Branch: refs/heads/branch-1.7.0
Commit: 6bbecfd9e24bac4daf4019d8274ef9b8ceabb883
Parents: 2d0dbae
Author: tbeerbower <[email protected]>
Authored: Tue Nov 4 11:53:43 2014 -0500
Committer: tbeerbower <[email protected]>
Committed: Tue Nov 4 11:54:49 2014 -0500

----------------------------------------------------------------------
 .../internal/ViewInstanceResourceProvider.java          | 12 ++++++++----
 .../internal/ViewInstanceResourceProviderTest.java      |  4 ----
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/6bbecfd9/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProvider.java
index 3d7f6db..3f62cc3 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProvider.java
@@ -259,7 +259,7 @@ public class ViewInstanceResourceProvider extends 
AbstractResourceProvider {
   }
 
   // Convert a map of properties to a view instance entity.
-  private ViewInstanceEntity toEntity(Map<String, Object> properties) throws 
AmbariException {
+  private ViewInstanceEntity toEntity(Map<String, Object> properties, boolean 
update) throws AmbariException {
     String name = (String) properties.get(INSTANCE_NAME_PROPERTY_ID);
     if (name == null || name.isEmpty()) {
       throw new IllegalArgumentException("View instance name must be 
provided");
@@ -283,7 +283,11 @@ public class ViewInstanceResourceProvider extends 
AbstractResourceProvider {
       throw new IllegalArgumentException("View name " + viewName + " does not 
exist.");
     }
 
-    ViewInstanceEntity viewInstanceEntity = 
viewRegistry.getInstanceDefinition(commonViewName, version, name);
+    ViewInstanceEntity viewInstanceEntity = null;
+
+    if (update) {
+      viewInstanceEntity = viewRegistry.getInstanceDefinition(commonViewName, 
version, name);
+    }
 
     if (viewInstanceEntity == null) {
       viewInstanceEntity = new ViewInstanceEntity();
@@ -346,7 +350,7 @@ public class ViewInstanceResourceProvider extends 
AbstractResourceProvider {
       public Void invoke() throws AmbariException {
         try {
           ViewRegistry       viewRegistry   = ViewRegistry.getInstance();
-          ViewInstanceEntity instanceEntity = toEntity(properties);
+          ViewInstanceEntity instanceEntity = toEntity(properties, false);
 
           ViewEntity viewEntity = instanceEntity.getViewEntity();
           String     viewName   = viewEntity.getCommonName();
@@ -380,7 +384,7 @@ public class ViewInstanceResourceProvider extends 
AbstractResourceProvider {
       @Override
       public Void invoke() throws AmbariException {
 
-        ViewInstanceEntity instance = toEntity(properties);
+        ViewInstanceEntity instance = toEntity(properties, true);
         ViewEntity         view     = instance.getViewEntity();
 
         if (includeInstance(view.getCommonName(), view.getVersion(), 
instance.getInstanceName(), false)) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/6bbecfd9/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProviderTest.java
index 51033e6..fcb9602 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ViewInstanceResourceProviderTest.java
@@ -143,8 +143,6 @@ public class ViewInstanceResourceProviderTest {
     expect(singleton.instanceExists(viewInstanceEntity)).andReturn(false);
     expect(singleton.instanceExists(viewInstanceEntity2)).andReturn(false);
     expect(singleton.getDefinition("V1", 
"1.0.0")).andReturn(viewEntity).anyTimes();
-    expect(singleton.getInstanceDefinition("V1", "1.0.0", 
"I1")).andReturn(viewInstanceEntity);
-    expect(singleton.getInstanceDefinition("V1", "1.0.0", 
"I1")).andReturn(viewInstanceEntity2);
     expect(singleton.getDefinition("V1", 
null)).andReturn(viewEntity).anyTimes();
 
     Capture<Map<String, String>> captureProperties = new Capture<Map<String, 
String>>();
@@ -203,7 +201,6 @@ public class ViewInstanceResourceProviderTest {
 
     expect(singleton.instanceExists(viewInstanceEntity)).andReturn(true);
     expect(singleton.getDefinition("V1", 
"1.0.0")).andReturn(viewEntity).anyTimes();
-    expect(singleton.getInstanceDefinition("V1", "1.0.0", 
"I1")).andReturn(viewInstanceEntity);
     expect(singleton.getDefinition("V1", null)).andReturn(viewEntity);
 
     expect(singleton.checkAdmin()).andReturn(true);
@@ -242,7 +239,6 @@ public class ViewInstanceResourceProviderTest {
     viewInstanceEntity.setName("I1");
     viewInstanceEntity.setViewEntity(viewEntity);
 
-    expect(singleton.getInstanceDefinition("V1", "1.0.0", 
"I1")).andReturn(viewInstanceEntity);
     expect(singleton.getDefinition("V1", 
"1.0.0")).andReturn(viewEntity).anyTimes();
     expect(singleton.getDefinition("V1", null)).andReturn(viewEntity);
 

Reply via email to