|
1 | 1 | /*
|
2 |
| - * Copyright 2021-2023 DiffPlug |
| 2 | + * Copyright 2021-2024 DiffPlug |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
15 | 15 | */
|
16 | 16 | package com.diffplug.spotless.json;
|
17 | 17 |
|
18 |
| -import java.io.IOException; |
19 | 18 | import java.io.Serializable;
|
20 | 19 | import java.lang.reflect.Constructor;
|
21 | 20 | import java.lang.reflect.InvocationTargetException;
|
|
25 | 24 | import com.diffplug.spotless.FormatterStep;
|
26 | 25 | import com.diffplug.spotless.JarState;
|
27 | 26 | import com.diffplug.spotless.Provisioner;
|
| 27 | +import com.diffplug.spotless.RoundedStep; |
28 | 28 |
|
29 | 29 | /**
|
30 | 30 | * Simple YAML formatter which reformats the file according to Jackson YAMLFactory.
|
31 | 31 | */
|
32 | 32 | // https://stackoverflow.com/questions/14515994/convert-json-string-to-pretty-print-json-output-using-jackson
|
33 |
| -public class JacksonJsonStep { |
34 |
| - static final String MAVEN_COORDINATE = "com.fasterxml.jackson.core:jackson-databind:"; |
35 |
| - // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind |
36 |
| - static final String DEFAULT_VERSION = "2.14.2"; |
| 33 | +public class JacksonJsonStep implements RoundedStep { |
| 34 | + private static final long serialVersionUID = 1L; |
| 35 | + private static final String MAVEN_COORDINATE = "com.fasterxml.jackson.core:jackson-databind:"; |
| 36 | + private static final String DEFAULT_VERSION = "2.14.2"; |
| 37 | + public static final String NAME = "jacksonJson"; |
37 | 38 |
|
38 |
| - private JacksonJsonStep() {} |
| 39 | + private final JarState.Promised jarState; |
| 40 | + private final JacksonConfig jacksonConfig; |
| 41 | + |
| 42 | + private JacksonJsonStep(JarState.Promised jarState, JacksonConfig jacksonConfig) { |
| 43 | + this.jarState = jarState; |
| 44 | + this.jacksonConfig = jacksonConfig; |
| 45 | + } |
39 | 46 |
|
40 | 47 | public static String defaultVersion() {
|
41 | 48 | return DEFAULT_VERSION;
|
42 | 49 | }
|
43 | 50 |
|
| 51 | + public static FormatterStep create(Provisioner provisioner) { |
| 52 | + return create(new JacksonJsonConfig(), defaultVersion(), provisioner); |
| 53 | + } |
| 54 | + |
44 | 55 | public static FormatterStep create(JacksonJsonConfig jacksonConfig,
|
45 | 56 | String jacksonVersion,
|
46 | 57 | Provisioner provisioner) {
|
47 | 58 | Objects.requireNonNull(provisioner, "provisioner cannot be null");
|
48 |
| - return FormatterStep.createLazy("json", |
49 |
| - () -> new State(jacksonConfig, jacksonVersion, provisioner), |
| 59 | + return FormatterStep.create(NAME, |
| 60 | + new JacksonJsonStep(JarState.promise(() -> JarState.from(MAVEN_COORDINATE + jacksonVersion, provisioner)), jacksonConfig), |
| 61 | + JacksonJsonStep::equalityState, |
50 | 62 | State::toFormatter);
|
51 | 63 | }
|
52 | 64 |
|
53 |
| - public static FormatterStep create(Provisioner provisioner) { |
54 |
| - return create(new JacksonJsonConfig(), defaultVersion(), provisioner); |
| 65 | + private State equalityState() { |
| 66 | + return new State(jarState.get(), jacksonConfig); |
55 | 67 | }
|
56 | 68 |
|
57 | 69 | private static final class State implements Serializable {
|
58 | 70 | private static final long serialVersionUID = 1L;
|
59 | 71 |
|
60 | 72 | private final JacksonConfig jacksonConfig;
|
61 |
| - |
62 | 73 | private final JarState jarState;
|
63 | 74 |
|
64 |
| - private State(JacksonConfig jacksonConfig, |
65 |
| - String jacksonVersion, |
66 |
| - Provisioner provisioner) throws IOException { |
| 75 | + State(JarState jarState, JacksonConfig jacksonConfig) { |
| 76 | + this.jarState = jarState; |
67 | 77 | this.jacksonConfig = jacksonConfig;
|
68 |
| - |
69 |
| - this.jarState = JarState.from(JacksonJsonStep.MAVEN_COORDINATE + jacksonVersion, provisioner); |
70 | 78 | }
|
71 | 79 |
|
72 | 80 | FormatterFunc toFormatter() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
|
|
0 commit comments