diff --git a/pom.xml b/pom.xml
index da0100e..676c9d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.github.umutayb
Utilities
- 1.7.2
+ 1.7.3
jar
Java-Utilities
diff --git a/src/main/java/api_assured/ApiUtilities.java b/src/main/java/api_assured/ApiUtilities.java
index 39002f4..59fe6d2 100644
--- a/src/main/java/api_assured/ApiUtilities.java
+++ b/src/main/java/api_assured/ApiUtilities.java
@@ -8,6 +8,7 @@
import retrofit2.Call;
import retrofit2.Response;
import utils.*;
+import utils.mapping.MappingUtilities;
import utils.reflection.ReflectionUtilities;
import java.io.File;
import java.io.IOException;
diff --git a/src/main/java/api_assured/Caller.java b/src/main/java/api_assured/Caller.java
index 65376ad..5ec96d2 100644
--- a/src/main/java/api_assured/Caller.java
+++ b/src/main/java/api_assured/Caller.java
@@ -7,11 +7,13 @@
import retrofit2.Call;
import retrofit2.Response;
import utils.*;
+import utils.mapping.MappingUtilities;
+
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
-import static utils.MappingUtilities.Json.*;
+import static utils.mapping.MappingUtilities.Json.*;
import static utils.reflection.ReflectionUtilities.getPreviousMethodName;
import static utils.StringUtilities.Color.*;
diff --git a/src/main/java/api_assured/ServiceGenerator.java b/src/main/java/api_assured/ServiceGenerator.java
index b039ea8..57561ba 100644
--- a/src/main/java/api_assured/ServiceGenerator.java
+++ b/src/main/java/api_assured/ServiceGenerator.java
@@ -1,17 +1,11 @@
package api_assured;
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.json.JsonWriteFeature;
-import com.fasterxml.jackson.databind.SerializationFeature;
import context.ContextStore;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.logging.HttpLoggingInterceptor;
import okio.Buffer;
-import properties.PropertyUtilities;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
@@ -31,8 +25,8 @@
import java.util.concurrent.TimeUnit;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static utils.MappingUtilities.Json.getJsonString;
-import static utils.MappingUtilities.Json.mapper;
+import static utils.mapping.MappingUtilities.Json.getJsonString;
+import static utils.mapping.MappingUtilities.Json.mapper;
/**
* The ServiceGenerator class is responsible for generating Retrofit Service based on the provided service class
diff --git a/src/main/java/utils/FileUtilities.java b/src/main/java/utils/FileUtilities.java
index 044204a..3430447 100644
--- a/src/main/java/utils/FileUtilities.java
+++ b/src/main/java/utils/FileUtilities.java
@@ -19,6 +19,8 @@
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.junit.Assert;
+import utils.mapping.MappingUtilities;
+
import java.io.*;
import java.net.URL;
import java.nio.file.Files;
diff --git a/src/main/java/utils/MappingUtilities.java b/src/main/java/utils/mapping/MappingUtilities.java
similarity index 95%
rename from src/main/java/utils/MappingUtilities.java
rename to src/main/java/utils/mapping/MappingUtilities.java
index a74dfe4..7d90e83 100644
--- a/src/main/java/utils/MappingUtilities.java
+++ b/src/main/java/utils/mapping/MappingUtilities.java
@@ -1,13 +1,12 @@
-package utils;
+package utils.mapping;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.JsonSchemaGenerator;
@@ -133,12 +132,11 @@ public static JsonNode getJsonNodeFor(Class> clazz) {
*/
public static JsonSchema generateSchema(Class> clazz) {
try {
- JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(new ObjectMapper());
+ ReferenceFreeSchemaFactoryWrapper schemaFactoryWrapper = new ReferenceFreeSchemaFactoryWrapper();
+ JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper, schemaFactoryWrapper);
return setIdNull(schemaGen.generateSchema(clazz));
- } catch (Exception e) {
- e.printStackTrace();
- return null;
}
+ catch (JsonMappingException mappingException) {throw new RuntimeException(mappingException);}
}
}
}
diff --git a/src/main/java/utils/mapping/ReferenceFreeSchemaFactoryWrapper.java b/src/main/java/utils/mapping/ReferenceFreeSchemaFactoryWrapper.java
new file mode 100644
index 0000000..bd40ab8
--- /dev/null
+++ b/src/main/java/utils/mapping/ReferenceFreeSchemaFactoryWrapper.java
@@ -0,0 +1,19 @@
+package utils.mapping;
+
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
+import com.fasterxml.jackson.module.jsonSchema.factories.VisitorContext;
+
+public class ReferenceFreeSchemaFactoryWrapper extends SchemaFactoryWrapper {
+ public ReferenceFreeSchemaFactoryWrapper() {
+ super();
+ this.setVisitorContext(new CustomVisitorContext());
+ }
+
+ private static class CustomVisitorContext extends VisitorContext {
+ @Override
+ public String addSeenSchemaUri(JavaType seenSchema) {
+ return null; // Return null prevents adding $ref URIs
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/utils/reflection/ReflectionUtilities.java b/src/main/java/utils/reflection/ReflectionUtilities.java
index 1c5c48b..1d85f84 100644
--- a/src/main/java/utils/reflection/ReflectionUtilities.java
+++ b/src/main/java/utils/reflection/ReflectionUtilities.java
@@ -7,7 +7,7 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.junit.Assert;
-import utils.MappingUtilities;
+import utils.mapping.MappingUtilities;
import utils.Printer;
import utils.StringUtilities;
@@ -626,4 +626,19 @@ public static String getPreviousMethodName() {
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
return stackTrace.length > 2 ? stackTrace[2].getMethodName() : null;
}
+
+ /**
+ * Retrieves the names of all declared fields in the given class, excluding synthetic fields such as "this$0".
+ *
+ * @param clazz the class whose field names are to be retrieved
+ * @return an array of field names declared in the specified class
+ * @throws NullPointerException if {@code clazz} is null
+ */
+ public static String[] getAllFieldNames(Class> clazz) {
+ return Arrays.stream(clazz.getDeclaredFields())
+ .map(Field::getName)
+ .filter(name -> !name.equals("this$0")) // Excludes synthetic fields like inner class references
+ .toArray(String[]::new);
+ }
+
}
diff --git a/src/test/java/AppTest.java b/src/test/java/AppTest.java
index 90750fd..8592adc 100644
--- a/src/test/java/AppTest.java
+++ b/src/test/java/AppTest.java
@@ -13,6 +13,7 @@
import utils.*;
import utils.arrays.ArrayUtilities;
import utils.email.EmailUtilities;
+import utils.mapping.MappingUtilities;
import utils.reflection.ReflectionUtilities;
import java.io.IOException;
import java.net.URL;
@@ -23,7 +24,7 @@
import static utils.arrays.ArrayUtilities.*;
import static utils.email.EmailUtilities.Inbox.EmailField.CONTENT;
import static utils.email.EmailUtilities.Inbox.EmailField.SUBJECT;
-import static utils.MappingUtilities.Json.*;
+import static utils.mapping.MappingUtilities.Json.*;
import static utils.StringUtilities.contextCheck;
public class AppTest {