diff --git a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java index 08f4fa65cf3..eb39c0e7c40 100755 --- a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java @@ -44,6 +44,7 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.SSLEngine; import org.apache.log4j.Logger; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.agent.AgentManager; @@ -90,6 +91,7 @@ import com.cloud.utils.nio.Link; import com.cloud.utils.nio.Task; @Component +@Primary @Local(value = { AgentManager.class, ClusteredAgentRebalanceService.class }) public class ClusteredAgentManagerImpl extends AgentManagerImpl implements ClusterManagerListener, ClusteredAgentRebalanceService { final static Logger s_logger = Logger.getLogger(ClusteredAgentManagerImpl.class); diff --git a/server/src/com/cloud/cluster/ClusterManagerImpl.java b/server/src/com/cloud/cluster/ClusterManagerImpl.java index 9cb78914249..19705eceebe 100755 --- a/server/src/com/cloud/cluster/ClusterManagerImpl.java +++ b/server/src/com/cloud/cluster/ClusterManagerImpl.java @@ -45,6 +45,7 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.log4j.Logger; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.agent.AgentManager; @@ -91,6 +92,7 @@ import com.cloud.utils.net.NetUtils; import com.google.gson.Gson; @Component +@Primary @Local(value = { ClusterManager.class }) public class ClusterManagerImpl implements ClusterManager { private static final Logger s_logger = Logger.getLogger(ClusterManagerImpl.class); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index 2a4bb89d0d4..e2e657d336d 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -237,7 +237,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura VpcManager _vpcMgr; // FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao? - protected static final DataCenterLinkLocalIpAddressDaoImpl _LinkLocalIpAllocDao = ComponentLocator.inject(DataCenterLinkLocalIpAddressDaoImpl.class); + @Inject protected DataCenterLinkLocalIpAddressDaoImpl _LinkLocalIpAllocDao; private int _maxVolumeSizeInGb; private long _defaultPageSize; diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 154204bd459..ccfb3537d9e 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -33,6 +33,7 @@ import javax.naming.ConfigurationException; import javax.persistence.Table; import org.apache.log4j.Logger; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.agent.AgentManager; @@ -172,6 +173,7 @@ import com.google.gson.GsonBuilder; // because sooner or later, it will be driven into Running state // @Component +@Primary @Local(value = { ConsoleProxyManager.class, ConsoleProxyService.class }) public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProxyService, Manager, AgentHook, VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { private static final Logger s_logger = Logger.getLogger(ConsoleProxyManagerImpl.class); diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java index e8c50055463..ec6d20c9e67 100644 --- a/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java +++ b/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java @@ -24,6 +24,7 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.alert.AlertManager; @@ -34,6 +35,7 @@ import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.db.Transaction; @Component +@Primary @Local(value={HighAvailabilityManager.class}) public class HighAvailabilityManagerExtImpl extends HighAvailabilityManagerImpl { diff --git a/server/src/com/cloud/host/dao/HostDaoImpl.java b/server/src/com/cloud/host/dao/HostDaoImpl.java index 1da6b4c0290..e58d2673eca 100755 --- a/server/src/com/cloud/host/dao/HostDaoImpl.java +++ b/server/src/com/cloud/host/dao/HostDaoImpl.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.TimeZone; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; import javax.persistence.TableGenerator; @@ -71,57 +72,60 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao private static final Logger status_logger = Logger.getLogger(Status.class); private static final Logger state_logger = Logger.getLogger(ResourceState.class); - protected final SearchBuilder TypePodDcStatusSearch; + protected SearchBuilder TypePodDcStatusSearch; - protected final SearchBuilder IdStatusSearch; - protected final SearchBuilder TypeDcSearch; - protected final SearchBuilder TypeDcStatusSearch; - protected final SearchBuilder TypeClusterStatusSearch; - protected final SearchBuilder MsStatusSearch; - protected final SearchBuilder DcPrivateIpAddressSearch; - protected final SearchBuilder DcStorageIpAddressSearch; + protected SearchBuilder IdStatusSearch; + protected SearchBuilder TypeDcSearch; + protected SearchBuilder TypeDcStatusSearch; + protected SearchBuilder TypeClusterStatusSearch; + protected SearchBuilder MsStatusSearch; + protected SearchBuilder DcPrivateIpAddressSearch; + protected SearchBuilder DcStorageIpAddressSearch; - protected final SearchBuilder GuidSearch; - protected final SearchBuilder DcSearch; - protected final SearchBuilder PodSearch; - protected final SearchBuilder TypeSearch; - protected final SearchBuilder StatusSearch; - protected final SearchBuilder ResourceStateSearch; - protected final SearchBuilder NameLikeSearch; - protected final SearchBuilder NameSearch; - protected final SearchBuilder SequenceSearch; - protected final SearchBuilder DirectlyConnectedSearch; - protected final SearchBuilder UnmanagedDirectConnectSearch; - protected final SearchBuilder UnmanagedApplianceSearch; - protected final SearchBuilder MaintenanceCountSearch; - protected final SearchBuilder ClusterStatusSearch; - protected final SearchBuilder TypeNameZoneSearch; - protected final SearchBuilder AvailHypevisorInZone; + protected SearchBuilder GuidSearch; + protected SearchBuilder DcSearch; + protected SearchBuilder PodSearch; + protected SearchBuilder TypeSearch; + protected SearchBuilder StatusSearch; + protected SearchBuilder ResourceStateSearch; + protected SearchBuilder NameLikeSearch; + protected SearchBuilder NameSearch; + protected SearchBuilder SequenceSearch; + protected SearchBuilder DirectlyConnectedSearch; + protected SearchBuilder UnmanagedDirectConnectSearch; + protected SearchBuilder UnmanagedApplianceSearch; + protected SearchBuilder MaintenanceCountSearch; + protected SearchBuilder ClusterStatusSearch; + protected SearchBuilder TypeNameZoneSearch; + protected SearchBuilder AvailHypevisorInZone; - protected final SearchBuilder DirectConnectSearch; - protected final SearchBuilder ManagedDirectConnectSearch; - protected final SearchBuilder ManagedRoutingServersSearch; - protected final SearchBuilder SecondaryStorageVMSearch; + protected SearchBuilder DirectConnectSearch; + protected SearchBuilder ManagedDirectConnectSearch; + protected SearchBuilder ManagedRoutingServersSearch; + protected SearchBuilder SecondaryStorageVMSearch; - protected final GenericSearchBuilder HostsInStatusSearch; - protected final GenericSearchBuilder CountRoutingByDc; - protected final SearchBuilder HostTransferSearch; + protected GenericSearchBuilder HostsInStatusSearch; + protected GenericSearchBuilder CountRoutingByDc; + protected SearchBuilder HostTransferSearch; protected SearchBuilder ClusterManagedSearch; - protected final SearchBuilder RoutingSearch; + protected SearchBuilder RoutingSearch; - protected final Attribute _statusAttr; - protected final Attribute _resourceStateAttr; - protected final Attribute _msIdAttr; - protected final Attribute _pingTimeAttr; + protected Attribute _statusAttr; + protected Attribute _resourceStateAttr; + protected Attribute _msIdAttr; + protected Attribute _pingTimeAttr; @Inject protected HostDetailsDaoImpl _detailsDao; @Inject protected HostTagsDaoImpl _hostTagsDao; @Inject protected HostTransferMapDaoImpl _hostTransferDao; @Inject protected ClusterDaoImpl _clusterDao; - public HostDaoImpl() { + } + + @PostConstruct + public void init() { MaintenanceCountSearch = createSearchBuilder(); MaintenanceCountSearch.and("cluster", MaintenanceCountSearch.entity().getClusterId(), SearchCriteria.Op.EQ); diff --git a/server/src/com/cloud/network/NetworkAccountDaoImpl.java b/server/src/com/cloud/network/NetworkAccountDaoImpl.java index 88813390c69..e8ff27cc543 100644 --- a/server/src/com/cloud/network/NetworkAccountDaoImpl.java +++ b/server/src/com/cloud/network/NetworkAccountDaoImpl.java @@ -16,9 +16,12 @@ // under the License. package com.cloud.network; +import org.springframework.stereotype.Component; + import com.cloud.utils.db.GenericDao; import com.cloud.utils.db.GenericDaoBase; +@Component public class NetworkAccountDaoImpl extends GenericDaoBase implements GenericDao { public NetworkAccountDaoImpl() { super(); diff --git a/server/src/com/cloud/network/dao/IPAddressDaoImpl.java b/server/src/com/cloud/network/dao/IPAddressDaoImpl.java index 5b0a8d15126..833c8314ca8 100755 --- a/server/src/com/cloud/network/dao/IPAddressDaoImpl.java +++ b/server/src/com/cloud/network/dao/IPAddressDaoImpl.java @@ -21,6 +21,7 @@ import java.sql.ResultSet; import java.util.Date; import java.util.List; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; @@ -52,19 +53,22 @@ import com.cloud.utils.net.Ip; public class IPAddressDaoImpl extends GenericDaoBase implements IPAddressDao { private static final Logger s_logger = Logger.getLogger(IPAddressDaoImpl.class); - protected final SearchBuilder AllFieldsSearch; - protected final SearchBuilder VlanDbIdSearchUnallocated; - protected final GenericSearchBuilder AllIpCount; - protected final GenericSearchBuilder AllocatedIpCount; - protected final GenericSearchBuilder AllIpCountForDashboard; - protected final GenericSearchBuilder AllocatedIpCountForAccount; + protected SearchBuilder AllFieldsSearch; + protected SearchBuilder VlanDbIdSearchUnallocated; + protected GenericSearchBuilder AllIpCount; + protected GenericSearchBuilder AllocatedIpCount; + protected GenericSearchBuilder AllIpCountForDashboard; + protected GenericSearchBuilder AllocatedIpCountForAccount; @Inject protected VlanDaoImpl _vlanDao; protected GenericSearchBuilder CountFreePublicIps; @Inject ResourceTagsDaoImpl _tagsDao; - // make it public for JUnit test public IPAddressDaoImpl() { + } + + @PostConstruct + public void init() { AllFieldsSearch = createSearchBuilder(); AllFieldsSearch.and("id", AllFieldsSearch.entity().getId(), Op.EQ); AllFieldsSearch.and("dataCenterId", AllFieldsSearch.entity().getDataCenterId(), Op.EQ); diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index bb48e45e79e..9a21346c79b 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Random; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; import javax.persistence.TableGenerator; @@ -62,20 +63,20 @@ import com.cloud.utils.net.NetUtils; @Local(value = NetworkDao.class) @DB(txn = false) public class NetworkDaoImpl extends GenericDaoBase implements NetworkDao { - final SearchBuilder AllFieldsSearch; - final SearchBuilder AccountSearch; - final SearchBuilder RelatedConfigSearch; - final SearchBuilder AccountNetworkSearch; - final SearchBuilder ZoneBroadcastUriSearch; - final SearchBuilder ZoneSecurityGroupSearch; - final GenericSearchBuilder CountBy; - final SearchBuilder PhysicalNetworkSearch; - final SearchBuilder SecurityGroupSearch; - final GenericSearchBuilder NetworksRegularUserCanCreateSearch; - private final GenericSearchBuilder NetworksCount; - final SearchBuilder SourceNATSearch; - final GenericSearchBuilder CountByZoneAndURI; - final GenericSearchBuilder VpcNetworksCount; + SearchBuilder AllFieldsSearch; + SearchBuilder AccountSearch; + SearchBuilder RelatedConfigSearch; + SearchBuilder AccountNetworkSearch; + SearchBuilder ZoneBroadcastUriSearch; + SearchBuilder ZoneSecurityGroupSearch; + GenericSearchBuilder CountBy; + SearchBuilder PhysicalNetworkSearch; + SearchBuilder SecurityGroupSearch; + GenericSearchBuilder NetworksRegularUserCanCreateSearch; + GenericSearchBuilder NetworksCount; + SearchBuilder SourceNATSearch; + GenericSearchBuilder CountByZoneAndURI; + GenericSearchBuilder VpcNetworksCount; @Inject ResourceTagsDaoImpl _tagsDao; @@ -86,13 +87,15 @@ public class NetworkDaoImpl extends GenericDaoBase implements N @Inject NetworkOfferingDaoImpl _ntwkOffDao; - final TableGenerator _tgMacAddress; + TableGenerator _tgMacAddress; Random _rand = new Random(System.currentTimeMillis()); long _prefix = 0x2; - protected NetworkDaoImpl() { - super(); - + public NetworkDaoImpl() { + } + + @PostConstruct + protected void init() { AllFieldsSearch = createSearchBuilder(); AllFieldsSearch.and("trafficType", AllFieldsSearch.entity().getTrafficType(), Op.EQ); AllFieldsSearch.and("cidr", AllFieldsSearch.entity().getCidr(), Op.EQ); diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java index fbed9067298..2dbae756d0d 100644 --- a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java +++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java @@ -18,6 +18,7 @@ package com.cloud.network.dao; import java.util.List; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; @@ -41,11 +42,15 @@ public class Site2SiteVpnConnectionDaoImpl extends GenericDaoBase AllFieldsSearch; - private final SearchBuilder VpcSearch; - private final SearchBuilder VpnGatewaySearch; + private SearchBuilder AllFieldsSearch; + private SearchBuilder VpcSearch; + private SearchBuilder VpnGatewaySearch; - protected Site2SiteVpnConnectionDaoImpl() { + public Site2SiteVpnConnectionDaoImpl() { + } + + @PostConstruct + protected void init() { AllFieldsSearch = createSearchBuilder(); AllFieldsSearch.and("customerGatewayId", AllFieldsSearch.entity().getCustomerGatewayId(), SearchCriteria.Op.EQ); AllFieldsSearch.and("vpnGatewayId", AllFieldsSearch.entity().getVpnGatewayId(), SearchCriteria.Op.EQ); diff --git a/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java b/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java index 9a52d4c5f39..7868b3619d3 100644 --- a/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java +++ b/server/src/com/cloud/storage/dao/SnapshotDaoImpl.java @@ -20,6 +20,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.List; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; @@ -55,16 +56,16 @@ public class SnapshotDaoImpl extends GenericDaoBase implements private static final String GET_SECHOST_ID = "SELECT sechost_id FROM snapshots where volume_id = ? AND backup_snap_id IS NOT NULL AND sechost_id IS NOT NULL LIMIT 1"; private static final String UPDATE_SECHOST_ID = "UPDATE snapshots SET sechost_id = ? WHERE data_center_id = ?"; - private final SearchBuilder VolumeIdSearch; - private final SearchBuilder VolumeIdTypeSearch; - private final SearchBuilder ParentIdSearch; - private final SearchBuilder backupUuidSearch; - private final SearchBuilder VolumeIdVersionSearch; - private final SearchBuilder HostIdSearch; - private final SearchBuilder AccountIdSearch; - private final SearchBuilder InstanceIdSearch; - private final SearchBuilder StatusSearch; - private final GenericSearchBuilder CountSnapshotsByAccount; + private SearchBuilder VolumeIdSearch; + private SearchBuilder VolumeIdTypeSearch; + private SearchBuilder ParentIdSearch; + private SearchBuilder backupUuidSearch; + private SearchBuilder VolumeIdVersionSearch; + private SearchBuilder HostIdSearch; + private SearchBuilder AccountIdSearch; + private SearchBuilder InstanceIdSearch; + private SearchBuilder StatusSearch; + private GenericSearchBuilder CountSnapshotsByAccount; @Inject ResourceTagsDaoImpl _tagsDao; @Inject protected VMInstanceDaoImpl _instanceDao; @@ -141,7 +142,11 @@ public class SnapshotDaoImpl extends GenericDaoBase implements return listBy(sc, filter); } - protected SnapshotDaoImpl() { + public SnapshotDaoImpl() { + } + + @PostConstruct + protected void init() { VolumeIdSearch = createSearchBuilder(); VolumeIdSearch.and("volumeId", VolumeIdSearch.entity().getVolumeId(), SearchCriteria.Op.EQ); VolumeIdSearch.done(); diff --git a/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java b/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java index 20deaf12068..96c7446f8fd 100644 --- a/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java +++ b/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java @@ -22,12 +22,14 @@ import java.util.Map; import javax.ejb.Local; import javax.naming.ConfigurationException; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.cluster.ClusterManagerListener; import com.cloud.cluster.ManagementServerHostVO; @Component +@Primary @Local(value=VirtualMachineManager.class) public class ClusteredVirtualMachineManagerImpl extends VirtualMachineManagerImpl implements ClusterManagerListener { diff --git a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java index e1e748ee3b4..028c472c8e6 100755 --- a/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java +++ b/server/src/com/cloud/vm/dao/DomainRouterDaoImpl.java @@ -18,6 +18,7 @@ package com.cloud.vm.dao; import java.util.List; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; @@ -34,7 +35,6 @@ import com.cloud.offering.NetworkOffering; import com.cloud.offerings.dao.NetworkOfferingDaoImpl; import com.cloud.user.UserStatisticsVO; import com.cloud.user.dao.UserStatisticsDaoImpl; -import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.db.DB; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.JoinBuilder.JoinType; @@ -50,18 +50,22 @@ import com.cloud.vm.VirtualMachine.State; @Local(value = { DomainRouterDao.class }) public class DomainRouterDaoImpl extends GenericDaoBase implements DomainRouterDao { - protected final SearchBuilder AllFieldsSearch; - protected final SearchBuilder IdNetworkIdStatesSearch; - protected final SearchBuilder HostUpSearch; - protected final SearchBuilder StateNetworkTypeSearch; - protected final SearchBuilder OutsidePodSearch; + protected SearchBuilder AllFieldsSearch; + protected SearchBuilder IdNetworkIdStatesSearch; + protected SearchBuilder HostUpSearch; + protected SearchBuilder StateNetworkTypeSearch; + protected SearchBuilder OutsidePodSearch; @Inject HostDaoImpl _hostsDao; @Inject RouterNetworkDaoImpl _routerNetworkDao; @Inject UserStatisticsDaoImpl _userStatsDao; @Inject NetworkOfferingDaoImpl _offDao; - protected final SearchBuilder VpcSearch; + protected SearchBuilder VpcSearch; - protected DomainRouterDaoImpl() { + public DomainRouterDaoImpl() { + } + + @PostConstruct + protected void init() { AllFieldsSearch = createSearchBuilder(); AllFieldsSearch.and("dc", AllFieldsSearch.entity().getDataCenterIdToDeployIn(), Op.EQ); AllFieldsSearch.and("account", AllFieldsSearch.entity().getAccountId(), Op.EQ); diff --git a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index 84840041fb8..d97f4d78175 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.annotation.PostConstruct; import javax.ejb.Local; import javax.inject.Inject; @@ -65,20 +66,20 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem public static final Logger s_logger = Logger.getLogger(VMInstanceDaoImpl.class); - protected final SearchBuilder VMClusterSearch; - protected final SearchBuilder LHVMClusterSearch; - protected final SearchBuilder IdStatesSearch; - protected final SearchBuilder AllFieldsSearch; - protected final SearchBuilder ZoneTemplateNonExpungedSearch; - protected final SearchBuilder NameLikeSearch; - protected final SearchBuilder StateChangeSearch; - protected final SearchBuilder TransitionSearch; - protected final SearchBuilder TypesSearch; - protected final SearchBuilder IdTypesSearch; - protected final SearchBuilder HostIdTypesSearch; - protected final SearchBuilder HostIdUpTypesSearch; - protected final SearchBuilder HostUpSearch; - protected final GenericSearchBuilder CountVirtualRoutersByAccount; + protected SearchBuilder VMClusterSearch; + protected SearchBuilder LHVMClusterSearch; + protected SearchBuilder IdStatesSearch; + protected SearchBuilder AllFieldsSearch; + protected SearchBuilder ZoneTemplateNonExpungedSearch; + protected SearchBuilder NameLikeSearch; + protected SearchBuilder StateChangeSearch; + protected SearchBuilder TransitionSearch; + protected SearchBuilder TypesSearch; + protected SearchBuilder IdTypesSearch; + protected SearchBuilder HostIdTypesSearch; + protected SearchBuilder HostIdUpTypesSearch; + protected SearchBuilder HostUpSearch; + protected GenericSearchBuilder CountVirtualRoutersByAccount; protected GenericSearchBuilder CountRunningByHost; protected GenericSearchBuilder CountRunningByAccount; protected SearchBuilder NetworkTypeSearch; @@ -87,7 +88,7 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem @Inject ResourceTagsDaoImpl _tagsDao; @Inject NicDao _nicDao; - protected final Attribute _updateTimeAttr; + protected Attribute _updateTimeAttr; private static final String ORDER_CLUSTERS_NUMBER_OF_VMS_FOR_ACCOUNT_PART1 = "SELECT host.cluster_id, SUM(IF(vm.state='Running' AND vm.account_id = ?, 1, 0)) FROM `cloud`.`host` host LEFT JOIN `cloud`.`vm_instance` vm ON host.id = vm.host_id WHERE "; @@ -102,9 +103,13 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem " AND host.pod_id = ? AND host.cluster_id = ? AND host.type = 'Routing' " + " GROUP BY host.id ORDER BY 2 ASC "; - protected final HostDaoImpl _hostDao = ComponentLocator.inject(HostDaoImpl.class); + @Inject protected HostDaoImpl _hostDao; - protected VMInstanceDaoImpl() { + public VMInstanceDaoImpl() { + } + + @PostConstruct + protected void init() { IdStatesSearch = createSearchBuilder(); IdStatesSearch.and("id", IdStatesSearch.entity().getId(), Op.EQ);