diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java index b839acf88a..2ae405db7c 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java @@ -115,5 +115,7 @@ public interface IConfigurationService { * @return */ public boolean isMasterToMaster(); + + public boolean isMasterToMasterOnly(); } \ No newline at end of file diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java index e1d59766a9..ee79b80a2c 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java @@ -104,6 +104,15 @@ public boolean isMasterToMaster() { return masterToMaster; } + public boolean isMasterToMasterOnly() { + boolean masterToMasterOnly = false; + Node me = nodeService.findIdentity(); + if (me != null) { + masterToMasterOnly = sqlTemplate.queryForInt(getSql("countGroupLinksForSql"), me.getNodeGroupId(), me.getNodeGroupId()) == 1; + } + return masterToMasterOnly; + } + public boolean refreshFromDatabase() { Date date1 = sqlTemplate.queryForObject(getSql("selectMaxChannelLastUpdateTime"), Date.class); diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationServiceSqlMap.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationServiceSqlMap.java index 2021b5727e..eda7620dcb 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationServiceSqlMap.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationServiceSqlMap.java @@ -65,6 +65,8 @@ public ConfigurationServiceSqlMap(IDatabasePlatform platform, "select source_node_group_id, target_node_group_id, data_event_action, sync_config_enabled, last_update_time, last_update_by, create_time from " + " $(node_group_link) where source_node_group_id = ? "); + putSql("countGroupLinksForSql","select count(*) from $(node_group_link) where source_node_group_id = ? or target_node_group_id = ?"); + putSql("isChannelInUseSql", "select count(*) from $(trigger) where channel_id = ? "); putSql("selectChannelsSql", diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java index b027937d02..c6be3ab98d 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RegistrationService.java @@ -540,8 +540,8 @@ protected String openRegistration(Node node, String remoteHost, String remoteAdd node.setNodeId(nodeId); node.setSyncEnabled(false); - boolean masterToMaster = configurationService.isMasterToMaster(); - node.setCreatedAtNodeId(masterToMaster ? null: me.getNodeId()); + boolean masterToMasterOnly = configurationService.isMasterToMasterOnly(); + node.setCreatedAtNodeId(masterToMasterOnly ? null: me.getNodeId()); nodeService.save(node); // make sure there isn't a node security row lying around w/out @@ -550,7 +550,7 @@ protected String openRegistration(Node node, String remoteHost, String remoteAdd String password = extensionService.getExtensionPoint(INodeIdCreator.class).generatePassword(node); password = filterPasswordOnSaveIfNeeded(password); sqlTemplate.update(getSql("openRegistrationNodeSecuritySql"), new Object[] { - nodeId, password, masterToMaster ? null : me.getNodeId() }); + nodeId, password, masterToMasterOnly ? null : me.getNodeId() }); nodeService.insertNodeGroup(node.getNodeGroupId(), null); log.info( "Just opened registration for external id of {} and a node group of {} and a node id of {}",