|
3 | 3 | import javax.lang.model.element.TypeElement;
|
4 | 4 |
|
5 | 5 | import static io.avaje.jsonb.generator.ProcessingContext.element;
|
| 6 | +import static io.avaje.jsonb.generator.ProcessingContext.logError; |
6 | 7 |
|
7 | 8 | import java.util.ArrayList;
|
8 | 9 | import java.util.List;
|
@@ -139,18 +140,29 @@ static String initLower(String name) {
|
139 | 140 |
|
140 | 141 | /** Return the base type given the JsonAdapter type. */
|
141 | 142 | static String baseTypeOfAdapter(String adapterFullName) {
|
142 |
| - TypeElement element = element(adapterFullName); |
| 143 | + final var element = element(adapterFullName); |
143 | 144 | if (element == null) {
|
144 | 145 | throw new NullPointerException("Element not found for [" + adapterFullName + "]");
|
145 | 146 | }
|
146 |
| - return element(adapterFullName).getInterfaces().stream() |
147 |
| - .filter(t -> t.toString().contains("io.avaje.jsonb.JsonAdapter")) |
148 |
| - .findFirst() |
149 |
| - .map(Object::toString) |
150 |
| - .map(GenericType::parse) |
151 |
| - .map(GenericType::firstParamType) |
152 |
| - .map(Util::extractTypeWithNest) |
153 |
| - .orElseThrow(() -> new IllegalStateException("Adapter: " + adapterFullName + " does not directly implement JsonAdapter")); |
| 147 | + return baseTypeOfAdapter(element); |
| 148 | + } |
| 149 | + |
| 150 | + static String baseTypeOfAdapter(TypeElement element) { |
| 151 | + |
| 152 | + return element.getInterfaces().stream() |
| 153 | + .filter(t -> t.toString().contains("io.avaje.jsonb.JsonAdapter")) |
| 154 | + .findFirst() |
| 155 | + .map(Object::toString) |
| 156 | + .map(GenericType::parse) |
| 157 | + .map(GenericType::firstParamType) |
| 158 | + .map(Util::extractTypeWithNest) |
| 159 | + .orElseGet( |
| 160 | + () -> { |
| 161 | + logError( |
| 162 | + element, |
| 163 | + "Custom Adapters must implement JsonAdapter"); |
| 164 | + return "Invalid"; |
| 165 | + }); |
154 | 166 | }
|
155 | 167 |
|
156 | 168 | static String extractTypeWithNest(String fullType) {
|
|
0 commit comments