Loading Configs in Groovy

86 views
Skip to first unread message

Jay Flowers

unread,
Mar 29, 2012, 9:46:14 PM3/29/12
to jenkins...@googlegroups.com
I am interested in being able to configure Jenkins through Groovy.  It would be nice to be able to load up the object model in code from the xml config files.  I unzipped the war web-inf lib dir and placed it in the classpath for Groovy.  I had to remove the the asm-2.2.3.jar from the classpath to resolve a conflict.  I get the following error message:

Caught: com.thoughtworks.xstream.mapper.CannotResolveClassException: project : project

Here is the code and then the full exception:

def xStream = new hudson.util.XStream2()
def config = new hudson.XmlFile(xStream, new File('C:/Temp/config.xml'))
def job = config.read()
println job.getClass().name


C:\Projects\Jenkins-DSL\jdsl-core\src\test\groovy>groovy Scratch.groovy
Caught: com.thoughtworks.xstream.mapper.CannotResolveClassException: project : project
com.thoughtworks.xstream.mapper.CannotResolveClassException: project : project
        at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at hudson.util.XStream2$CompatibilityMapper.realClass(XStream2.java:215)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at hudson.util.xstream.MapperDelegate.realClass(MapperDelegate.java:43)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:56)
        at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        at hudson.XmlFile$read.call(Unknown Source)
        at Scratch.run(Scratch.groovy:18)


--
Jay Flowers
----------------------------------------------------------------------
http://jayflowers.com
---------------------------------------------------------------------

Jay Flowers

unread,
Mar 30, 2012, 9:08:55 AM3/30/12
to jenkins...@googlegroups.com
I added the following code to get past that issue:

xStream.alias("project",FreeStyleProject.class)
xStream.alias("matrix-project",MatrixProject.class)
xStream.alias("axis", Axis.class)
xStream.alias("matrix-config",MatrixConfiguration.class)

Now it complains cause the plugin classes are not loaded in the class loader.  Anyone know of an easy way to load the plugins?

C:\Projects\Jenkins-DSL\jdsl-core\src\test\groovy>groovy Scratch.groovy
Mar 30, 2012 8:57:39 AM hudson.util.CopyOnWriteList$ConverterImpl unmarshal
WARNING: Failed to resolve class
com.thoughtworks.xstream.mapper.CannotResolveClassException: com.nirima.AdaptivePluginProperty : com.nirima.AdaptivePlug
inProperty
        at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConver
ter.java:70)
        at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:193)
        at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:172)
        at hudson.util.XStream2$AssociatedConverterImpl.unmarshal(XStream2.java:297)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:292)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:234)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:181)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        at hudson.XmlFile$read.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at Scratch.run(Scratch.groovy:23)
        at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
        at groovy.lang.GroovyShell.run(GroovyShell.java:229)
        at groovy.lang.GroovyShell.run(GroovyShell.java:159)
        at groovy.ui.GroovyMain.processOnce(GroovyMain.java:550)
        at groovy.ui.GroovyMain.run(GroovyMain.java:337)
        at groovy.ui.GroovyMain.process(GroovyMain.java:323)
        at groovy.ui.GroovyMain.processArgs(GroovyMain.java:120)
        at groovy.ui.GroovyMain.main(GroovyMain.java:101)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Mar 30, 2012 8:57:39 AM hudson.util.RobustReflectionConverter doUnmarshal
WARNING: Skipping a non-existent type
com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.scm.SubversionSCM : hudson.scm.SubversionSCM
        at hudson.util.RobustReflectionConverter.determineType(RobustReflectionConverter.java:360)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:230)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:181)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        at hudson.XmlFile$read.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at Scratch.run(Scratch.groovy:23)
        at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
        at groovy.lang.GroovyShell.run(GroovyShell.java:229)
        at groovy.lang.GroovyShell.run(GroovyShell.java:159)
        at groovy.ui.GroovyMain.processOnce(GroovyMain.java:550)
        at groovy.ui.GroovyMain.run(GroovyMain.java:337)
        at groovy.ui.GroovyMain.process(GroovyMain.java:323)
        at groovy.ui.GroovyMain.processArgs(GroovyMain.java:120)
        at groovy.ui.GroovyMain.main(GroovyMain.java:101)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Mar 30, 2012 8:57:39 AM hudson.util.CopyOnWriteList$ConverterImpl unmarshal
WARNING: Failed to resolve class
com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.plugins.groovy.SystemGroovy : hudson.plugins.groovy.
SystemGroovy
        at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConver
ter.java:70)
        at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:193)
        at hudson.util.DescribableList$ConverterImpl.unmarshal(DescribableList.java:244)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:292)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:234)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:181)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        at hudson.XmlFile$read.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at Scratch.run(Scratch.groovy:23)
        at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
        at groovy.lang.GroovyShell.run(GroovyShell.java:229)
        at groovy.lang.GroovyShell.run(GroovyShell.java:159)
        at groovy.ui.GroovyMain.processOnce(GroovyMain.java:550)
        at groovy.ui.GroovyMain.run(GroovyMain.java:337)
        at groovy.ui.GroovyMain.process(GroovyMain.java:323)
        at groovy.ui.GroovyMain.processArgs(GroovyMain.java:120)
        at groovy.ui.GroovyMain.main(GroovyMain.java:101)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Mar 30, 2012 8:57:39 AM hudson.util.CopyOnWriteList$ConverterImpl unmarshal
WARNING: Failed to resolve class
com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.plugins.execution.exclusive.ExclusiveBuildWrapper :
hudson.plugins.execution.exclusive.ExclusiveBuildWrapper
        at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConver
ter.java:70)
        at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:193)
        at hudson.util.DescribableList$ConverterImpl.unmarshal(DescribableList.java:244)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:292)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:234)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:181)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        at hudson.XmlFile$read.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at Scratch.run(Scratch.groovy:23)
        at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
        at groovy.lang.GroovyShell.run(GroovyShell.java:229)
        at groovy.lang.GroovyShell.run(GroovyShell.java:159)
        at groovy.ui.GroovyMain.processOnce(GroovyMain.java:550)
        at groovy.ui.GroovyMain.run(GroovyMain.java:337)
        at groovy.ui.GroovyMain.process(GroovyMain.java:323)
        at groovy.ui.GroovyMain.processArgs(GroovyMain.java:120)
        at groovy.ui.GroovyMain.main(GroovyMain.java:101)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Caught: hudson.util.IOException2: Unable to read C:\Temp\config.xml
hudson.util.IOException2: Unable to read C:\Temp\config.xml
        at hudson.XmlFile.read(XmlFile.java:137)
        at hudson.XmlFile$read.call(Unknown Source)
        at Scratch.run(Scratch.groovy:23)
Caused by: com.thoughtworks.xstream.converters.ConversionException: null : null
---- Debugging information ----
cause-exception     : java.lang.NullPointerException
cause-message       : null
class               : hudson.model.FreeStyleProject
required-type       : hudson.model.FreeStyleProject
path                : /project
line number         : 76
-------------------------------
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:
33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:926)
        at hudson.util.XStream2.unmarshal(XStream2.java:93)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:912)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:864)
        at hudson.XmlFile.read(XmlFile.java:133)
        ... 2 more
Caused by: java.lang.NullPointerException
        at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:177)
        at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:271)
        at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:181)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        ... 12 more
Reply all
Reply to author
Forward
0 new messages