Ensure we're only creating a List of String objects for serialization

The issue (stacktrace below) was caused by a number of File objects making their way into
the yaml serialization tree

    * What went wrong:
    Execution failed for task ':serviceMetadataApi'.
    > expected NodeEvent, but got <com.fasterxml.jackson.dataformat.yaml.snakeyaml.events.DocumentEndEvent()>

    * Try:
    Run with --debug option to get more log output.

    * Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':serviceMetadataApi'.
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
            at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
            at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
            at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
            at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
            at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
            at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:296)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
            at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:86)
            at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
            at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
            at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
            at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
            at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
            at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:105)
            at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:85)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:81)
            at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
            at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:39)

            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
    BUILD FAILED
            at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)

            at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)
    Total time: 21.573 secs
            at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
            at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
            at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
            at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
            at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
            at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
            at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
            at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
            at org.gradle.launcher.Main.doAction(Main.java:33)
            at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
            at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
            at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
    Caused by: com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.EmitterException: expected NodeEvent, but got <com.fasterxml.jackson.dataformat.yaml.snakeyaml.events.DocumentEndEvent()>
            at com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.Emitter.expectNode(Emitter.java:409)
            at com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.Emitter.access$1600(Emitter.java:63)
            at com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.Emitter$ExpectBlockSequenceItem.expect(Emitter.                                                 java:596)
            at com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.Emitter$ExpectFirstBlockSequenceItem.expect(Emitter.java:577)
            at com.fasterxml.jackson.dataformat.yaml.snakeyaml.emitter.Emitter.emit(Emitter.java:217)
            at com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.close(YAMLGenerator.java:287)
            at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:2879)
            at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:2323)
            at com.fasterxml.jackson.databind.ObjectMapper$writeValueAsString.call(Unknown Source)
            at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
            at com.github.lookout.serviceartifact.Metadata.toYaml(Metadata.groovy:59)
            at com.github.lookout.serviceartifact.Metadata$toYaml.call(Unknown Source)
            at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
            at com.github.lookout.serviceartifact.AbstractComponent$_createCompressedTasks_closure1_closure6.doCall(AbstractComponent.groovy:54)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
            at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
            at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
            at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
            at groovy.lang.Closure.call(Closure.java:423)
            at groovy.lang.Closure.call(Closure.java:439)
            at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:539)
            at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:520)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
            ... 48 more

    jruby: FAILED
    gradleTest Compatibility Test Executor finished execuring tests
    1 compatibility tests failed.
    -------------------------------------
    gradleTest:jruby:2.0: FAILED
    -------------------------------------

    :gradleTest FAILED

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':gradleTest'.
    > One or more compatibility tests have failed. Check the screen output for now.

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 2 mins 20.045 secs
This commit is contained in:
R. Tyler Croy 2015-07-07 14:41:23 -07:00
parent 4477b81aba
commit f0d15fb989
No known key found for this signature in database
GPG Key ID: 1426C7DC3F51E16F
4 changed files with 30 additions and 8 deletions

View File

@ -109,7 +109,8 @@ gradleTest {
* according to ysb33r there's not enough of a difference in APIs between
* version 2.0->2.2 and 2.2->2.4 to be worth testing
*/
versions '2.0', '2.2', '2.4'
//versions '2.0', '2.2', '2.4'
versions '2.0'
dependsOn jar
}

View File

@ -16,8 +16,8 @@ buildscript {
/***********************************************************************/
/* These settings are only needed for Gradle Integration Testing */
classpath 'com.github.lookout:service-artifact-plugin:0.4.0'
//classpath fileTree('../../repo')
classpath 'com.github.lookout:service-artifact-plugin:%%VERSION%%'
classpath fileTree('../../repo')
/***********************************************************************/
}
}
@ -50,5 +50,5 @@ dependencies {
/* Only present for integration testing */
task runGradleTest {
dependsOn assembleService
dependsOn assemble
}

View File

@ -3,6 +3,8 @@ package com.github.lookout.serviceartifact
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import com.github.lookout.serviceartifact.metadata.Data
@ -10,6 +12,8 @@ import com.github.lookout.serviceartifact.metadata.Data
* Representation class for the metadata structure
*/
class Metadata {
protected ObjectMapper mapper = new ObjectMapper(new YAMLFactory())
protected Logger logger = LoggerFactory.getLogger(this.class)
class Service {
@JsonProperty
@ -25,6 +29,11 @@ class Metadata {
@JsonProperty
String version
String toString() {
return String.format("<Component@%d> \"%s\" \"%s\"",
hashCode(), this.name, this.version)
}
}
@JsonProperty
@ -46,7 +55,10 @@ class Metadata {
* @return This instance as a YAML String
*/
String toYaml() {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
logger.info("Writing the following structures to yaml")
logger.info("Service: ${this.service}")
logger.info("Component: ${this.component}")
logger.info("Data: ${this.data}")
return mapper.writeValueAsString(this)
}
}

View File

@ -1,5 +1,7 @@
package com.github.lookout.serviceartifact.metadata
import groovy.transform.TypeChecked
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.annotation.JsonIgnore
import org.gradle.api.Project
@ -11,6 +13,7 @@ import org.slf4j.LoggerFactory
* Container class for encapsulating some of the DSL configuration behavior
* behind the service { data { } } closure
*/
@TypeChecked
class Data {
protected Logger logger = LoggerFactory.getLogger(this.class)
protected Project project
@ -29,7 +32,7 @@ class Data {
* @param arguments list of String objects representing data components
*/
void dependencies(Object... arguments) {
this.dependencies.addAll(arguments)
this.dependencies.addAll(arguments as List<String>)
}
/**
@ -39,10 +42,11 @@ class Data {
void migrations(Object... arguments) {
arguments.each { Object argument ->
if (argument instanceof FileTree) {
this.migrations.addAll((argument as FileTree).files)
FileTree tree = argument as FileTree
this.migrations.addAll(tree.files.collect { File f -> f.absolutePath })
}
else {
this.migrations.add(argument)
this.migrations.add(argument as String)
}
}
}
@ -59,4 +63,9 @@ class Data {
FileTree fileTree(Map args) {
return project.fileTree(args)
}
String toString() {
return String.format("<Data@%d> %s (%s) - %s (%s)", hashCode(), this.dependencies, this.dependencies.class, this.migrations, this.dependencies.class)
}
}