io.fabric8.cxf.endpoint.FourSpacePrettyPrinter Maven / Gradle / Ivy
/**
* Copyright 2005-2016 Red Hat, Inc.
*
* Red Hat licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package io.fabric8.cxf.endpoint;
import java.io.IOException;
import java.util.Arrays;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
public class FourSpacePrettyPrinter extends DefaultPrettyPrinter {
public FourSpacePrettyPrinter() {
_objectIndenter = Lf4SpacesIndenter.INSTANCE;
}
public static class Lf4SpacesIndenter extends NopIndenter {
public static final Lf4SpacesIndenter INSTANCE = new Lf4SpacesIndenter();
private static final String SYS_LF;
private static int spacecount = 64;
private static char[] spaces = new char[spacecount];
static {
String lf = null;
try {
lf = System.getProperty("line.separator");
} catch (Throwable t) {
//
}
SYS_LF = (lf == null) ? "\n" : lf;
}
static {
Arrays.fill(spaces, ' ');
}
@Override
public boolean isInline() {
return false;
}
@Override
public void writeIndentation(JsonGenerator jg, int level) throws IOException, JsonGenerationException {
jg.writeRaw(SYS_LF);
if (level > 0) { // should we err on negative values (as there's some flaw?)
level = level * 4; // 4 spaces per level
while (level > spacecount) { // should never happen but...
jg.writeRaw(spaces, 0, spacecount);
level -= spaces.length;
}
jg.writeRaw(spaces, 0, level);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy