From b1de7ece25ea3fb27e9cd140a1dc0a91cafbd123 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Wed, 8 Jun 2011 15:55:27 -0700 Subject: [PATCH] bug 9651: we're saving the tags twice. --- .../com/cloud/network/NetworkManagerImpl.java | 9 +++++---- .../com/cloud/network/dao/NetworkDaoImpl.java | 4 ---- .../com/cloud/network/dao/NetworkDaoTest.java | 1 - .../com/cloud/utils/db/GenericDaoBase.java | 19 +++++++++++-------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index ffc4faf592e..1318abbafa6 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1599,7 +1599,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag domainId = cmd.getDomainId(); } - Network network = createNetwork(networkOfferingId, name, displayText, isShared, isDefault, zoneId, gateway, cidr, vlanId, networkDomain, owner, false, domainId, null); + Network network = createNetwork(networkOfferingId, name, displayText, isShared, isDefault, zoneId, gateway, cidr, vlanId, networkDomain, owner, false, domainId, tags); // Don't pass owner to create vlan when network offering is of type Direct - done to prevent accountVlanMap entry // creation when vlan is mapped to network @@ -1807,7 +1807,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag } else { sharedNetworkDomainId = domainId; } - } + } Filter searchFilter = new Filter(NetworkVO.class, "id", false, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchBuilder sb = _networksDao.createSearchBuilder(); @@ -1901,7 +1901,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag sc.addJoinAnd("domainNetworkSearch", "domainId", SearchCriteria.Op.IN, allowedDomains.toArray()); return _networksDao.search(sc, searchFilter); - } + } private List listAccountSpecificAndZoneLevelNetworks(SearchCriteria sc, Filter searchFilter, Long accountId, String path) { @@ -1931,7 +1931,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag sc.addAnd("id", SearchCriteria.Op.SC, ssc); return _networksDao.search(sc, searchFilter); - } + } @Override @ActionEvent(eventType = EventTypes.EVENT_NETWORK_DELETE, eventDescription = "deleting network", async = true) @@ -2926,6 +2926,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag Random _rand = new Random(System.currentTimeMillis()); + @Override @DB public String acquireGuestIpAddress(Network network) { List ips = _nicDao.listIpAddressInNetwork(network.getId()); diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index 35e20814756..dac59335d41 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -55,7 +55,6 @@ public class NetworkDaoImpl extends GenericDaoBase implements N NetworkAccountDaoImpl _accountsDao = ComponentLocator.inject(NetworkAccountDaoImpl.class); NetworkDomainDaoImpl _domainsDao = ComponentLocator.inject(NetworkDomainDaoImpl.class); NetworkOpDaoImpl _opDao = ComponentLocator.inject(NetworkOpDaoImpl.class); - NetworkTagDaoImpl _tagDao = ComponentLocator.inject(NetworkTagDaoImpl.class); final TableGenerator _tgMacAddress; Random _rand = new Random(System.currentTimeMillis()); @@ -180,9 +179,6 @@ public class NetworkDaoImpl extends GenericDaoBase implements N addAccountToNetwork(network.getId(), network.getAccountId(), true); NetworkOpVO op = new NetworkOpVO(network.getId(), gc); _opDao.persist(op); - for (String tag : network.getTags()) { - _tagDao.persist(new NetworkTagVO(network.getId(), tag)); - } txn.commit(); newNetwork.setTags(network.getTags()); return newNetwork; diff --git a/server/test/com/cloud/network/dao/NetworkDaoTest.java b/server/test/com/cloud/network/dao/NetworkDaoTest.java index 24fff441bef..c898497d027 100644 --- a/server/test/com/cloud/network/dao/NetworkDaoTest.java +++ b/server/test/com/cloud/network/dao/NetworkDaoTest.java @@ -44,7 +44,6 @@ public class NetworkDaoTest extends TestCase { retrievedTags = retrieved.getTags(); assert(retrievedTags.size() == 2 && retrievedTags.contains("e") && retrievedTags.contains("f")); - dao.expunge(1001l); } diff --git a/utils/src/com/cloud/utils/db/GenericDaoBase.java b/utils/src/com/cloud/utils/db/GenericDaoBase.java index 2a31e6f84c6..83351aa5f36 100755 --- a/utils/src/com/cloud/utils/db/GenericDaoBase.java +++ b/utils/src/com/cloud/utils/db/GenericDaoBase.java @@ -1218,15 +1218,18 @@ public abstract class GenericDaoBase implements Gene } } } - HashMap ecAttributes = new HashMap(); - for (Attribute attr : _ecAttributes) { - Object ec = attr.field.get(entity); - if (ec != null) { - ecAttributes.put(attr, ec); - } - } - insertElementCollection(entity, _idAttributes.get(_table)[0], id, ecAttributes); + if (_ecAttributes != null && _ecAttributes.size() > 0) { + HashMap ecAttributes = new HashMap(); + for (Attribute attr : _ecAttributes) { + Object ec = attr.field.get(entity); + if (ec != null) { + ecAttributes.put(attr, ec); + } + } + + insertElementCollection(entity, _idAttributes.get(_table)[0], id, ecAttributes); + } txn.commit(); } catch (final SQLException e) { if (e.getSQLState().equals("23000") && e.getErrorCode() == 1062) {