Gradle 3.2.1, flat map for XContentBuilder

This commit is contained in:
Jörg Prante 2016-12-07 15:37:41 +01:00
parent ae7934381c
commit 73afbd806f
15 changed files with 81 additions and 19 deletions

View file

@ -4,17 +4,15 @@ plugins {
id "org.xbib.gradle.plugin.jbake" version "1.2.1" id "org.xbib.gradle.plugin.jbake" version "1.2.1"
} }
ext { ext {
versions = [ versions = [
'jackson' : '2.8.4' 'jackson' : '2.8.4'
] ]
} }
allprojects { apply plugin: 'build-dashboard'
group = 'org.xbib' allprojects {
version = '1.0.6'
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'maven' apply plugin: 'maven'
@ -42,7 +40,7 @@ allprojects {
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
tasks.withType(JavaCompile) { tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-profile" << "compact2" options.compilerArgs << "-Xlint:all" << "-profile" << "compact1"
} }
test { test {

View file

@ -766,6 +766,15 @@ public final class XContentBuilder implements ToXContent, Flushable, Closeable {
return this; return this;
} }
public XContentBuilder flatMap(Map<String, String> map) throws IOException {
if (map == null) {
return nullValue();
}
writeFlatMap(map);
return this;
}
public XContentBuilder value(Iterable<?> value) throws IOException { public XContentBuilder value(Iterable<?> value) throws IOException {
if (value == null) { if (value == null) {
return nullValue(); return nullValue();
@ -825,6 +834,20 @@ public final class XContentBuilder implements ToXContent, Flushable, Closeable {
generator.writeEndObject(); generator.writeEndObject();
} }
private void writeFlatMap(Map<String, String> map) throws IOException {
generator.writeStartObject();
for (Map.Entry<String, String> entry : map.entrySet()) {
field(entry.getKey());
Object value = entry.getValue();
if (value == null) {
generator.writeNull();
} else {
writeValue(value);
}
}
generator.writeEndObject();
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void writeValue(Object value) throws IOException { private void writeValue(Object value) throws IOException {
if (value == null) { if (value == null) {

View file

@ -96,7 +96,7 @@ public class BytesStreamOutput extends OutputStream {
if (length == 0) { if (length == 0) {
return; return;
} }
if ((long)count + length > Integer.MAX_VALUE) { if ((long) count + length > Integer.MAX_VALUE) {
throw new IllegalArgumentException("overflow, stream output larger than " + Integer.MAX_VALUE); throw new IllegalArgumentException("overflow, stream output larger than " + Integer.MAX_VALUE);
} }
int newcount = count + length; int newcount = count + length;

View file

@ -3,9 +3,13 @@ package org.xbib.content.settings;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.xbib.content.XContentBuilder;
import org.xbib.content.XContentHelper; import org.xbib.content.XContentHelper;
import org.xbib.content.json.JsonSettingsLoader;
import org.xbib.content.json.JsonXContent;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
@ -102,4 +106,21 @@ public class SettingsTest extends Assert {
.build(); .build();
assertEquals("{a.b=c}", settings.getAsMap().toString()); assertEquals("{a.b=c}", settings.getAsMap().toString());
} }
@Test
public void testFlatLoader() throws IOException {
String s = "{\"a\":{\"b\":\"c\"}}";
JsonSettingsLoader loader = new JsonSettingsLoader();
Map<String, String> flatMap = loader.load(s);
assertEquals("{a.b=c}", flatMap.toString());
}
@Test
public void testFlatLoaderToJsonString() throws IOException {
String s = "{\"a\":{\"b\":\"c\"}}";
JsonSettingsLoader loader = new JsonSettingsLoader();
String result = JsonXContent.contentBuilder().flatMap(loader.load(s)).string();
assertEquals("{\"a.b\":\"c\"}", result);
}
} }

View file

@ -1,3 +1,7 @@
dependencies { dependencies {
compile project(':content-xml') compile project(':content-xml')
} }
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-profile" << "compact2"
}

View file

@ -4,6 +4,7 @@ import java.io.IOException;
/** /**
* *
* @param <R> parameter type
*/ */
public interface RdfContentParser<R extends RdfContentParams> { public interface RdfContentParser<R extends RdfContentParams> {

View file

@ -0,0 +1,4 @@
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-profile" << "compact2"
}

View file

@ -3,3 +3,8 @@ dependencies {
compile project(':content-resource') compile project(':content-resource')
compile "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${versions.jackson}" compile "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${versions.jackson}"
} }
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:all" << "-profile" << "compact2"
}

3
gradle.properties Normal file
View file

@ -0,0 +1,3 @@
group = org.xbib
name = content
version = 1.0.7

Binary file not shown.

View file

@ -1,6 +1,6 @@
#Mon Oct 03 00:03:03 CEST 2016 #Sat Dec 03 23:47:13 CET 2016
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-all.zip

19
gradlew vendored
View file

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env sh
############################################################################## ##############################################################################
## ##
@ -154,16 +154,19 @@ if $cygwin ; then
esac esac
fi fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules # Escape application args
function splitJvmOpts() { save ( ) {
JVM_OPTS=("$@") for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
} }
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS APP_ARGS=$(save "$@")
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")" cd "$(dirname "$0")"
fi fi
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" exec "$JAVACMD" "$@"

View file

@ -1,4 +1,4 @@
rootProject.name = 'content' rootProject.name = name
include 'content-core' include 'content-core'
include 'content-resource' include 'content-resource'
include 'content-language' include 'content-language'