CLOUDSTACK-7168: Revert "Fixed Coverity Issues reported" that broke CI

This reverts commit 4523490d44160b054de9e943f72db1d0ce06054a.
This commit is contained in:
amoghvk 2014-07-23 11:37:36 -07:00
parent bb1c70b3d8
commit c804660c74
11 changed files with 189 additions and 168 deletions

View File

@ -225,8 +225,8 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
Iterator iter = parameterCollection.iterator();
while (iter.hasNext()) {
HashMap<String, String> value = (HashMap<String, String>)iter.next();
for (Map.Entry<String,String> entry: value.entrySet()) {
customparameterMap.put(entry.getKey(),entry.getValue());
for (String key : value.keySet()) {
customparameterMap.put(key, value.get(key));
}
}
}

View File

@ -18,6 +18,7 @@ package com.cloud.storage.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -169,25 +170,36 @@ public class VMTemplatePoolDaoImpl extends GenericDaoBase<VMTemplateStoragePoolV
@Override
public List<VMTemplateStoragePoolVO> listByTemplateStatus(long templateId, long datacenterId, long podId, VMTemplateStoragePoolVO.Status downloadState) {
TransactionLegacy txn = TransactionLegacy.currentTxn();
PreparedStatement pstmt = null;
List<VMTemplateStoragePoolVO> result = new ArrayList<VMTemplateStoragePoolVO>();
String sql = DOWNLOADS_STATE_DC_POD;
try(PreparedStatement pstmt = txn.prepareStatement(sql);) {
ResultSet rs = null;
try {
String sql = DOWNLOADS_STATE_DC_POD;
pstmt = txn.prepareStatement(sql);
pstmt.setLong(1, datacenterId);
pstmt.setLong(2, podId);
pstmt.setLong(3, templateId);
pstmt.setString(4, downloadState.toString());
try(ResultSet rs = pstmt.executeQuery();) {
while (rs.next()) {
// result.add(toEntityBean(rs, false)); TODO: this is buggy in
// GenericDaoBase for hand constructed queries
long id = rs.getLong(1); // ID column
result.add(findById(id));
}
}catch (Exception e) {
s_logger.warn("Exception: ", e);
rs = pstmt.executeQuery();
while (rs.next()) {
// result.add(toEntityBean(rs, false)); TODO: this is buggy in
// GenericDaoBase for hand constructed queries
long id = rs.getLong(1); // ID column
result.add(findById(id));
}
} catch (Exception e) {
s_logger.warn("Exception: ", e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
}
}
return result;
@ -195,23 +207,34 @@ public class VMTemplatePoolDaoImpl extends GenericDaoBase<VMTemplateStoragePoolV
public List<VMTemplateStoragePoolVO> listByHostTemplate(long hostId, long templateId) {
TransactionLegacy txn = TransactionLegacy.currentTxn();
PreparedStatement pstmt = null;
List<VMTemplateStoragePoolVO> result = new ArrayList<VMTemplateStoragePoolVO>();
String sql = HOST_TEMPLATE_SEARCH;
try(PreparedStatement pstmt = txn.prepareStatement(sql);) {
ResultSet rs = null;
try {
String sql = HOST_TEMPLATE_SEARCH;
pstmt = txn.prepareStatement(sql);
pstmt.setLong(1, hostId);
pstmt.setLong(2, templateId);
try(ResultSet rs = pstmt.executeQuery();) {
while (rs.next()) {
// result.add(toEntityBean(rs, false)); TODO: this is buggy in
// GenericDaoBase for hand constructed queries
long id = rs.getLong(1); // ID column
result.add(findById(id));
}
}catch (Exception e) {
s_logger.warn("Exception: ", e);
rs = pstmt.executeQuery();
while (rs.next()) {
// result.add(toEntityBean(rs, false)); TODO: this is buggy in
// GenericDaoBase for hand constructed queries
long id = rs.getLong(1); // ID column
result.add(findById(id));
}
} catch (Exception e) {
s_logger.warn("Exception: ", e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
}
}
return result;

View File

@ -22,7 +22,6 @@ import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
@ -81,8 +80,8 @@ public class Upgrade440to450 implements DbUpgrade {
uniqueKeys.put("storage_pool", keys);
s_logger.debug("Droping id_2 key from storage_pool table");
for (Map.Entry<String, List<String>> entry: uniqueKeys.entrySet()) {
DbUpgradeUtils.dropKeysIfExist(conn,entry.getKey(), entry.getValue(), false);
for (String tableName : uniqueKeys.keySet()) {
DbUpgradeUtils.dropKeysIfExist(conn, tableName, uniqueKeys.get(tableName), false);
}
}
}

View File

@ -115,21 +115,33 @@ public class DefaultEndPointSelector implements EndPointSelector {
// TODO: order by rand() is slow if there are lot of hosts
sbuilder.append(" ORDER by rand() limit 1");
String sql = sbuilder.toString();
PreparedStatement pstmt = null;
ResultSet rs = null;
HostVO host = null;
TransactionLegacy txn = TransactionLegacy.currentTxn();
try(PreparedStatement pstmt = txn.prepareStatement(sql);) {
try {
pstmt = txn.prepareStatement(sql);
pstmt.setLong(1, poolId);
try(ResultSet rs = pstmt.executeQuery();) {
while (rs.next()) {
long id = rs.getLong(1);
host = hostDao.findById(id);
}
}catch (SQLException e) {
s_logger.warn("can't find endpoint", e);
rs = pstmt.executeQuery();
while (rs.next()) {
long id = rs.getLong(1);
host = hostDao.findById(id);
}
} catch (SQLException e) {
s_logger.warn("can't find endpoint", e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
}
}
if (host == null) {
return null;
}

View File

@ -1464,9 +1464,8 @@ public class VolumeServiceImpl implements VolumeService {
}
// Delete volumes which are not present on DB.
for (Map.Entry<Long,TemplateProp> entry : volumeInfos.entrySet()) {
Long uniqueName = entry.getKey();
TemplateProp tInfo = entry.getValue();
for (Long uniqueName : volumeInfos.keySet()) {
TemplateProp tInfo = volumeInfos.get(uniqueName);
//we cannot directly call expungeVolumeAsync here to
// reuse delete logic since in this case, our db does not have

View File

@ -104,16 +104,16 @@ public class BridgeVifDriver extends VifDriverBase {
String trafficLabel = nic.getName();
if (nic.getType() == Networks.TrafficType.Guest) {
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) && (vNetId != null) && (protocol != null) && (!vNetId.equalsIgnoreCase("untagged")) ||
(nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan)) {
if (trafficLabel != null && !trafficLabel.isEmpty()) {
s_logger.debug("creating a vNet dev and bridge for guest traffic per traffic label " + trafficLabel);
String brName = createVnetBr(vNetId, trafficLabel, protocol);
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
} else {
String brName = createVnetBr(vNetId, "private", protocol);
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
}
if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vNetId.equalsIgnoreCase("untagged") ||
nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan) {
if (trafficLabel != null && !trafficLabel.isEmpty()) {
s_logger.debug("creating a vNet dev and bridge for guest traffic per traffic label " + trafficLabel);
String brName = createVnetBr(vNetId, trafficLabel, protocol);
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
} else {
String brName = createVnetBr(vNetId, "private", protocol);
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
}
} else {
intf.defBridgeNet(_bridges.get("guest"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter), networkRateKBps);
}
@ -123,8 +123,8 @@ public class BridgeVifDriver extends VifDriverBase {
intf.defBridgeNet(_bridges.get("linklocal"), null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
} else if (nic.getType() == Networks.TrafficType.Public) {
Integer networkRateKBps = (nic.getNetworkRateMbps() != null && nic.getNetworkRateMbps().intValue() != -1) ? nic.getNetworkRateMbps().intValue() * 128 : 0;
if ((nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan) && (vNetId != null) && (protocol != null) && (!vNetId.equalsIgnoreCase("untagged")) ||
(nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan)) {
if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vlan && !vNetId.equalsIgnoreCase("untagged") ||
nic.getBroadcastType() == Networks.BroadcastDomainType.Vxlan) {
if (trafficLabel != null && !trafficLabel.isEmpty()) {
s_logger.debug("creating a vNet dev and bridge for public traffic per traffic label " + trafficLabel);
String brName = createVnetBr(vNetId, trafficLabel, protocol);

View File

@ -1026,24 +1026,20 @@ public class ApiResponseHelper implements ResponseGenerator {
IpAddress ip = ApiDBUtils.findIpAddressById(fwRule.getSourceIpAddressId());
response.setPublicIpAddressId(ip.getUuid());
response.setPublicIpAddress(ip.getAddress().addr());
if (ip != null)
{
response.setPublicIpAddressId(ip.getUuid());
response.setPublicIpAddress(ip.getAddress().addr());
if (fwRule.getDestinationIpAddress() != null)
{
response.setDestNatVmIp(fwRule.getDestinationIpAddress().toString());
UserVm vm = ApiDBUtils.findUserVmById(fwRule.getVirtualMachineId());
if (vm != null) {
response.setVirtualMachineId(vm.getUuid());
response.setVirtualMachineName(vm.getHostName());
if (ip != null && fwRule.getDestinationIpAddress() != null) {
response.setDestNatVmIp(fwRule.getDestinationIpAddress().toString());
UserVm vm = ApiDBUtils.findUserVmById(fwRule.getVirtualMachineId());
if (vm != null) {
response.setVirtualMachineId(vm.getUuid());
response.setVirtualMachineName(vm.getHostName());
if (vm.getDisplayName() != null) {
response.setVirtualMachineDisplayName(vm.getDisplayName());
} else {
response.setVirtualMachineDisplayName(vm.getHostName());
}
if (vm.getDisplayName() != null) {
response.setVirtualMachineDisplayName(vm.getDisplayName());
} else {
response.setVirtualMachineDisplayName(vm.getHostName());
}
}
}
@ -1075,20 +1071,18 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setProtocol(fwRule.getProtocol());
IpAddress ip = ApiDBUtils.findIpAddressById(fwRule.getSourceIpAddressId());
response.setPublicIpAddressId(ip.getId());
response.setPublicIpAddress(ip.getAddress().addr());
if (ip != null) {
response.setPublicIpAddressId(ip.getId());
response.setPublicIpAddress(ip.getAddress().addr());
if (fwRule.getDestIpAddress() != null) {
UserVm vm = ApiDBUtils.findUserVmById(ip.getAssociatedWithVmId());
if (vm != null) {// vm might be destroyed
response.setVirtualMachineId(vm.getUuid());
response.setVirtualMachineName(vm.getHostName());
if (vm.getDisplayName() != null) {
response.setVirtualMachineDisplayName(vm.getDisplayName());
} else {
response.setVirtualMachineDisplayName(vm.getHostName());
}
if (ip != null && fwRule.getDestIpAddress() != null) {
UserVm vm = ApiDBUtils.findUserVmById(ip.getAssociatedWithVmId());
if (vm != null) {// vm might be destroyed
response.setVirtualMachineId(vm.getUuid());
response.setVirtualMachineName(vm.getHostName());
if (vm.getDisplayName() != null) {
response.setVirtualMachineDisplayName(vm.getDisplayName());
} else {
response.setVirtualMachineDisplayName(vm.getHostName());
}
}
}
@ -1707,9 +1701,7 @@ public class ApiResponseHelper implements ResponseGenerator {
Map<Service, Set<Provider>> serviceProviderMap = ApiDBUtils.listNetworkOfferingServices(offering.getId());
List<ServiceResponse> serviceResponses = new ArrayList<ServiceResponse>();
for (Map.Entry<Service,Set<Provider>> entry : serviceProviderMap.entrySet()) {
Service service = entry.getKey();
Set<Provider> srvc_providers = entry.getValue();
for (Service service : serviceProviderMap.keySet()) {
ServiceResponse svcRsp = new ServiceResponse();
// skip gateway service
if (service == Service.Gateway) {
@ -1717,7 +1709,7 @@ public class ApiResponseHelper implements ResponseGenerator {
}
svcRsp.setName(service.getName());
List<ProviderResponse> providers = new ArrayList<ProviderResponse>();
for (Provider provider : srvc_providers) {
for (Provider provider : serviceProviderMap.get(service)) {
if (provider != null) {
ProviderResponse providerRsp = new ProviderResponse();
providerRsp.setName(provider.getName());
@ -1964,9 +1956,8 @@ public class ApiResponseHelper implements ResponseGenerator {
Domain domain = ApiDBUtils.findDomainById(dedicatedDomainId);
if (domain != null) {
response.setDomainId(domain.getUuid());
response.setDomainName(domain.getName());
}
response.setDomainName(domain.getName());
}
response.setSpecifyIpRanges(network.getSpecifyIpRanges());
@ -2572,10 +2563,7 @@ public class ApiResponseHelper implements ResponseGenerator {
Map<Service, Set<Provider>> serviceProviderMap = ApiDBUtils.listVpcOffServices(offering.getId());
List<ServiceResponse> serviceResponses = new ArrayList<ServiceResponse>();
for (Map.Entry<Service, Set<Provider>> entry : serviceProviderMap.entrySet()) {
Service service = entry.getKey();
Set<Provider> srvc_providers = entry.getValue();
for (Service service : serviceProviderMap.keySet()) {
ServiceResponse svcRsp = new ServiceResponse();
// skip gateway service
if (service == Service.Gateway) {
@ -2583,7 +2571,7 @@ public class ApiResponseHelper implements ResponseGenerator {
}
svcRsp.setName(service.getName());
List<ProviderResponse> providers = new ArrayList<ProviderResponse>();
for (Provider provider : srvc_providers) {
for (Provider provider : serviceProviderMap.get(service)) {
if (provider != null) {
ProviderResponse providerRsp = new ProviderResponse();
providerRsp.setName(provider.getName());
@ -3126,6 +3114,7 @@ public class ApiResponseHelper implements ResponseGenerator {
} else if (usageRecord.getUsageType() == UsageTypes.TEMPLATE || usageRecord.getUsageType() == UsageTypes.ISO) {
//Template/ISO ID
VMTemplateVO tmpl = _entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, usageRecord.getUsageId().toString());
usageRecResponse.setUsageId(tmpl.getUuid());
if (tmpl != null) {
usageRecResponse.setUsageId(tmpl.getUuid());
}
@ -3400,11 +3389,10 @@ public class ApiResponseHelper implements ResponseGenerator {
//set Lb instances information
List<ApplicationLoadBalancerInstanceResponse> instanceResponses = new ArrayList<ApplicationLoadBalancerInstanceResponse>();
for (Map.Entry<Ip,UserVm> entry : lbInstances.entrySet()) {
Ip ip = entry.getKey();
UserVm vm = entry.getValue();
for (Ip ip : lbInstances.keySet()) {
ApplicationLoadBalancerInstanceResponse instanceResponse = new ApplicationLoadBalancerInstanceResponse();
instanceResponse.setIpAddress(ip.addr());
UserVm vm = lbInstances.get(ip);
instanceResponse.setId(vm.getUuid());
instanceResponse.setName(vm.getInstanceName());
instanceResponse.setObjectName("loadbalancerinstance");

View File

@ -144,8 +144,10 @@ public class ApiXmlDocWriter {
}
for (String fileName : fileNames) {
try(FileInputStream in = new FileInputStream(fileName);) {
try {
FileInputStream in = new FileInputStream(fileName);
preProcessedCommands.load(in);
in.close();
} catch (FileNotFoundException ex) {
System.out.println("Can't find file " + fileName);
System.exit(2);
@ -593,17 +595,14 @@ public class ApiXmlDocWriter {
addDir(files[i], out);
continue;
}
try(FileInputStream in = new FileInputStream(files[i].getPath());) {
out.putNextEntry(new ZipEntry(files[i].getPath().substring(pathToDir.length())));
int len;
while ((len = in.read(tmpBuf)) > 0) {
out.write(tmpBuf, 0, len);
}
out.closeEntry();
}catch(IOException ex)
{
s_logger.error("addDir:Exception:"+ ex.getMessage(),ex);
FileInputStream in = new FileInputStream(files[i].getPath());
out.putNextEntry(new ZipEntry(files[i].getPath().substring(pathToDir.length())));
int len;
while ((len = in.read(tmpBuf)) > 0) {
out.write(tmpBuf, 0, len);
}
out.closeEntry();
in.close();
}
}
@ -620,7 +619,8 @@ public class ApiXmlDocWriter {
private static void writeAlertTypes(String dirName) {
XStream xs = new XStream();
xs.alias("alert", Alert.class);
try(ObjectOutputStream out = xs.createObjectOutputStream(new FileWriter(dirName + "/alert_types.xml"), "alerts");) {
try {
ObjectOutputStream out = xs.createObjectOutputStream(new FileWriter(dirName + "/alert_types.xml"), "alerts");
for (Field f : AlertManager.class.getFields()) {
if (f.getClass().isAssignableFrom(Number.class)) {
String name = f.getName().substring(11);
@ -628,6 +628,7 @@ public class ApiXmlDocWriter {
out.writeObject(alert);
}
}
out.close();
} catch (IOException e) {
s_logger.error("Failed to create output stream to write an alert types ", e);
} catch (IllegalAccessException e) {

View File

@ -136,6 +136,7 @@ import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.User;
import com.cloud.utils.StringUtils;
import com.cloud.utils.UriUtils;
import com.cloud.utils.component.Manager;
@ -322,29 +323,29 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
String eventName;
for (ResourceListener l : lst) {
if (event.equals(ResourceListener.EVENT_DISCOVER_BEFORE)) {
if (event == ResourceListener.EVENT_DISCOVER_BEFORE) {
l.processDiscoverEventBefore((Long)params[0], (Long)params[1], (Long)params[2], (URI)params[3], (String)params[4], (String)params[5],
(List<String>)params[6]);
eventName = "EVENT_DISCOVER_BEFORE";
} else if (event.equals(ResourceListener.EVENT_DISCOVER_AFTER)) {
} else if (event == ResourceListener.EVENT_DISCOVER_AFTER) {
l.processDiscoverEventAfter((Map<? extends ServerResource, Map<String, String>>)params[0]);
eventName = "EVENT_DISCOVER_AFTER";
} else if (event.equals(ResourceListener.EVENT_DELETE_HOST_BEFORE)) {
} else if (event == ResourceListener.EVENT_DELETE_HOST_BEFORE) {
l.processDeleteHostEventBefore((HostVO)params[0]);
eventName = "EVENT_DELETE_HOST_BEFORE";
} else if (event.equals(ResourceListener.EVENT_DELETE_HOST_AFTER)) {
} else if (event == ResourceListener.EVENT_DELETE_HOST_AFTER) {
l.processDeletHostEventAfter((HostVO)params[0]);
eventName = "EVENT_DELETE_HOST_AFTER";
} else if (event.equals(ResourceListener.EVENT_CANCEL_MAINTENANCE_BEFORE)) {
} else if (event == ResourceListener.EVENT_CANCEL_MAINTENANCE_BEFORE) {
l.processCancelMaintenaceEventBefore((Long)params[0]);
eventName = "EVENT_CANCEL_MAINTENANCE_BEFORE";
} else if (event.equals(ResourceListener.EVENT_CANCEL_MAINTENANCE_AFTER)) {
} else if (event == ResourceListener.EVENT_CANCEL_MAINTENANCE_AFTER) {
l.processCancelMaintenaceEventAfter((Long)params[0]);
eventName = "EVENT_CANCEL_MAINTENANCE_AFTER";
} else if (event.equals(ResourceListener.EVENT_PREPARE_MAINTENANCE_BEFORE)) {
} else if (event == ResourceListener.EVENT_PREPARE_MAINTENANCE_BEFORE) {
l.processPrepareMaintenaceEventBefore((Long)params[0]);
eventName = "EVENT_PREPARE_MAINTENANCE_BEFORE";
} else if (event.equals(ResourceListener.EVENT_PREPARE_MAINTENANCE_AFTER)) {
} else if (event == ResourceListener.EVENT_PREPARE_MAINTENANCE_AFTER) {
l.processPrepareMaintenaceEventAfter((Long)params[0]);
eventName = "EVENT_PREPARE_MAINTENANCE_AFTER";
} else {
@ -797,7 +798,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
@DB
protected boolean doDeleteHost(final long hostId, boolean isForced, final boolean isForceDeleteStorage) {
_accountMgr.getActiveUser(CallContext.current().getCallingUserId());
User caller = _accountMgr.getActiveUser(CallContext.current().getCallingUserId());
// Verify that host exists
final HostVO host = _hostDao.findById(hostId);
if (host == null) {
@ -1462,7 +1463,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
Map.Entry<String, ResourceStateAdapter> item = it.next();
ResourceStateAdapter adapter = item.getValue();
String msg = "Dispatching resource state event " + event + " to " + item.getKey();
String msg = new String("Dispatching resource state event " + event + " to " + item.getKey());
s_logger.debug(msg);
if (event == ResourceStateAdapter.Event.CREATE_HOST_VO_FOR_CONNECTED) {

View File

@ -1221,9 +1221,9 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio
defaultVpcNetworkOfferingProviders.put(Service.PortForwarding, Provider.VPCVirtualRouter);
defaultVpcNetworkOfferingProviders.put(Service.Vpn, Provider.VPCVirtualRouter);
for (Map.Entry<Service,Provider> entry : defaultVpcNetworkOfferingProviders.entrySet()) {
NetworkOfferingServiceMapVO offService =
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworks.getId(), entry.getKey(), entry.getValue());
for (Service service : defaultVpcNetworkOfferingProviders.keySet()) {
NetworkOfferingServiceMapVO offService =
new NetworkOfferingServiceMapVO(defaultNetworkOfferingForVpcNetworks.getId(), service, defaultVpcNetworkOfferingProviders.get(service));
_ntwkOfferingServiceMapDao.persist(offService);
s_logger.trace("Added service for the network offering: " + offService);
}

View File

@ -48,63 +48,61 @@ public class NioClient extends NioConnection {
@Override
protected void init() throws IOException {
_selector = Selector.open();
SocketChannel sch = null;
InetSocketAddress addr = null;
try(SocketChannel sch = SocketChannel.open();) {
try {
sch.configureBlocking(true);
s_logger.info("Connecting to " + _host + ":" + _port);
if (_bindAddress != null) {
s_logger.info("Binding outbound interface at " + _bindAddress);
try {
sch = SocketChannel.open();
sch.configureBlocking(true);
s_logger.info("Connecting to " + _host + ":" + _port);
addr = new InetSocketAddress(_bindAddress, 0);
sch.socket().bind(addr);
}
if (_bindAddress != null) {
s_logger.info("Binding outbound interface at " + _bindAddress);
addr = new InetSocketAddress(_host, _port);
sch.connect(addr);
} catch (IOException e) {
_selector.close();
throw e;
}
SSLEngine sslEngine = null;
try {
// Begin SSL handshake in BLOCKING mode
sch.configureBlocking(true);
SSLContext sslContext = Link.initSSLContext(true);
sslEngine = sslContext.createSSLEngine(_host, _port);
sslEngine.setUseClientMode(true);
Link.doHandshake(sch, sslEngine, true);
s_logger.info("SSL: Handshake done");
s_logger.info("Connected to " + _host + ":" + _port);
} catch (Exception e) {
_selector.close();
throw new IOException("SSL: Fail to init SSL! " + e);
addr = new InetSocketAddress(_bindAddress, 0);
sch.socket().bind(addr);
}
Task task = null;
try {
sch.configureBlocking(false);
Link link = new Link(addr, this);
link.setSSLEngine(sslEngine);
SelectionKey key = sch.register(_selector, SelectionKey.OP_READ);
link.setKey(key);
key.attach(link);
// Notice we've already connected due to the handshake, so let's get the
// remaining task done
task = _factory.create(Task.Type.CONNECT, link, null);
} catch (Exception e) {
_selector.close();
throw new IOException("Fail to init NioClient! " + e);
}
_executor.execute(task);
}catch(IOException ex)
{
s_logger.error("NioClient:init:Exception:"+ex.getMessage());
throw new IOException("NioClient:init:Exception:"+ex.getMessage(),ex);
addr = new InetSocketAddress(_host, _port);
sch.connect(addr);
} catch (IOException e) {
_selector.close();
throw e;
}
SSLEngine sslEngine = null;
try {
// Begin SSL handshake in BLOCKING mode
sch.configureBlocking(true);
SSLContext sslContext = Link.initSSLContext(true);
sslEngine = sslContext.createSSLEngine(_host, _port);
sslEngine.setUseClientMode(true);
Link.doHandshake(sch, sslEngine, true);
s_logger.info("SSL: Handshake done");
s_logger.info("Connected to " + _host + ":" + _port);
} catch (Exception e) {
_selector.close();
throw new IOException("SSL: Fail to init SSL! " + e);
}
Task task = null;
try {
sch.configureBlocking(false);
Link link = new Link(addr, this);
link.setSSLEngine(sslEngine);
SelectionKey key = sch.register(_selector, SelectionKey.OP_READ);
link.setKey(key);
key.attach(link);
// Notice we've already connected due to the handshake, so let's get the
// remaining task done
task = _factory.create(Task.Type.CONNECT, link, null);
} catch (Exception e) {
_selector.close();
throw new IOException("Fail to init NioClient! " + e);
}
_executor.execute(task);
}
@Override