Repository: ambari Updated Branches: refs/heads/branch-1.6.0 6fd497f17 -> 69b2c95ef
AMBARI-5767. Blueprint delete throws exception. (swagle) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/69b2c95e Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/69b2c95e Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/69b2c95e Branch: refs/heads/branch-1.6.0 Commit: 69b2c95ef0043eb1cb78cebdd05678fc5aa4e7cb Parents: 6fd497f Author: Siddharth Wagle <swa...@hortonworks.com> Authored: Wed May 14 15:52:11 2014 -0700 Committer: Siddharth Wagle <swa...@hortonworks.com> Committed: Thu May 15 13:34:08 2014 -0700 ---------------------------------------------------------------------- .../internal/BlueprintResourceProvider.java | 13 +++++++------ .../ambari/server/orm/dao/BlueprintDAO.java | 9 +++++++++ .../internal/BlueprintResourceProviderTest.java | 8 +++----- .../ambari/server/orm/dao/BlueprintDAOTest.java | 20 ++++++++++++++++++++ 4 files changed, 39 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/69b2c95e/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java index 003590f..5e04141 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/BlueprintResourceProvider.java @@ -212,15 +212,16 @@ public class BlueprintResourceProvider extends AbstractResourceProvider { new RequestImpl(null, null, null, null), predicate); for (final Resource resource : setResources) { - if (LOG.isDebugEnabled()) { - LOG.debug("Deleting Blueprint, name=" + - resource.getPropertyValue(BLUEPRINT_NAME_PROPERTY_ID)); - } + final String blueprintName = + (String) resource.getPropertyValue(BLUEPRINT_NAME_PROPERTY_ID); + + LOG.info("Deleting Blueprint, name = " + blueprintName); + modifyResources(new Command<Void>() { @Override public Void invoke() throws AmbariException { - dao.remove(toEntity(resource)); - return null; + dao.removeByName(blueprintName); + return null; } }); } http://git-wip-us.apache.org/repos/asf/ambari/blob/69b2c95e/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java index 0cbaedc..9b58422 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/BlueprintDAO.java @@ -109,4 +109,13 @@ public class BlueprintDAO { public void remove(BlueprintEntity blueprintEntity) { entityManagerProvider.get().remove(merge(blueprintEntity)); } + + /** + * Remove entity instance by primary key + * @param blueprint_name Primary key: blueprint name + */ + @Transactional + public void removeByName(String blueprint_name) { + entityManagerProvider.get().remove(findByName(blueprint_name)); + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/69b2c95e/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java index b611551..0c35c10 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java @@ -43,6 +43,7 @@ import org.apache.ambari.server.state.ComponentInfo; import org.apache.ambari.server.state.ServiceInfo; import org.easymock.Capture; +import static org.easymock.EasyMock.expectLastCall; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; @@ -263,14 +264,13 @@ public class BlueprintResourceProviderTest { public void testDeleteResources() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException { - Capture<BlueprintEntity> entityCapture = new Capture<BlueprintEntity>(); - ResourceProvider provider = createProvider(); BlueprintEntity blueprintEntity = createEntity(getTestProperties().iterator().next()); // set expectations expect(dao.findByName(BLUEPRINT_NAME)).andReturn(blueprintEntity); - dao.remove(capture(entityCapture)); + dao.removeByName(blueprintEntity.getBlueprintName()); + expectLastCall(); replay(dao); Predicate predicate = new EqualsPredicate<String>( @@ -288,8 +288,6 @@ public class BlueprintResourceProviderTest { assertNotNull(lastEvent.getPredicate()); verify(dao); - - validateEntity(entityCapture.getValue(), false); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/69b2c95e/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/BlueprintDAOTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/BlueprintDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/BlueprintDAOTest.java index c157729..1ac20e6 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/BlueprintDAOTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/BlueprintDAOTest.java @@ -22,9 +22,12 @@ import com.google.inject.Provider; import org.apache.ambari.server.orm.entities.BlueprintEntity; import org.junit.Before; import org.junit.Test; + +import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.createStrictMock; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.reset; import static org.easymock.EasyMock.verify; @@ -149,4 +152,21 @@ public class BlueprintDAOTest { verify(entityManagerProvider, entityManager); } + + @Test + public void testRemoveByName() { + BlueprintEntity entity = new BlueprintEntity(); + BlueprintDAO dao = new BlueprintDAO(); + dao.entityManagerProvider = entityManagerProvider; + + expect(entityManager.find(eq(BlueprintEntity.class), eq("test"))).andReturn(entity); + entityManager.remove(entity); + expectLastCall(); + + replay(entityManager); + + dao.removeByName("test"); + + verify(entityManager); + } }