public Object copyTo(ObjectLocator locator, Object target, CopyStrategy strategy) { final Object draftCopy = ((target == null) ? createNewInstance() : target); super.copyTo(locator, draftCopy, strategy); if (draftCopy instanceof MqttConnectionDetails) { final MqttConnectionDetails copy = ((MqttConnectionDetails) draftCopy); if ((this.serverURI != null) && (!this.serverURI.isEmpty())) { List<String> sourceServerURI; sourceServerURI = (((this.serverURI != null) && (!this.serverURI.isEmpty())) ? this.getServerURI() : null); @SuppressWarnings("unchecked") List<String> copyServerURI = ((List<String>) strategy.copy( LocatorUtils.property(locator, "serverURI", sourceServerURI), sourceServerURI)); copy.serverURI = null; if (copyServerURI != null) { List<String> uniqueServerURIl = copy.getServerURI(); uniqueServerURIl.addAll(copyServerURI); } } else { copy.serverURI = null; } if (this.webSocket != null) { Boolean sourceWebSocket; sourceWebSocket = this.isWebSocket(); Boolean copyWebSocket = ((Boolean) strategy.copy( LocatorUtils.property(locator, "webSocket", sourceWebSocket), sourceWebSocket)); copy.setWebSocket(copyWebSocket); } else { copy.webSocket = null; } if (this.clientID != null) { String sourceClientID; sourceClientID = this.getClientID(); String copyClientID = ((String) strategy.copy( LocatorUtils.property(locator, "clientID", sourceClientID), sourceClientID)); copy.setClientID(copyClientID); } else { copy.clientID = null; } if (this.userCredentials != null) { UserCredentials sourceUserCredentials; sourceUserCredentials = this.getUserCredentials(); UserCredentials copyUserCredentials = ((UserCredentials) strategy.copy( LocatorUtils.property(locator, "userCredentials", sourceUserCredentials), sourceUserCredentials)); copy.setUserCredentials(copyUserCredentials); } else { copy.userCredentials = null; } if (this.lastWillAndTestament != null) { SimpleMqttMessage sourceLastWillAndTestament; sourceLastWillAndTestament = this.getLastWillAndTestament(); SimpleMqttMessage copyLastWillAndTestament = ((SimpleMqttMessage) strategy.copy( LocatorUtils.property( locator, "lastWillAndTestament", sourceLastWillAndTestament), sourceLastWillAndTestament)); copy.setLastWillAndTestament(copyLastWillAndTestament); } else { copy.lastWillAndTestament = null; } if (this.cleanSession != null) { Boolean sourceCleanSession; sourceCleanSession = this.isCleanSession(); Boolean copyCleanSession = ((Boolean) strategy.copy( LocatorUtils.property(locator, "cleanSession", sourceCleanSession), sourceCleanSession)); copy.setCleanSession(copyCleanSession); } else { copy.cleanSession = null; } if (this.connectionTimeout != null) { Integer sourceConnectionTimeout; sourceConnectionTimeout = this.getConnectionTimeout(); Integer copyConnectionTimeout = ((Integer) strategy.copy( LocatorUtils.property(locator, "connectionTimeout", sourceConnectionTimeout), sourceConnectionTimeout)); copy.setConnectionTimeout(copyConnectionTimeout); } else { copy.connectionTimeout = null; } if (this.keepAliveInterval != null) { Integer sourceKeepAliveInterval; sourceKeepAliveInterval = this.getKeepAliveInterval(); Integer copyKeepAliveInterval = ((Integer) strategy.copy( LocatorUtils.property(locator, "keepAliveInterval", sourceKeepAliveInterval), sourceKeepAliveInterval)); copy.setKeepAliveInterval(copyKeepAliveInterval); } else { copy.keepAliveInterval = null; } if (this.ssl != null) { SecureSocketSettings sourceSSL; sourceSSL = this.getSSL(); SecureSocketSettings copySSL = ((SecureSocketSettings) strategy.copy(LocatorUtils.property(locator, "ssl", sourceSSL), sourceSSL)); copy.setSSL(copySSL); } else { copy.ssl = null; } if (this.reconnectionSettings != null) { ReconnectionSettings sourceReconnectionSettings; sourceReconnectionSettings = this.getReconnectionSettings(); ReconnectionSettings copyReconnectionSettings = ((ReconnectionSettings) strategy.copy( LocatorUtils.property( locator, "reconnectionSettings", sourceReconnectionSettings), sourceReconnectionSettings)); copy.setReconnectionSettings(copyReconnectionSettings); } else { copy.reconnectionSettings = null; } } return draftCopy; }