From ed7119b19406e64e08f924d9c1d990e16831bab4 Mon Sep 17 00:00:00 2001 From: Jean-Jacques Lafay Date: Fri, 30 Jan 2015 17:09:28 +0100 Subject: [PATCH] Add includeUserConfig option When users are mostly managed through LDAP (or more precisely Active Directory) there may be a lot of activity due to changes of the list of groups to which someone belongs (often just changing the order). Moreover, this is not useful, since the info is just always replaced with what's in AD. --- .../ScmSyncConfigurationPlugin.java | 7 +++++++ .../impl/UserConfigScmSyncStrategy.java | 20 +++++++++++++++++++ .../ScmSyncConfigurationXStreamConverter.java | 4 ++++ .../xstream/migration/AbstractMigrator.java | 9 +++++++-- .../xstream/migration/DefaultSSCPOJO.java | 9 +++++++++ .../migration/ScmSyncConfigurationPOJO.java | 2 ++ .../ScmSyncConfigurationPlugin/config.jelly | 10 ++++++++++ 7 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java b/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java index b4612674..49c36c23 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java @@ -113,6 +113,7 @@ public static interface AtomicTransactionFactory { // when commit occurs private String commitMessagePattern = "[message]"; private List filesModifiedByLastReload; + private boolean includeUserConfig = true; private List manualSynchronizationIncludes; public ScmSyncConfigurationPlugin(){ @@ -165,6 +166,7 @@ public void loadData(ScmSyncConfigurationPOJO pojo){ this.commitMessagePattern = pojo.getCommitMessagePattern(); this.manualSynchronizationIncludes = pojo.getManualSynchronizationIncludes(); this.business.setManualSynchronizationIncludes(manualSynchronizationIncludes); + this.includeUserConfig = pojo.isIncludeUserConfig(); } protected void initialInit() throws Exception { @@ -201,6 +203,7 @@ public void configure(StaplerRequest req, JSONObject formData) this.noUserCommitMessage = formData.getBoolean("noUserCommitMessage"); this.displayStatus = formData.getBoolean("displayStatus"); this.commitMessagePattern = req.getParameter("commitMessagePattern"); + this.includeUserConfig = formData.getBoolean("includeUserConfig"); String oldScmRepositoryUrl = this.scmRepositoryUrl; String scmType = req.getParameter("scm"); @@ -432,6 +435,10 @@ public boolean isDisplayStatus() { return displayStatus; } + public boolean isIncludeUserConfig() { + return includeUserConfig; + } + public String getCommitMessagePattern() { return commitMessagePattern; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java index d860ba8d..6e2450e1 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java @@ -4,6 +4,7 @@ import hudson.model.Item; import hudson.model.Saveable; import hudson.model.User; +import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin; import hudson.plugins.scm_sync_configuration.model.MessageWeight; import hudson.plugins.scm_sync_configuration.model.WeightedMessage; import hudson.plugins.scm_sync_configuration.strategies.AbstractScmSyncStrategy; @@ -11,6 +12,7 @@ import hudson.plugins.scm_sync_configuration.strategies.model.ConfigurationEntityMatcher; import hudson.plugins.scm_sync_configuration.strategies.model.PageMatcher; +import java.io.File; import java.util.List; import com.google.common.collect.ImmutableList; @@ -34,6 +36,24 @@ public UserConfigScmSyncStrategy(){ super(CONFIG_ENTITY_MATCHER, PAGE_MATCHERS); } + @Override + public boolean isSaveableApplicable(Saveable saveable, File file) { + if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){ + return false; + } else { + return super.isSaveableApplicable(saveable, file); + } + } + + @Override + public boolean isCurrentUrlApplicable(String url) { + if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){ + return false; + } else { + return super.isCurrentUrlApplicable(url); + } + } + @Override public CommitMessageFactory getCommitMessageFactory(){ return new CommitMessageFactory(){ diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java index ac5b7a5f..b5bd7fe4 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java @@ -85,6 +85,10 @@ public void marshal(Object source, HierarchicalStreamWriter writer, writer.endNode(); } + writer.startNode(AbstractMigrator.SCM_INCLUDE_USERCONFIG); + writer.setValue(Boolean.toString(plugin.isIncludeUserConfig())); + writer.endNode(); + if(plugin.getManualSynchronizationIncludes() != null){ writer.startNode(AbstractMigrator.SCM_MANUAL_INCLUDES); for(String include : plugin.getManualSynchronizationIncludes()){ diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java index 408473c3..e7ef50e8 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java @@ -17,6 +17,7 @@ public abstract class AbstractMigrator manualIncludes = null; while(reader.hasMoreChildren()){ @@ -56,6 +58,8 @@ public TTO readScmSyncConfigurationPOJO( scmContent = reader.getValue(); } else if(SCM_COMMIT_MESSAGE_PATTERN.equals(reader.getNodeName())){ commitMessagePattern = reader.getValue(); + } else if(SCM_INCLUDE_USERCONFIG.equals(reader.getNodeName())){ + includeUserConfig = Boolean.parseBoolean(reader.getValue()); } else if(SCM_MANUAL_INCLUDES.equals(reader.getNodeName())){ manualIncludes = new ArrayList(); while(reader.hasMoreChildren()){ @@ -71,14 +75,15 @@ public TTO readScmSyncConfigurationPOJO( } reader.moveUp(); } - + pojo.setScm(createSCMFrom(scmClassAttribute, scmContent)); pojo.setScmRepositoryUrl(scmRepositoryUrl); pojo.setNoUserCommitMessage(noUserCommitMessage); pojo.setDisplayStatus(displayStatus); pojo.setCommitMessagePattern(commitMessagePattern); pojo.setManualSynchronizationIncludes(manualIncludes); - + pojo.setIncludeUserConfig(includeUserConfig); + return pojo; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java index f592157c..ca9a23f6 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java @@ -11,6 +11,7 @@ public class DefaultSSCPOJO implements ScmSyncConfigurationPOJO { private boolean noUserCommitMessage; private boolean displayStatus; private String commitMessagePattern; + private boolean includeUserConfig; private List manualSynchronizationIncludes; public String getScmRepositoryUrl() { @@ -46,6 +47,14 @@ public void setCommitMessagePattern(String commitMessagePattern) { this.commitMessagePattern = commitMessagePattern; } + public boolean isIncludeUserConfig() { + return includeUserConfig; + } + + public void setIncludeUserConfig(boolean includeUserConfig) { + this.includeUserConfig = includeUserConfig; + } + public void setManualSynchronizationIncludes(List _manualSynchronizationIncludes){ this.manualSynchronizationIncludes = _manualSynchronizationIncludes; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java index eea89608..a89434e5 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java @@ -21,4 +21,6 @@ public interface ScmSyncConfigurationPOJO { public void setCommitMessagePattern(String commitMessagePattern); public List getManualSynchronizationIncludes(); public void setManualSynchronizationIncludes(List manualSynchronizationIncludes); + public boolean isIncludeUserConfig(); + public void setIncludeUserConfig(boolean includeUserConfig); } diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly index 043a21a3..1ac1d45d 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly @@ -34,6 +34,16 @@ + + + + + + + + + +