Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>io.github.umutayb</groupId>
<artifactId>Utilities</artifactId>
<version>1.7.2</version>
<version>1.7.3</version>
<packaging>jar</packaging>

<name>Java-Utilities</name>
Expand Down
1 change: 1 addition & 0 deletions src/main/java/api_assured/ApiUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/api_assured/Caller.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;

Expand Down
10 changes: 2 additions & 8 deletions src/main/java/api_assured/ServiceGenerator.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/utils/FileUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -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);}
}
}
}
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/utils/mapping/ReferenceFreeSchemaFactoryWrapper.java
Original file line number Diff line number Diff line change
@@ -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
}
}
}
17 changes: 16 additions & 1 deletion src/main/java/utils/reflection/ReflectionUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
}

}
3 changes: 2 additions & 1 deletion src/test/java/AppTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand Down