Skip to content

Commit 96729c2

Browse files
committed
build: Enforce stricter compiler settings and fix warnings
1 parent 218e2da commit 96729c2

File tree

30 files changed

+224
-61
lines changed

30 files changed

+224
-61
lines changed

api-tracker/src/main/java/io/github/simbo1905/tracker/ApiTrackerMain.java

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
<modelVersion>4.0.0</modelVersion>
66

77
<parent>
8-
<groupId>io.github.simbo1905</groupId>
9-
<artifactId>java-util-json-java21-parent</artifactId>
8+
<groupId>io.github.simbo1905.json</groupId>
9+
<artifactId>json-java21-parent</artifactId>
1010
<version>0.1-SNAPSHOT</version>
1111
</parent>
1212

13-
<artifactId>java-util-json-java21-api-tracker</artifactId>
13+
<artifactId>json-java21-api-tracker</artifactId>
1414
<packaging>jar</packaging>
1515

1616
<name>API Tracker</name>
1717

1818
<dependencies>
1919
<dependency>
20-
<groupId>io.github.simbo1905</groupId>
21-
<artifactId>java-util-json-java21</artifactId>
20+
<groupId>io.github.simbo1905.json</groupId>
21+
<artifactId>json-java21</artifactId>
2222
<version>${project.version}</version>
2323
</dependency>
2424
</dependencies>
25-
</project>
25+
</project>
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
package io.github.simbo1905.tracker;
2+
3+
import jdk.sandbox.java.util.json.Json;
4+
import jdk.sandbox.java.util.json.JsonArray;
5+
import jdk.sandbox.java.util.json.JsonBoolean;
6+
import jdk.sandbox.java.util.json.JsonObject;
7+
import jdk.sandbox.java.util.json.JsonString;
8+
import jdk.sandbox.java.util.json.JsonValue;
9+
import jdk.sandbox.java.util.json.JsonParseException;
10+
11+
import java.util.logging.Level;
12+
import java.util.logging.Logger;
13+
import java.util.logging.ConsoleHandler;
14+
import java.util.logging.SimpleFormatter;
15+
16+
/**
17+
* Main entry point for the API Tracker tool.
18+
*
19+
* This tool analyzes Java API structures and tracks changes between
20+
* the OpenJDK sandbox java.util.json implementation and this backport.
21+
*/
22+
public class ApiTrackerMain {
23+
private static final Logger LOGGER = Logger.getLogger(ApiTrackerMain.class.getName());
24+
25+
static {
26+
// Configure logging with a clean formatter
27+
Logger rootLogger = Logger.getLogger("");
28+
rootLogger.setLevel(Level.INFO);
29+
30+
// Remove default handlers
31+
for (var handler : rootLogger.getHandlers()) {
32+
rootLogger.removeHandler(handler);
33+
}
34+
35+
// Add console handler with simple formatting
36+
ConsoleHandler consoleHandler = new ConsoleHandler();
37+
consoleHandler.setLevel(Level.ALL);
38+
consoleHandler.setFormatter(new SimpleFormatter() {
39+
@Override
40+
public synchronized String format(java.util.logging.LogRecord record) {
41+
return String.format("[%s] %s - %s%n",
42+
record.getLevel().getName(),
43+
record.getLoggerName(),
44+
formatMessage(record)
45+
);
46+
}
47+
});
48+
rootLogger.addHandler(consoleHandler);
49+
}
50+
51+
public static void main(String[] args) {
52+
LOGGER.info("Starting API Tracker v0.1-SNAPSHOT");
53+
54+
// Validate our JSON parsing works correctly
55+
if (!validateJsonBackport()) {
56+
LOGGER.severe("JSON backport validation failed");
57+
System.exit(1);
58+
}
59+
60+
LOGGER.info("JSON backport validation successful");
61+
62+
// TODO: Implement API analysis logic
63+
LOGGER.info("API Tracker initialized successfully");
64+
}
65+
66+
/**
67+
* Validates that the JSON backport is working correctly.
68+
* Tests various JSON structures to ensure compatibility.
69+
*/
70+
private static boolean validateJsonBackport() {
71+
try {
72+
// Test complex JSON structure
73+
String testJson = """
74+
{
75+
"apiTracker": {
76+
"version": "0.1-SNAPSHOT",
77+
"modules": {
78+
"core": "java-util-json-java21",
79+
"tracker": "java-util-json-java21-api-tracker"
80+
},
81+
"features": [
82+
"API extraction",
83+
"Structural comparison",
84+
"GitHub integration"
85+
],
86+
"config": {
87+
"autoTrack": true,
88+
"createIssues": true,
89+
"trackInterval": 86400
90+
}
91+
}
92+
}
93+
""";
94+
95+
LOGGER.fine("Parsing test JSON structure");
96+
JsonValue parsedValue = Json.parse(testJson);
97+
98+
if (!(parsedValue instanceof JsonObject root)) {
99+
LOGGER.severe("Expected JsonObject but got: " + parsedValue.getClass().getName());
100+
return false;
101+
}
102+
103+
// Navigate the structure to validate parsing
104+
JsonObject apiTracker = (JsonObject) root.members().get("apiTracker");
105+
String version = ((JsonString) apiTracker.members().get("version")).value();
106+
107+
if (!"0.1-SNAPSHOT".equals(version)) {
108+
LOGGER.severe("Version mismatch: expected 0.1-SNAPSHOT, got " + version);
109+
return false;
110+
}
111+
112+
// Validate nested objects
113+
JsonObject modules = (JsonObject) apiTracker.members().get("modules");
114+
LOGGER.fine("Found modules: " + modules.members().size());
115+
116+
// Validate array handling
117+
JsonArray features = (JsonArray) apiTracker.members().get("features");
118+
LOGGER.fine("Found features: " + features.values().size());
119+
120+
// Validate boolean handling
121+
JsonObject config = (JsonObject) apiTracker.members().get("config");
122+
boolean autoTrack = ((JsonBoolean) config.members().get("autoTrack")).value();
123+
124+
if (!autoTrack) {
125+
LOGGER.warning("autoTrack is disabled in test configuration");
126+
}
127+
128+
// Test edge cases
129+
testEdgeCases();
130+
131+
LOGGER.info("All JSON validation tests passed");
132+
return true;
133+
134+
} catch (JsonParseException e) {
135+
LOGGER.log(Level.SEVERE, "JSON parsing failed", e);
136+
return false;
137+
} catch (ClassCastException e) {
138+
LOGGER.log(Level.SEVERE, "Unexpected JSON structure", e);
139+
return false;
140+
} catch (Exception e) {
141+
LOGGER.log(Level.SEVERE, "Unexpected error during validation", e);
142+
return false;
143+
}
144+
}
145+
146+
/**
147+
* Tests edge cases for JSON parsing.
148+
*/
149+
private static void testEdgeCases() throws JsonParseException {
150+
// Empty object
151+
Json.parse("{}");
152+
153+
// Empty array
154+
Json.parse("[]");
155+
156+
// Null value
157+
Json.parse("{\"key\": null}");
158+
159+
// Unicode handling
160+
Json.parse("{\"unicode\": \"Hello \\u4e16\\u754c\"}");
161+
162+
// Number formats
163+
Json.parse("{\"int\": 42, \"float\": 3.14, \"exp\": 1.23e-4}");
164+
165+
LOGGER.fine("Edge case tests completed");
166+
}
167+
}
Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
<modelVersion>4.0.0</modelVersion>
66

