diff --git a/.travis.yml b/.travis.yml index b2cb03d9c..42a14bef6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java jdk: - - openjdk7 + - openjdk8 - openjdk9 - openjdk10 - openjdk11 diff --git a/modello-maven-plugin/src/it/features/pom.xml b/modello-maven-plugin/src/it/features/pom.xml index b336a2a61..df3223590 100644 --- a/modello-maven-plugin/src/it/features/pom.xml +++ b/modello-maven-plugin/src/it/features/pom.xml @@ -125,10 +125,11 @@ maven-javadoc-plugin - 3.0.1 + 3.1.1 private true + 1.7 diff --git a/modello-maven-plugin/src/it/javadoc/pom.xml b/modello-maven-plugin/src/it/javadoc/pom.xml index 0de70ed2d..f5955056d 100644 --- a/modello-maven-plugin/src/it/javadoc/pom.xml +++ b/modello-maven-plugin/src/it/javadoc/pom.xml @@ -7,6 +7,10 @@ javadoc 0.1-SNAPSHOT + + 1.7 + + org.codehaus.plexus diff --git a/modello-maven-plugin/src/it/snakeyaml/invoker.properties b/modello-maven-plugin/src/it/snakeyaml/invoker.properties new file mode 100644 index 000000000..e3ae08259 --- /dev/null +++ b/modello-maven-plugin/src/it/snakeyaml/invoker.properties @@ -0,0 +1 @@ +invoker.java.version = 1.5+ diff --git a/modello-maven-plugin/src/it/snakeyaml/pom.xml b/modello-maven-plugin/src/it/snakeyaml/pom.xml new file mode 100644 index 000000000..59c267caf --- /dev/null +++ b/modello-maven-plugin/src/it/snakeyaml/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.codehaus.modello.its + snakeyaml + 0.1-SNAPSHOT + + + + org.codehaus.modello + modello-plugin-snakeyaml + @project.version@ + + + + + + test + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + @java.version@ + @java.version@ + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + + org.codehaus.modello + modello-maven-plugin + @project.version@ + + 1.0.0 + true + + src/main/mdo/model.mdo + + + + + standard + + java + snakeyaml-writer + + + + + + + diff --git a/modello-maven-plugin/src/it/snakeyaml/src/main/mdo/model.mdo b/modello-maven-plugin/src/it/snakeyaml/src/main/mdo/model.mdo new file mode 100644 index 000000000..4b01e9643 --- /dev/null +++ b/modello-maven-plugin/src/it/snakeyaml/src/main/mdo/model.mdo @@ -0,0 +1,37 @@ + + + + model + Model + + + package + org.plexus.modello.demo.model + + + + + + Root + 1.0.0+ + + + simpleField + String + 1.0.0+ + + + + + diff --git a/modello-maven-plugin/src/it/snakeyaml/src/test/java/org/plexus/modello/demo/model/RootTest.java b/modello-maven-plugin/src/it/snakeyaml/src/test/java/org/plexus/modello/demo/model/RootTest.java new file mode 100644 index 000000000..9320a7d2d --- /dev/null +++ b/modello-maven-plugin/src/it/snakeyaml/src/test/java/org/plexus/modello/demo/model/RootTest.java @@ -0,0 +1,35 @@ +package org.plexus.modello.demo.model; + +import org.plexus.modello.demo.model.io.snakeyaml.*; + +import java.io.*; + +public class RootTest { + private static Root createRoot(String fieldValue) { + Root r = new Root(); + r.setSimpleField(fieldValue); + return r; + } + + private static String asYamlString(Root root) throws IOException { + ModelSnakeYamlWriter writer = new ModelSnakeYamlWriter(); + + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + OutputStreamWriter osw = new OutputStreamWriter(baos)) { + writer.write(osw, root); + return baos.toString(); + } + } + + public void testWritingYaml() throws IOException { + Root root = createRoot("modello IT"); + + String rootAsYaml = asYamlString(root); + + String expected = "%YAML 1.1" + "\n" // directive used to identify the version of YAML + + "---" + "\n" // document separator + + "\"simpleField\": \"modello IT\"" + "\n"; // actual Root + assert expected.equals(rootAsYaml): "Actual: [" + rootAsYaml + "]"; + } +} + diff --git a/modello-plugins/modello-plugin-snakeyaml/pom.xml b/modello-plugins/modello-plugin-snakeyaml/pom.xml index d88f6bd1c..b422f47f4 100644 --- a/modello-plugins/modello-plugin-snakeyaml/pom.xml +++ b/modello-plugins/modello-plugin-snakeyaml/pom.xml @@ -24,7 +24,7 @@ org.yaml snakeyaml - 1.12 + 1.25 diff --git a/modello-plugins/modello-plugin-snakeyaml/src/main/java/org/codehaus/modello/plugin/snakeyaml/SnakeYamlWriterGenerator.java b/modello-plugins/modello-plugin-snakeyaml/src/main/java/org/codehaus/modello/plugin/snakeyaml/SnakeYamlWriterGenerator.java index 1d2833a68..ff528dbe8 100644 --- a/modello-plugins/modello-plugin-snakeyaml/src/main/java/org/codehaus/modello/plugin/snakeyaml/SnakeYamlWriterGenerator.java +++ b/modello-plugins/modello-plugin-snakeyaml/src/main/java/org/codehaus/modello/plugin/snakeyaml/SnakeYamlWriterGenerator.java @@ -82,8 +82,11 @@ private void generateSnakeYamlWriter() jClass.addImport( "org.yaml.snakeyaml.DumperOptions" ); jClass.addImport( "org.yaml.snakeyaml.DumperOptions.Version" ); + jClass.addImport( "org.yaml.snakeyaml.DumperOptions.FlowStyle" ); + jClass.addImport( "org.yaml.snakeyaml.DumperOptions.ScalarStyle" ); jClass.addImport( "org.yaml.snakeyaml.emitter.Emitable" ); jClass.addImport( "org.yaml.snakeyaml.emitter.Emitter" ); + jClass.addImport( "org.yaml.snakeyaml.error.Mark" ); jClass.addImport( "org.yaml.snakeyaml.events.DocumentEndEvent" ); jClass.addImport( "org.yaml.snakeyaml.events.DocumentStartEvent" ); jClass.addImport( "org.yaml.snakeyaml.events.ImplicitTuple" ); @@ -199,7 +202,7 @@ private void writeClass( ModelClass modelClass, JClass jClass ) JSourceCode sc = marshall.getSourceCode(); - sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, false ) );" ); + sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, FlowStyle.BLOCK ) );" ); ModelField contentField = null; @@ -361,7 +364,7 @@ private void writeClass( ModelClass modelClass, JClass jClass ) } else { - sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, false ) );" ); + sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, FlowStyle.BLOCK ) );" ); } @@ -406,7 +409,7 @@ private void writeClass( ModelClass modelClass, JClass jClass ) if ( xmlAssociationMetadata.isMapExplode() ) { - sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, false ) );" ); + sc.add( "generator.emit( new MappingStartEvent( null, null, true, null, null, FlowStyle.BLOCK) );" ); writeScalarKey( sc, "key" ); writeScalar( sc, "key" ); writeScalarKey( sc, "value" ); @@ -463,9 +466,16 @@ private void writeScalarKey( JSourceCode sc, String key ) private void writeScalar( JSourceCode sc, String value ) { - sc.add( "generator.emit( new ScalarEvent( null, null, new ImplicitTuple( true, true ), " + sc.add( "{" ); + sc.indent(); + sc.add( "String anchor = null, tag = null;" ); + sc.add( "Mark startMark = null, endMark = null;" ); + sc.add( "ScalarStyle style = ScalarStyle.DOUBLE_QUOTED;" ); + sc.add( "generator.emit( new ScalarEvent( anchor, tag, new ImplicitTuple( true, true ), " + value - + ", null, null, ' ' ) );" ); + + ", startMark, endMark, style ) );" ); + sc.unindent(); + sc.add( "}" ); } }