All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.codingmatters.poom.ci.dependency.api.json.RepositoryDeleteRequestReader Maven / Gradle / Ivy
package org.codingmatters.poom.ci.dependency.api.json;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.IOException;
import java.lang.FunctionalInterface;
import java.lang.String;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.codingmatters.poom.ci.dependency.api.RepositoryDeleteRequest;
import org.codingmatters.poom.ci.dependency.api.RepositoryDeleteRequest.Builder;
public class RepositoryDeleteRequestReader {
private static Set REPOSITORYID_EXPECTEDTOKENS = new HashSet(Arrays.asList(JsonToken.VALUE_STRING));
public RepositoryDeleteRequest read(JsonParser parser) throws IOException {
if(parser.getCurrentToken() == null) {
parser.nextToken();
}
if(parser.currentToken() == JsonToken.VALUE_NULL) return null;
if(parser.currentToken() != JsonToken.START_OBJECT) {
throw new IOException(
String.format("reading a %s object, was expecting %s, but was %s",
RepositoryDeleteRequest.class.getName(), JsonToken.START_OBJECT, parser.currentToken()
)
);
}
RepositoryDeleteRequest.Builder builder = RepositoryDeleteRequest.builder();
while (parser.nextToken() != JsonToken.END_OBJECT) {
Token token = Token.from(parser.getCurrentName());
if(token != null) {
switch (token) {
case REPOSITORYID: {
Set expectedTokens = REPOSITORYID_EXPECTEDTOKENS;
builder.repositoryId(this.readValue(parser, jsonParser -> jsonParser.getText(), "repositoryId", expectedTokens));
break;
}
default: {
this.consumeUnexpectedProperty(parser);
}
}
} else {
this.consumeUnexpectedProperty(parser);
}
}
return builder.build();
}
public RepositoryDeleteRequest[] readArray(JsonParser parser) throws IOException {
parser.nextToken();
if (parser.currentToken() == JsonToken.VALUE_NULL) return null;
if (parser.currentToken() == JsonToken.START_ARRAY) {
LinkedList listValue = new LinkedList<>();
while (parser.nextToken() != JsonToken.END_ARRAY) {
if(parser.currentToken() == JsonToken.VALUE_NULL) {
listValue.add(null);
} else {
listValue.add(this.read(parser));
}
}
return listValue.toArray(new RepositoryDeleteRequest[listValue.size()]);
}
throw new IOException(String.format("failed reading org.codingmatters.poom.ci.dependency.api.RepositoryDeleteRequest array, current token was %s", parser.currentToken()));
}
private T readValue(JsonParser parser, Reader reader, String propertyName, Set expectedTokens) throws IOException {
parser.nextToken();
if (parser.currentToken() == JsonToken.VALUE_NULL) return null;
if (expectedTokens.contains(parser.currentToken())) return reader.read(parser);
throw new IOException(
String.format("reading property %s, was expecting %s, but was %s",
propertyName, expectedTokens, parser.currentToken()
)
);
}
private List readListValue(JsonParser parser, Reader reader, String propertyName) throws IOException {
parser.nextToken();
if (parser.currentToken() == JsonToken.VALUE_NULL) return null;
if (parser.currentToken() == JsonToken.START_ARRAY) {
LinkedList listValue = new LinkedList<>();
while (parser.nextToken() != JsonToken.END_ARRAY) {
if(parser.currentToken() == JsonToken.VALUE_NULL) {
listValue.add(null);
} else {
listValue.add(reader.read(parser));
}
}
return listValue;
}
throw new IOException(
String.format("reading property %s, was expecting %s, but was %s",
propertyName, JsonToken.START_ARRAY, parser.currentToken()
)
);
}
private void consumeUnexpectedProperty(JsonParser parser) throws IOException {
parser.nextToken();
if(parser.currentToken().isStructStart()) {
int level = 1;
do {
parser.nextToken();
if (parser.currentToken().isStructStart()) {
level++;
} if (parser.currentToken().isStructEnd()) {
level--;
}
} while(level > 0);
}
}
@FunctionalInterface
private interface Reader {
T read(JsonParser parser) throws IOException;
}
enum Token {
__UNKNOWN__("__UNKNOWN__", "__UNKNOWN__"),
REPOSITORYID("repositoryId", "repositoryId");
private final String name;
private final String rawName;
Token(String name, String rawName) {
this.name = name;
this.rawName = rawName;
}
private static String normalizeFieldName(String fieldName) {
if(fieldName == null) return null;
if(fieldName.trim().equals("")) return "";
fieldName = Arrays.stream(fieldName.split("(\\s|-)+")).map(s -> s.substring(0, 1).toUpperCase() + s.substring(1)).collect(Collectors.joining());
fieldName = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
return fieldName;
}
public static Token from(String str) {
for(Token token : Token.values()) {
if(token.name.equals(str)) {
return token;
} else if(token.rawName.equals(str)) {
return token;
} else if(token.name.equals(normalizeFieldName(str))) {
return token;
} else if(token.rawName.equals(normalizeFieldName(str))) {
return token;
}
}
return __UNKNOWN__;
}
}
}