77
<parent>
8-
<groupId>io.github.simbo1905</groupId>
9-
<artifactId>java-util-json-java21-parent</artifactId>
8+
<groupId>io.github.simbo1905.json</groupId>
9+
<artifactId>json-java21-parent</artifactId>
1010
<version>0.1-SNAPSHOT</version>
1111
</parent>
1212

13-
<artifactId>java-util-json-java21</artifactId>
13+
<artifactId>json-java21</artifactId>
1414
<packaging>jar</packaging>
1515

1616
<name>java.util.json Backport</name>
@@ -19,23 +19,17 @@
1919
<dependency>
2020
<groupId>org.junit.jupiter</groupId>
2121
<artifactId>junit-jupiter-api</artifactId>
22+
<scope>test</scope>
2223
</dependency>
2324
<dependency>
2425
<groupId>org.junit.jupiter</groupId>
2526
<artifactId>junit-jupiter-engine</artifactId>
27+
<scope>test</scope>
2628
</dependency>
2729
<dependency>
2830
<groupId>org.assertj</groupId>
2931
<artifactId>assertj-core</artifactId>
32+
<scope>test</scope>
3033
</dependency>
3134
</dependencies>
32-
33-
<build>
34-
<plugins>
35-
<plugin>
36-
<groupId>org.apache.maven.plugins</groupId>
37-
<artifactId>maven-surefire-plugin</artifactId>
38-
</plugin>
39-
</plugins>
40-
</build>
41-
</project>
35+
</project>

java-util-json-java21/src/main/java/jdk/sandbox/demo/JsonDemo.java renamed to json-java21/src/main/java/jdk/sandbox/demo/JsonDemo.java

File renamed without changes.

java-util-json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonArrayImpl.java renamed to json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonArrayImpl.java

File renamed without changes.

java-util-json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonBooleanImpl.java renamed to json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonBooleanImpl.java

File renamed without changes.

java-util-json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonNullImpl.java renamed to json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonNullImpl.java

File renamed without changes.

java-util-json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonNumberImpl.java renamed to json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonNumberImpl.java

File renamed without changes.

java-util-json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonObjectImpl.java renamed to json-java21/src/main/java/jdk/sandbox/internal/util/json/JsonObjectImpl.java

File renamed without changes.

0 commit comments

Comments
 (0)