Skip to content

Commit

Permalink
[JENKINS-41871] provide new method to create config objects via confi…
Browse files Browse the repository at this point in the history
…gprovider
  • Loading branch information
imod committed Feb 10, 2017
1 parent 30fe123 commit 110ea60
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 60 deletions.
Expand Up @@ -8,6 +8,7 @@
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand All @@ -18,6 +19,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import hudson.util.ReflectionUtils;
import jenkins.model.Jenkins;

import org.jenkinsci.lib.configprovider.model.Config;
Expand Down Expand Up @@ -70,12 +72,6 @@ public String getProviderId() {
return getId();
}

@Override
@Deprecated // use org.jenkinsci.lib.configprovider.ConfigProvider.newConfig(java.lang.String)
public Config newConfig() {
String id = this.getProviderId() + "." + System.currentTimeMillis();
return new Config(id, null, null, null);
}

/**
* Saves the configuration info to the disk.
Expand Down
25 changes: 22 additions & 3 deletions src/main/java/org/jenkinsci/lib/configprovider/ConfigProvider.java
Expand Up @@ -30,11 +30,13 @@ of this software and associated documentation files (the "Software"), to deal
import hudson.ExtensionPoint;
import hudson.model.Descriptor;
import hudson.model.ItemGroup;
import hudson.util.ReflectionUtils;
import jenkins.model.Jenkins;
import org.jenkinsci.lib.configprovider.model.Config;
import org.jenkinsci.lib.configprovider.model.ContentType;
import org.jenkinsci.plugins.configfiles.GlobalConfigFiles;

import java.lang.reflect.Field;
import java.util.Collection;

/**
Expand Down Expand Up @@ -97,8 +99,11 @@ public static ConfigProvider getByIdOrNull(@Nullable String providerId) {
* @return the new config object, ready for editing.
* @deprecated use {@link #newConfig(String)}
*/
@Deprecated
public abstract Config newConfig();
@Deprecated // use org.jenkinsci.lib.configprovider.ConfigProvider.newConfig(java.lang.String)
public Config newConfig() {
String id = this.getProviderId() + "." + System.currentTimeMillis();
return newConfig(id);
}

/**
* Returns a new {@link Config} object.
Expand All @@ -113,8 +118,22 @@ public Config newConfig(@NonNull String id) {
throw new AbstractMethodError(getClass() + " MUST implement 'newConfig(String)'");
}

public abstract void clearOldDataStorage();
public Config newConfig(@NonNull String id, String name, String comment, String content) {
Config config = newConfig(id);
setField("name", name, config);
setField("comment", comment, config);
setField("content", content, config);
config.setProviderId(this.getProviderId());
return config;
}

private void setField(String fieldName, String value, Config config) {
Field field = ReflectionUtils.findField(config.getClass(), fieldName);
field.setAccessible(true);
ReflectionUtils.setField(field, config, value);
}

public abstract void clearOldDataStorage();

/**
* Tells whether this provider is able to handle configuration files stored on folder level too, or if it only supports global confuguration files.
Expand Down
Expand Up @@ -69,12 +69,6 @@ public <T extends Config> T convert(Config config) {
return (T) new CustomConfig(config.id, config.name, config.comment, config.content, getProviderId());
}

@Override
public CustomConfig newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new CustomConfig(id, "MyCustom", "", "");
}

@NonNull
@Override
public CustomConfig newConfig(@NonNull String id) {
Expand Down
Expand Up @@ -70,12 +70,6 @@ public <T extends Config> T convert(Config config) {
return (T) new GroovyScript(config.id, config.name, config.comment, config.content, getProviderId());
}

@Override
public Config newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new GroovyScript(id, "GroovyConfig", "", "println('hello world')");
}

@NonNull
@Override
public Config newConfig(@NonNull String id) {
Expand Down
Expand Up @@ -90,12 +90,6 @@ public String getDisplayName() {
return Messages.json_provider_name();
}

@Override
public Config newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new JsonConfig(id, "JsonConfig", "", "{}");
}

@NonNull
@Override
public Config newConfig(@NonNull String id) {
Expand Down
Expand Up @@ -37,12 +37,6 @@ of this software and associated documentation files (the "Software"), to deal
*/
public abstract class AbstractMavenSettingsProvider extends AbstractConfigProviderImpl {

@Override
public Config newConfig() {
String id = this.getProviderId() + System.currentTimeMillis();
return new Config(id, "MySettings", "", loadTemplateContent());
}

@Override
public ContentType getContentType() {
return ContentType.DefinedType.XML;
Expand Down
Expand Up @@ -87,12 +87,6 @@ public ContentType getContentType() {
public String getDisplayName() {
return Messages.mvn_global_settings_provider_name();
}

@Override
public Config newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new GlobalMavenSettingsConfig(id, "MyGlobalSettings", "global settings", loadTemplateContent(), GlobalMavenSettingsConfig.isReplaceAllDefault, Collections.<ServerCredentialMapping>emptyList());
}

@NonNull
@Override
Expand Down
Expand Up @@ -85,12 +85,6 @@ public String getDisplayName() {
return Messages.mvn_settings_provider_name();
}

@Override
public Config newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new MavenSettingsConfig(id, "MySettings", "user settings", loadTemplateContent(), MavenSettingsConfig.isReplaceAllDefault, Collections.<ServerCredentialMapping>emptyList());
}

@NonNull
@Override
public Config newConfig(@NonNull String id) {
Expand Down
Expand Up @@ -76,15 +76,6 @@ protected String getXmlFileName() {
return "maven-toolchains-files.xml";
}

/* (non-Javadoc)
* @see org.jenkinsci.lib.configprovider.AbstractConfigProviderImpl#newConfig()
*/
@Override
public Config newConfig() {
String id = this.getProviderId() + System.currentTimeMillis();
return new MavenToolchainsConfig(id, "MyToolchains", "", loadTemplateContent());
}

@NonNull
@Override
public Config newConfig(@NonNull String id) {
Expand Down
Expand Up @@ -64,12 +64,6 @@ public String getDisplayName() {
return Messages.xml_provider_name();
}

@Override
public Config newConfig() {
String id = getProviderId() + System.currentTimeMillis();
return new XmlConfig(id, "XmlConfig", "", "<root></root>");
}

@NonNull
@Override
public Config newConfig(@NonNull String id) {
Expand Down
@@ -1,5 +1,6 @@
package org.jenkinsci.lib.configprovider;

import org.jenkinsci.lib.configprovider.model.Config;
import org.jenkinsci.plugins.configfiles.GlobalConfigFiles;
import org.junit.Assert;
import org.junit.Rule;
Expand Down Expand Up @@ -30,4 +31,18 @@ public void testLoadAndMergeOldData() {
Assert.assertFalse(acp.getConfigXml().getFile().exists());
}
}


@Test
public void testDynamicCreationOfConfigs() {
for (ConfigProvider cp : ConfigProvider.all()) {
Config config = cp.newConfig("myid", "myname", "mycomment", "mycontent");
Assert.assertNotNull(config);
Assert.assertEquals(config.id,"myid");
Assert.assertEquals(config.name,"myname");
Assert.assertEquals(config.comment,"mycomment");
Assert.assertEquals(config.content,"mycontent");
Assert.assertNotNull(config.getProviderId());
}
}
}

0 comments on commit 110ea60

Please sign in to comment.