Merge branch 'eugenp:master' into master
This commit is contained in:
@@ -133,6 +133,11 @@
|
|||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>${jackson.version}</version>
|
<version>${jackson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-annotations</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.jayway.awaitility</groupId>
|
<groupId>com.jayway.awaitility</groupId>
|
||||||
<artifactId>awaitility</artifactId>
|
<artifactId>awaitility</artifactId>
|
||||||
@@ -196,7 +201,6 @@
|
|||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
<avro.version>1.8.2</avro.version>
|
<avro.version>1.8.2</avro.version>
|
||||||
<slf4j.version>1.7.25</slf4j.version>
|
|
||||||
<beam.version>2.19.0</beam.version>
|
<beam.version>2.19.0</beam.version>
|
||||||
<assertj.version>3.9.0</assertj.version>
|
<assertj.version>3.9.0</assertj.version>
|
||||||
<bval.version>1.1.2</bval.version>
|
<bval.version>1.1.2</bval.version>
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import com.baeldung.apache.beam.intro.WordCount;
|
|||||||
public class WordCountUnitTest {
|
public class WordCountUnitTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
// @Ignore
|
|
||||||
public void givenInputFile_whenWordCountRuns_thenJobFinishWithoutError() {
|
public void givenInputFile_whenWordCountRuns_thenJobFinishWithoutError() {
|
||||||
boolean jobDone = WordCount.wordCount("src/test/resources/wordcount.txt", "target/output");
|
boolean jobDone = WordCount.wordCount("src/test/resources/wordcount.txt", "target/output");
|
||||||
assertTrue(jobDone);
|
assertTrue(jobDone);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-simple</artifactId>
|
<artifactId>slf4j-simple</artifactId>
|
||||||
<version>${org.slf4j.slf4j-simple.version}</version>
|
<version>${org.slf4j.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@@ -61,7 +61,6 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<thrift.version>0.10.0</thrift.version>
|
<thrift.version>0.10.0</thrift.version>
|
||||||
<maven-thrift.version>0.1.11</maven-thrift.version>
|
<maven-thrift.version>0.1.11</maven-thrift.version>
|
||||||
<org.slf4j.slf4j-simple.version>1.7.12</org.slf4j.slf4j-simple.version>
|
|
||||||
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
|
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|||||||
@@ -166,7 +166,6 @@
|
|||||||
<hsqldb.version>2.4.0</hsqldb.version>
|
<hsqldb.version>2.4.0</hsqldb.version>
|
||||||
<spock-core.version>1.1-groovy-2.4</spock-core.version>
|
<spock-core.version>1.1-groovy-2.4</spock-core.version>
|
||||||
<groovy-wslite.version>1.1.3</groovy-wslite.version>
|
<groovy-wslite.version>1.1.3</groovy-wslite.version>
|
||||||
<logback.version>1.2.3</logback.version>
|
|
||||||
<groovy.version>2.5.7</groovy.version>
|
<groovy.version>2.5.7</groovy.version>
|
||||||
<assembly.plugin.version>3.1.0</assembly.plugin.version>
|
<assembly.plugin.version>3.1.0</assembly.plugin.version>
|
||||||
<compiler.plugin.version>3.8.0</compiler.plugin.version>
|
<compiler.plugin.version>3.8.0</compiler.plugin.version>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
### Relevant articles:
|
### Relevant articles:
|
||||||
|
|
||||||
- [Collect a Java Stream to an Immutable Collection](https://www.baeldung.com/java-stream-immutable-collection)
|
- [Collect a Java Stream to an Immutable Collection](https://www.baeldung.com/java-stream-immutable-collection)
|
||||||
|
- [Guide to mapMulti in Stream API](https://www.baeldung.com/java-mapmulti)
|
||||||
|
|||||||
@@ -10,3 +10,4 @@ This module contains articles about advanced operations on arrays in Java. They
|
|||||||
- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection)
|
- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection)
|
||||||
- [Comparing Arrays in Java](https://www.baeldung.com/java-comparing-arrays)
|
- [Comparing Arrays in Java](https://www.baeldung.com/java-comparing-arrays)
|
||||||
- [Concatenate Two Arrays in Java](https://www.baeldung.com/java-concatenate-arrays)
|
- [Concatenate Two Arrays in Java](https://www.baeldung.com/java-concatenate-arrays)
|
||||||
|
- [Performance of System.arraycopy() vs. Arrays.copyOf()](https://www.baeldung.com/java-system-arraycopy-arrays-copyof-performance)
|
||||||
|
|||||||
@@ -26,10 +26,50 @@
|
|||||||
<version>${assertj-core.version}</version>
|
<version>${assertj-core.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-core</artifactId>
|
||||||
|
<version>${jmh.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-generator-annprocess</artifactId>
|
||||||
|
<version>${jmh.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<assertj-core.version>3.10.0</assertj-core.version>
|
<assertj-core.version>3.10.0</assertj-core.version>
|
||||||
|
<jmh.version>1.33</jmh.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>com.baeldung.copyarraymethodsperformance.BenchmarkRunner</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>make-assembly</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
package com.baeldung.copyarraymethodsperformance;
|
||||||
|
|
||||||
|
public class BenchmarkRunner {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
org.openjdk.jmh.Main.main(args);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
package com.baeldung.copyarraymethodsperformance;
|
||||||
|
|
||||||
|
import org.openjdk.jmh.annotations.*;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@BenchmarkMode(Mode.AverageTime)
|
||||||
|
@State(Scope.Thread)
|
||||||
|
@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
||||||
|
@Warmup(iterations = 10)
|
||||||
|
@Fork(1)
|
||||||
|
@Measurement(iterations = 100)
|
||||||
|
public class ObjectsCopyBenchmark {
|
||||||
|
|
||||||
|
@Param({ "10", "1000000" })
|
||||||
|
public int SIZE;
|
||||||
|
Integer[] src;
|
||||||
|
|
||||||
|
@Setup
|
||||||
|
public void setup() {
|
||||||
|
Random r = new Random();
|
||||||
|
src = new Integer[SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < SIZE; i++) {
|
||||||
|
src[i] = r.nextInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public Integer[] systemArrayCopyBenchmark() {
|
||||||
|
Integer[] target = new Integer[SIZE];
|
||||||
|
System.arraycopy(src, 0, target, 0, SIZE);
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public Integer[] arraysCopyOfBenchmark() {
|
||||||
|
return Arrays.copyOf(src, SIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
+43
@@ -0,0 +1,43 @@
|
|||||||
|
package com.baeldung.copyarraymethodsperformance;
|
||||||
|
|
||||||
|
import org.openjdk.jmh.annotations.*;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@BenchmarkMode(Mode.AverageTime)
|
||||||
|
@State(Scope.Thread)
|
||||||
|
@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
||||||
|
@Warmup(iterations = 10)
|
||||||
|
@Fork(1)
|
||||||
|
@Measurement(iterations = 100)
|
||||||
|
public class PrimitivesCopyBenchmark {
|
||||||
|
|
||||||
|
@Param({ "10", "1000000" })
|
||||||
|
public int SIZE;
|
||||||
|
|
||||||
|
int[] src;
|
||||||
|
|
||||||
|
@Setup
|
||||||
|
public void setup() {
|
||||||
|
Random r = new Random();
|
||||||
|
src = new int[SIZE];
|
||||||
|
|
||||||
|
for (int i = 0; i < SIZE; i++) {
|
||||||
|
src[i] = r.nextInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public int[] systemArrayCopyBenchmark() {
|
||||||
|
int[] target = new int[SIZE];
|
||||||
|
System.arraycopy(src, 0, target, 0, SIZE);
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Benchmark
|
||||||
|
public int[] arraysCopyOfBenchmark() {
|
||||||
|
return Arrays.copyOf(src, SIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,4 +8,5 @@ This module contains articles about networking in Java
|
|||||||
- [Downloading Email Attachments in Java](https://www.baeldung.com/java-download-email-attachments)
|
- [Downloading Email Attachments in Java](https://www.baeldung.com/java-download-email-attachments)
|
||||||
- [Connection Timeout vs. Read Timeout for Java Sockets](https://www.baeldung.com/java-socket-connection-read-timeout)
|
- [Connection Timeout vs. Read Timeout for Java Sockets](https://www.baeldung.com/java-socket-connection-read-timeout)
|
||||||
- [Find Whether an IP Address Is in the Specified Range or Not in Java](https://www.baeldung.com/java-check-ip-address-range)
|
- [Find Whether an IP Address Is in the Specified Range or Not in Java](https://www.baeldung.com/java-check-ip-address-range)
|
||||||
|
- [Find the IP Address of a Client Connected to a Server](https://www.baeldung.com/java-client-get-ip-address)
|
||||||
- [[<-- Prev]](/core-java-modules/core-java-networking-2)
|
- [[<-- Prev]](/core-java-modules/core-java-networking-2)
|
||||||
|
|||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
package com.baeldung.clientaddress;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ApplicationClient {
|
||||||
|
|
||||||
|
private Socket clientSocket;
|
||||||
|
private PrintWriter out;
|
||||||
|
private BufferedReader in;
|
||||||
|
|
||||||
|
public void connect(String ip, int port) throws IOException {
|
||||||
|
clientSocket = new Socket(ip, port);
|
||||||
|
out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||||
|
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendGreetings(String msg) throws IOException {
|
||||||
|
out.println(msg);
|
||||||
|
String reply = in.readLine();
|
||||||
|
System.out.println("Reply received from the server :: " + reply);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect() throws IOException {
|
||||||
|
in.close();
|
||||||
|
out.close();
|
||||||
|
clientSocket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
ApplicationClient client = new ApplicationClient();
|
||||||
|
client.connect(args[0], Integer.parseInt(args[1])); // IP address and port number of the server
|
||||||
|
client.sendGreetings(args[2]); // greetings message
|
||||||
|
client.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
package com.baeldung.clientaddress;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ApplicationServer {
|
||||||
|
|
||||||
|
private ServerSocket serverSocket;
|
||||||
|
private Socket connectedSocket;
|
||||||
|
private PrintWriter out;
|
||||||
|
private BufferedReader in;
|
||||||
|
|
||||||
|
public void startServer(int port) throws IOException {
|
||||||
|
serverSocket = new ServerSocket(port);
|
||||||
|
connectedSocket = serverSocket.accept();
|
||||||
|
|
||||||
|
InetSocketAddress socketAddress = (InetSocketAddress) connectedSocket.getRemoteSocketAddress();
|
||||||
|
String clientIpAddress = socketAddress.getAddress()
|
||||||
|
.getHostAddress();
|
||||||
|
System.out.println("IP address of the connected client :: " + clientIpAddress);
|
||||||
|
|
||||||
|
out = new PrintWriter(connectedSocket.getOutputStream(), true);
|
||||||
|
in = new BufferedReader(new InputStreamReader(connectedSocket.getInputStream()));
|
||||||
|
String msg = in.readLine();
|
||||||
|
System.out.println("Message received from the client :: " + msg);
|
||||||
|
out.println("Hello Client !!");
|
||||||
|
|
||||||
|
closeIO();
|
||||||
|
stopServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeIO() throws IOException {
|
||||||
|
in.close();
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopServer() throws IOException {
|
||||||
|
connectedSocket.close();
|
||||||
|
serverSocket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
ApplicationServer server = new ApplicationServer();
|
||||||
|
server.startServer(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
+101
@@ -0,0 +1,101 @@
|
|||||||
|
package com.baeldung.java9.process;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class ProcessAPIEnhancements {
|
||||||
|
|
||||||
|
static Logger log = LoggerFactory.getLogger(ProcessAPIEnhancements.class);
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException, InterruptedException, ExecutionException {
|
||||||
|
infoOfCurrentProcess();
|
||||||
|
infoOfLiveProcesses();
|
||||||
|
infoOfSpawnProcess();
|
||||||
|
infoOfExitCallback();
|
||||||
|
infoOfChildProcess();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void infoOfCurrentProcess() {
|
||||||
|
ProcessHandle processHandle = ProcessHandle.current();
|
||||||
|
ProcessHandle.Info processInfo = processHandle.info();
|
||||||
|
|
||||||
|
log.info("PID: " + processHandle.pid());
|
||||||
|
log.info("Arguments: " + processInfo.arguments());
|
||||||
|
log.info("Command: " + processInfo.command());
|
||||||
|
log.info("Instant: " + processInfo.startInstant());
|
||||||
|
log.info("Total CPU duration: " + processInfo.totalCpuDuration());
|
||||||
|
log.info("User: " + processInfo.user());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void infoOfSpawnProcess() throws IOException {
|
||||||
|
|
||||||
|
String javaCmd = ProcessUtils.getJavaCmd().getAbsolutePath();
|
||||||
|
ProcessBuilder processBuilder = new ProcessBuilder(javaCmd, "-version");
|
||||||
|
Process process = processBuilder.inheritIO().start();
|
||||||
|
ProcessHandle processHandle = process.toHandle();
|
||||||
|
ProcessHandle.Info processInfo = processHandle.info();
|
||||||
|
|
||||||
|
log.info("PID: " + processHandle.pid());
|
||||||
|
log.info("Arguments: " + processInfo.arguments());
|
||||||
|
log.info("Command: " + processInfo.command());
|
||||||
|
log.info("Instant: " + processInfo.startInstant());
|
||||||
|
log.info("Total CPU duration: " + processInfo.totalCpuDuration());
|
||||||
|
log.info("User: " + processInfo.user());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void infoOfLiveProcesses() {
|
||||||
|
Stream<ProcessHandle> liveProcesses = ProcessHandle.allProcesses();
|
||||||
|
liveProcesses.filter(ProcessHandle::isAlive)
|
||||||
|
.forEach(ph -> {
|
||||||
|
log.info("PID: " + ph.pid());
|
||||||
|
log.info("Instance: " + ph.info().startInstant());
|
||||||
|
log.info("User: " + ph.info().user());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void infoOfChildProcess() throws IOException {
|
||||||
|
int childProcessCount = 5;
|
||||||
|
for (int i = 0; i < childProcessCount; i++) {
|
||||||
|
String javaCmd = ProcessUtils.getJavaCmd()
|
||||||
|
.getAbsolutePath();
|
||||||
|
ProcessBuilder processBuilder
|
||||||
|
= new ProcessBuilder(javaCmd, "-version");
|
||||||
|
processBuilder.inheritIO().start();
|
||||||
|
}
|
||||||
|
|
||||||
|
Stream<ProcessHandle> children = ProcessHandle.current()
|
||||||
|
.children();
|
||||||
|
children.filter(ProcessHandle::isAlive)
|
||||||
|
.forEach(ph -> log.info("PID: {}, Cmd: {}", ph.pid(), ph.info()
|
||||||
|
.command()));
|
||||||
|
Stream<ProcessHandle> descendants = ProcessHandle.current()
|
||||||
|
.descendants();
|
||||||
|
descendants.filter(ProcessHandle::isAlive)
|
||||||
|
.forEach(ph -> log.info("PID: {}, Cmd: {}", ph.pid(), ph.info()
|
||||||
|
.command()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void infoOfExitCallback() throws IOException, InterruptedException, ExecutionException {
|
||||||
|
String javaCmd = ProcessUtils.getJavaCmd()
|
||||||
|
.getAbsolutePath();
|
||||||
|
ProcessBuilder processBuilder
|
||||||
|
= new ProcessBuilder(javaCmd, "-version");
|
||||||
|
Process process = processBuilder.inheritIO()
|
||||||
|
.start();
|
||||||
|
ProcessHandle processHandle = process.toHandle();
|
||||||
|
|
||||||
|
log.info("PID: {} has started", processHandle.pid());
|
||||||
|
CompletableFuture<ProcessHandle> onProcessExit = processHandle.onExit();
|
||||||
|
onProcessExit.get();
|
||||||
|
log.info("Alive: " + processHandle.isAlive());
|
||||||
|
onProcessExit.thenAccept(ph -> {
|
||||||
|
log.info("PID: {} has stopped", ph.pid());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
-132
@@ -1,132 +0,0 @@
|
|||||||
package com.baeldung.java9.process;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by sanaulla on 2/23/2017.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class ProcessAPIEnhancementsUnitTest {
|
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(ProcessAPIEnhancementsUnitTest.class);
|
|
||||||
|
|
||||||
// @Test
|
|
||||||
// OS / Java version dependent
|
|
||||||
public void givenCurrentProcess_whenInvokeGetInfo_thenSuccess() throws IOException {
|
|
||||||
ProcessHandle processHandle = ProcessHandle.current();
|
|
||||||
ProcessHandle.Info processInfo = processHandle.info();
|
|
||||||
assertNotNull(processHandle.pid());
|
|
||||||
assertEquals(true, processInfo.arguments()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, processInfo.command()
|
|
||||||
.isPresent());
|
|
||||||
assertTrue(processInfo.command()
|
|
||||||
.get()
|
|
||||||
.contains("java"));
|
|
||||||
|
|
||||||
assertEquals(true, processInfo.startInstant()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, processInfo.totalCpuDuration()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, processInfo.user()
|
|
||||||
.isPresent());
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Test
|
|
||||||
// OS / Java version dependent
|
|
||||||
public void givenSpawnProcess_whenInvokeGetInfo_thenSuccess() throws IOException {
|
|
||||||
|
|
||||||
String javaCmd = ProcessUtils.getJavaCmd()
|
|
||||||
.getAbsolutePath();
|
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder(javaCmd, "-version");
|
|
||||||
Process process = processBuilder.inheritIO()
|
|
||||||
.start();
|
|
||||||
ProcessHandle processHandle = process.toHandle();
|
|
||||||
ProcessHandle.Info processInfo = processHandle.info();
|
|
||||||
assertNotNull(processHandle.pid());
|
|
||||||
assertEquals(true, processInfo.arguments()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, processInfo.command()
|
|
||||||
.isPresent());
|
|
||||||
assertTrue(processInfo.command()
|
|
||||||
.get()
|
|
||||||
.contains("java"));
|
|
||||||
assertEquals(true, processInfo.startInstant()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(false, processInfo.totalCpuDuration()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, processInfo.user()
|
|
||||||
.isPresent());
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Test
|
|
||||||
// OS / Java version dependent
|
|
||||||
public void givenLiveProcesses_whenInvokeGetInfo_thenSuccess() {
|
|
||||||
Stream<ProcessHandle> liveProcesses = ProcessHandle.allProcesses();
|
|
||||||
liveProcesses.filter(ProcessHandle::isAlive)
|
|
||||||
.forEach(ph -> {
|
|
||||||
assertNotNull(ph.pid());
|
|
||||||
assertEquals(true, ph.info()
|
|
||||||
.startInstant()
|
|
||||||
.isPresent());
|
|
||||||
assertEquals(true, ph.info()
|
|
||||||
.user()
|
|
||||||
.isPresent());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Test
|
|
||||||
// OS / Java version dependent
|
|
||||||
public void givenProcess_whenGetChildProcess_thenSuccess() throws IOException {
|
|
||||||
int childProcessCount = 5;
|
|
||||||
for (int i = 0; i < childProcessCount; i++) {
|
|
||||||
String javaCmd = ProcessUtils.getJavaCmd()
|
|
||||||
.getAbsolutePath();
|
|
||||||
ProcessBuilder processBuilder
|
|
||||||
= new ProcessBuilder(javaCmd, "-version");
|
|
||||||
processBuilder.inheritIO().start();
|
|
||||||
}
|
|
||||||
|
|
||||||
Stream<ProcessHandle> children = ProcessHandle.current()
|
|
||||||
.children();
|
|
||||||
children.filter(ProcessHandle::isAlive)
|
|
||||||
.forEach(ph -> log.info("PID: {}, Cmd: {}", ph.pid(), ph.info()
|
|
||||||
.command()));
|
|
||||||
Stream<ProcessHandle> descendants = ProcessHandle.current()
|
|
||||||
.descendants();
|
|
||||||
descendants.filter(ProcessHandle::isAlive)
|
|
||||||
.forEach(ph -> log.info("PID: {}, Cmd: {}", ph.pid(), ph.info()
|
|
||||||
.command()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Test
|
|
||||||
// OS / Java version dependent
|
|
||||||
public void givenProcess_whenAddExitCallback_thenSuccess() throws Exception {
|
|
||||||
String javaCmd = ProcessUtils.getJavaCmd()
|
|
||||||
.getAbsolutePath();
|
|
||||||
ProcessBuilder processBuilder
|
|
||||||
= new ProcessBuilder(javaCmd, "-version");
|
|
||||||
Process process = processBuilder.inheritIO()
|
|
||||||
.start();
|
|
||||||
ProcessHandle processHandle = process.toHandle();
|
|
||||||
|
|
||||||
log.info("PID: {} has started", processHandle.pid());
|
|
||||||
CompletableFuture<ProcessHandle> onProcessExit = processHandle.onExit();
|
|
||||||
onProcessExit.get();
|
|
||||||
assertEquals(false, processHandle.isAlive());
|
|
||||||
onProcessExit.thenAccept(ph -> {
|
|
||||||
log.info("PID: {} has stopped", ph.pid());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -5,4 +5,5 @@ This module contains articles about core Java Security
|
|||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
|
|
||||||
- [Secret Key and String Conversion in Java](https://www.baeldung.com/java-secret-key-to-string)
|
- [Secret Key and String Conversion in Java](https://www.baeldung.com/java-secret-key-to-string)
|
||||||
|
- [Enabling Unlimited Strength Cryptography in Java](https://www.baeldung.com/jce-enable-unlimited-strength)
|
||||||
- More articles: [[<-- prev]](/core-java-modules/core-java-security-2)
|
- More articles: [[<-- prev]](/core-java-modules/core-java-security-2)
|
||||||
|
|||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.baeldung.cryptography;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
public class CryptographyStrengthUnitTest {
|
||||||
|
private static final int UNLIMITED_KEY_SIZE = 2147483647;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDefaultCheck_thenUnlimitedReturned() throws NoSuchAlgorithmException {
|
||||||
|
int maxKeySize = javax.crypto.Cipher.getMaxAllowedKeyLength("AES");
|
||||||
|
assertThat(maxKeySize).isEqualTo(UNLIMITED_KEY_SIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,12 +39,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-api</artifactId>
|
<artifactId>slf4j-api</artifactId>
|
||||||
<version>${slf4j.version}</version>
|
<version>${org.slf4j.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
<version>${slf4j.version}</version>
|
<version>${org.slf4j.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- https://mvnrepository.com/artifact/org.datavec/datavec-api -->
|
<!-- https://mvnrepository.com/artifact/org.datavec/datavec-api -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -62,7 +62,6 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<dl4j.version>0.9.1</dl4j.version> <!-- Latest non beta version -->
|
<dl4j.version>0.9.1</dl4j.version> <!-- Latest non beta version -->
|
||||||
<httpclient.version>4.3.5</httpclient.version>
|
<httpclient.version>4.3.5</httpclient.version>
|
||||||
<slf4j.version>1.7.5</slf4j.version>
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
+1
-3
@@ -99,7 +99,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.slf4j</groupId>
|
<groupId>org.slf4j</groupId>
|
||||||
<artifactId>jcl-over-slf4j</artifactId>
|
<artifactId>jcl-over-slf4j</artifactId>
|
||||||
<version>${slf4j.version}</version>
|
<version>${org.slf4j.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>ch.qos.logback</groupId>
|
<groupId>ch.qos.logback</groupId>
|
||||||
@@ -204,8 +204,6 @@
|
|||||||
<spring.boot.version>1.5.6.RELEASE</spring.boot.version>
|
<spring.boot.version>1.5.6.RELEASE</spring.boot.version>
|
||||||
<mockito.version>2.21.0</mockito.version>
|
<mockito.version>2.21.0</mockito.version>
|
||||||
<jsonpath.version>2.4.0</jsonpath.version>
|
<jsonpath.version>2.4.0</jsonpath.version>
|
||||||
<logback.version>1.2.3</logback.version>
|
|
||||||
<slf4j.version>1.7.25</slf4j.version>
|
|
||||||
<spring-boot-maven-plugin.version>2.0.4.RELEASE</spring-boot-maven-plugin.version>
|
<spring-boot-maven-plugin.version>2.0.4.RELEASE</spring-boot-maven-plugin.version>
|
||||||
<compiler.plugin.version>3.1</compiler.plugin.version>
|
<compiler.plugin.version>3.1</compiler.plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
<version>${jackson-datatype.version}</version>
|
<version>${jackson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- CSV -->
|
<!-- CSV -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -52,7 +52,6 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<assertj.version>3.11.0</assertj.version>
|
<assertj.version>3.11.0</assertj.version>
|
||||||
<jackson-datatype.version>2.9.8</jackson-datatype.version>
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
+29
-12
@@ -1,14 +1,22 @@
|
|||||||
package com.baeldung.jackson.inheritance;
|
package com.baeldung.jackson.inheritance;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.List;
|
import com.baeldung.jackson.inheritance.SubTypeConstructorStructure.Car;
|
||||||
import java.util.ArrayList;
|
import com.baeldung.jackson.inheritance.SubTypeConstructorStructure.Fleet;
|
||||||
import java.io.IOException;
|
import com.baeldung.jackson.inheritance.SubTypeConstructorStructure.Truck;
|
||||||
|
import com.baeldung.jackson.inheritance.SubTypeConstructorStructure.Vehicle;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
|
||||||
|
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
|
||||||
|
|
||||||
public class SubTypeHandlingUnitTest {
|
public class SubTypeHandlingUnitTest {
|
||||||
@Test
|
@Test
|
||||||
@@ -23,21 +31,30 @@ public class SubTypeHandlingUnitTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenSubType_whenNotUsingNoArgsConstructors_thenSucceed() throws IOException {
|
public void givenSubType_whenNotUsingNoArgsConstructors_thenSucceed() throws IOException {
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
mapper.enableDefaultTyping();
|
PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder()
|
||||||
|
.allowIfSubType("com.baeldung.jackson.inheritance")
|
||||||
|
.allowIfSubType("java.util.ArrayList")
|
||||||
|
.build();
|
||||||
|
mapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL);
|
||||||
|
|
||||||
|
Car car = new Car("Mercedes-Benz", "S500", 5, 250.0);
|
||||||
|
Truck truck = new Truck("Isuzu", "NQR", 7500.0);
|
||||||
|
|
||||||
SubTypeConstructorStructure.Car car = new SubTypeConstructorStructure.Car("Mercedes-Benz", "S500", 5, 250.0);
|
List<Vehicle> vehicles = new ArrayList<>();
|
||||||
SubTypeConstructorStructure.Truck truck = new SubTypeConstructorStructure.Truck("Isuzu", "NQR", 7500.0);
|
|
||||||
|
|
||||||
List<SubTypeConstructorStructure.Vehicle> vehicles = new ArrayList<>();
|
|
||||||
vehicles.add(car);
|
vehicles.add(car);
|
||||||
vehicles.add(truck);
|
vehicles.add(truck);
|
||||||
|
|
||||||
SubTypeConstructorStructure.Fleet serializedFleet = new SubTypeConstructorStructure.Fleet();
|
Fleet serializedFleet = new Fleet();
|
||||||
serializedFleet.setVehicles(vehicles);
|
serializedFleet.setVehicles(vehicles);
|
||||||
|
|
||||||
String jsonDataString = mapper.writeValueAsString(serializedFleet);
|
String jsonDataString = mapper.writeValueAsString(serializedFleet);
|
||||||
mapper.readValue(jsonDataString, SubTypeConstructorStructure.Fleet.class);
|
mapper.readValue(jsonDataString, Fleet.class);
|
||||||
|
|
||||||
|
Fleet deserializedFleet = mapper.readValue(jsonDataString, Fleet.class);
|
||||||
|
|
||||||
|
assertThat(deserializedFleet.getVehicles().get(0), instanceOf(Car.class));
|
||||||
|
assertThat(deserializedFleet.getVehicles().get(1), instanceOf(Truck.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+7
-1
@@ -10,12 +10,18 @@ import java.util.ArrayList;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
|
||||||
|
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
|
||||||
|
|
||||||
public class TypeInfoInclusionUnitTest {
|
public class TypeInfoInclusionUnitTest {
|
||||||
@Test
|
@Test
|
||||||
public void givenTypeInfo_whenAnnotatingGlobally_thenTypesAreCorrectlyRecovered() throws IOException {
|
public void givenTypeInfo_whenAnnotatingGlobally_thenTypesAreCorrectlyRecovered() throws IOException {
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
mapper.enableDefaultTyping();
|
PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder()
|
||||||
|
.allowIfSubType("com.baeldung.jackson.inheritance")
|
||||||
|
.allowIfSubType("java.util.ArrayList")
|
||||||
|
.build();
|
||||||
|
mapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL);
|
||||||
|
|
||||||
TypeInfoStructure.Car car = new TypeInfoStructure.Car("Mercedes-Benz", "S500", 5, 250.0);
|
TypeInfoStructure.Car car = new TypeInfoStructure.Car("Mercedes-Benz", "S500", 5, 250.0);
|
||||||
TypeInfoStructure.Truck truck = new TypeInfoStructure.Truck("Isuzu", "NQR", 7500.0);
|
TypeInfoStructure.Truck truck = new TypeInfoStructure.Truck("Isuzu", "NQR", 7500.0);
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ This module contains articles about JSON.
|
|||||||
- [Introduction to Jsoniter](https://www.baeldung.com/java-jsoniter)
|
- [Introduction to Jsoniter](https://www.baeldung.com/java-jsoniter)
|
||||||
- [Introduction to Moshi Json](https://www.baeldung.com/java-json-moshi)
|
- [Introduction to Moshi Json](https://www.baeldung.com/java-json-moshi)
|
||||||
- [Hypermedia Serialization With JSON-LD](https://www.baeldung.com/json-linked-data)
|
- [Hypermedia Serialization With JSON-LD](https://www.baeldung.com/json-linked-data)
|
||||||
|
- [Generate a Java Class From JSON](https://www.baeldung.com/java-generate-class-from-json)
|
||||||
|
|||||||
@@ -17,7 +17,22 @@ import com.sun.codemodel.JCodeModel;
|
|||||||
|
|
||||||
public class JsonToJavaClassConversion {
|
public class JsonToJavaClassConversion {
|
||||||
|
|
||||||
public Object convertJsonToJavaClass(URL inputJson, File outputJavaClassDirectory, String packageName, String className) throws IOException {
|
public static void main(String[] args) {
|
||||||
|
String packageName = "com.baeldung.jsontojavaclass.pojo";
|
||||||
|
String basePath = "src/main/resources";
|
||||||
|
File inputJson = new File(basePath + File.separator + "input.json");
|
||||||
|
File outputPojoDirectory = new File(basePath + File.separator + "convertedPojo");
|
||||||
|
outputPojoDirectory.mkdirs();
|
||||||
|
try {
|
||||||
|
new JsonToJavaClassConversion().convertJsonToJavaClass(inputJson.toURI().toURL(), outputPojoDirectory, packageName, inputJson.getName().replace(".json", ""));
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Encountered issue while converting to pojo: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void convertJsonToJavaClass(URL inputJsonUrl, File outputJavaClassDirectory, String packageName, String javaClassName) throws IOException {
|
||||||
JCodeModel jcodeModel = new JCodeModel();
|
JCodeModel jcodeModel = new JCodeModel();
|
||||||
|
|
||||||
GenerationConfig config = new DefaultGenerationConfig() {
|
GenerationConfig config = new DefaultGenerationConfig() {
|
||||||
@@ -33,10 +48,9 @@ public class JsonToJavaClassConversion {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
|
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
|
||||||
mapper.generate(jcodeModel, className, packageName, inputJson);
|
mapper.generate(jcodeModel, javaClassName, packageName, inputJsonUrl);
|
||||||
|
|
||||||
jcodeModel.build(outputJavaClassDirectory);
|
jcodeModel.build(outputJavaClassDirectory);
|
||||||
return mapper;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Generated;
|
import javax.annotation.Generated;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
||||||
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
@@ -16,7 +14,14 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||||
|
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
@JsonPropertyOrder({ "name", "area", "author", "id", "salary", "topics" })
|
@JsonPropertyOrder({
|
||||||
|
"name",
|
||||||
|
"area",
|
||||||
|
"author",
|
||||||
|
"id",
|
||||||
|
"salary",
|
||||||
|
"topics"
|
||||||
|
})
|
||||||
@Generated("jsonschema2pojo")
|
@Generated("jsonschema2pojo")
|
||||||
public class SamplePojo {
|
public class SamplePojo {
|
||||||
|
|
||||||
@@ -143,40 +148,37 @@ public class SamplePojo {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(SamplePojo.class.getName())
|
sb.append(SamplePojo.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
|
||||||
.append('@')
|
|
||||||
.append(Integer.toHexString(System.identityHashCode(this)))
|
|
||||||
.append('[');
|
|
||||||
sb.append("name");
|
sb.append("name");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.name == null) ? "<null>" : this.name));
|
sb.append(((this.name == null)?"<null>":this.name));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("area");
|
sb.append("area");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.area == null) ? "<null>" : this.area));
|
sb.append(((this.area == null)?"<null>":this.area));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("author");
|
sb.append("author");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.author == null) ? "<null>" : this.author));
|
sb.append(((this.author == null)?"<null>":this.author));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("id");
|
sb.append("id");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.id == null) ? "<null>" : this.id));
|
sb.append(((this.id == null)?"<null>":this.id));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("salary");
|
sb.append("salary");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.salary == null) ? "<null>" : this.salary));
|
sb.append(((this.salary == null)?"<null>":this.salary));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("topics");
|
sb.append("topics");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.topics == null) ? "<null>" : this.topics));
|
sb.append(((this.topics == null)?"<null>":this.topics));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
sb.append("additionalProperties");
|
sb.append("additionalProperties");
|
||||||
sb.append('=');
|
sb.append('=');
|
||||||
sb.append(((this.additionalProperties == null) ? "<null>" : this.additionalProperties));
|
sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
|
||||||
sb.append(',');
|
sb.append(',');
|
||||||
if (sb.charAt((sb.length() - 1)) == ',') {
|
if (sb.charAt((sb.length()- 1)) == ',') {
|
||||||
sb.setCharAt((sb.length() - 1), ']');
|
sb.setCharAt((sb.length()- 1), ']');
|
||||||
} else {
|
} else {
|
||||||
sb.append(']');
|
sb.append(']');
|
||||||
}
|
}
|
||||||
@@ -186,13 +188,13 @@ public class SamplePojo {
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int result = 1;
|
int result = 1;
|
||||||
result = ((result * 31) + ((this.area == null) ? 0 : this.area.hashCode()));
|
result = ((result* 31)+((this.area == null)? 0 :this.area.hashCode()));
|
||||||
result = ((result * 31) + ((this.author == null) ? 0 : this.author.hashCode()));
|
result = ((result* 31)+((this.author == null)? 0 :this.author.hashCode()));
|
||||||
result = ((result * 31) + ((this.topics == null) ? 0 : this.topics.hashCode()));
|
result = ((result* 31)+((this.topics == null)? 0 :this.topics.hashCode()));
|
||||||
result = ((result * 31) + ((this.name == null) ? 0 : this.name.hashCode()));
|
result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
|
||||||
result = ((result * 31) + ((this.id == null) ? 0 : this.id.hashCode()));
|
result = ((result* 31)+((this.id == null)? 0 :this.id.hashCode()));
|
||||||
result = ((result * 31) + ((this.additionalProperties == null) ? 0 : this.additionalProperties.hashCode()));
|
result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
|
||||||
result = ((result * 31) + ((this.salary == null) ? 0 : this.salary.hashCode()));
|
result = ((result* 31)+((this.salary == null)? 0 :this.salary.hashCode()));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,10 +207,7 @@ public class SamplePojo {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
SamplePojo rhs = ((SamplePojo) other);
|
SamplePojo rhs = ((SamplePojo) other);
|
||||||
return ((((((((this.area == rhs.area) || ((this.area != null) && this.area.equals(rhs.area))) && ((this.author == rhs.author) || ((this.author != null) && this.author.equals(rhs.author))))
|
return ((((((((this.area == rhs.area)||((this.area!= null)&&this.area.equals(rhs.area)))&&((this.author == rhs.author)||((this.author!= null)&&this.author.equals(rhs.author))))&&((this.topics == rhs.topics)||((this.topics!= null)&&this.topics.equals(rhs.topics))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.id == rhs.id)||((this.id!= null)&&this.id.equals(rhs.id))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.salary == rhs.salary)||((this.salary!= null)&&this.salary.equals(rhs.salary))));
|
||||||
&& ((this.topics == rhs.topics) || ((this.topics != null) && this.topics.equals(rhs.topics)))) && ((this.name == rhs.name) || ((this.name != null) && this.name.equals(rhs.name))))
|
|
||||||
&& ((this.id == rhs.id) || ((this.id != null) && this.id.equals(rhs.id)))) && ((this.additionalProperties == rhs.additionalProperties) || ((this.additionalProperties != null) && this.additionalProperties.equals(rhs.additionalProperties))))
|
|
||||||
&& ((this.salary == rhs.salary) || ((this.salary != null) && this.salary.equals(rhs.salary))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+119
@@ -0,0 +1,119 @@
|
|||||||
|
|
||||||
|
package com.baeldung.jsontojavaclass.pojo;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.annotation.Generated;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||||
|
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
|
@JsonPropertyOrder({
|
||||||
|
"city",
|
||||||
|
"country"
|
||||||
|
})
|
||||||
|
@Generated("jsonschema2pojo")
|
||||||
|
public class Address {
|
||||||
|
|
||||||
|
@JsonProperty("city")
|
||||||
|
private String city;
|
||||||
|
@JsonProperty("country")
|
||||||
|
private String country;
|
||||||
|
@JsonIgnore
|
||||||
|
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
@JsonProperty("city")
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("city")
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Address withCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("country")
|
||||||
|
public String getCountry() {
|
||||||
|
return country;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("country")
|
||||||
|
public void setCountry(String country) {
|
||||||
|
this.country = country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Address withCountry(String country) {
|
||||||
|
this.country = country;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnyGetter
|
||||||
|
public Map<String, Object> getAdditionalProperties() {
|
||||||
|
return this.additionalProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnySetter
|
||||||
|
public void setAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Address withAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(Address.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
|
||||||
|
sb.append("city");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.city == null)?"<null>":this.city));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("country");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.country == null)?"<null>":this.country));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("additionalProperties");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
|
||||||
|
sb.append(',');
|
||||||
|
if (sb.charAt((sb.length()- 1)) == ',') {
|
||||||
|
sb.setCharAt((sb.length()- 1), ']');
|
||||||
|
} else {
|
||||||
|
sb.append(']');
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = 1;
|
||||||
|
result = ((result* 31)+((this.country == null)? 0 :this.country.hashCode()));
|
||||||
|
result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
|
||||||
|
result = ((result* 31)+((this.city == null)? 0 :this.city.hashCode()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
if (other == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((other instanceof Address) == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Address rhs = ((Address) other);
|
||||||
|
return ((((this.country == rhs.country)||((this.country!= null)&&this.country.equals(rhs.country)))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.city == rhs.city)||((this.city!= null)&&this.city.equals(rhs.city))));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
|
||||||
|
package com.baeldung.jsontojavaclass.pojo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.annotation.Generated;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||||
|
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
|
@JsonPropertyOrder({
|
||||||
|
"name",
|
||||||
|
"area",
|
||||||
|
"author",
|
||||||
|
"id",
|
||||||
|
"topics",
|
||||||
|
"address"
|
||||||
|
})
|
||||||
|
@Generated("jsonschema2pojo")
|
||||||
|
public class Input {
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
private String name;
|
||||||
|
@JsonProperty("area")
|
||||||
|
private String area;
|
||||||
|
@JsonProperty("author")
|
||||||
|
private String author;
|
||||||
|
@JsonProperty("id")
|
||||||
|
private Integer id;
|
||||||
|
@JsonProperty("topics")
|
||||||
|
private List<String> topics = new ArrayList<String>();
|
||||||
|
@JsonProperty("address")
|
||||||
|
private Address address;
|
||||||
|
@JsonIgnore
|
||||||
|
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("area")
|
||||||
|
public String getArea() {
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("area")
|
||||||
|
public void setArea(String area) {
|
||||||
|
this.area = area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withArea(String area) {
|
||||||
|
this.area = area;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("author")
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("author")
|
||||||
|
public void setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("id")
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("id")
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("topics")
|
||||||
|
public List<String> getTopics() {
|
||||||
|
return topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("topics")
|
||||||
|
public void setTopics(List<String> topics) {
|
||||||
|
this.topics = topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withTopics(List<String> topics) {
|
||||||
|
this.topics = topics;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("address")
|
||||||
|
public Address getAddress() {
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("address")
|
||||||
|
public void setAddress(Address address) {
|
||||||
|
this.address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withAddress(Address address) {
|
||||||
|
this.address = address;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnyGetter
|
||||||
|
public Map<String, Object> getAdditionalProperties() {
|
||||||
|
return this.additionalProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnySetter
|
||||||
|
public void setAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Input withAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(Input.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
|
||||||
|
sb.append("name");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.name == null)?"<null>":this.name));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("area");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.area == null)?"<null>":this.area));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("author");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.author == null)?"<null>":this.author));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("id");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.id == null)?"<null>":this.id));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("topics");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.topics == null)?"<null>":this.topics));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("address");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.address == null)?"<null>":this.address));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("additionalProperties");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
|
||||||
|
sb.append(',');
|
||||||
|
if (sb.charAt((sb.length()- 1)) == ',') {
|
||||||
|
sb.setCharAt((sb.length()- 1), ']');
|
||||||
|
} else {
|
||||||
|
sb.append(']');
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = 1;
|
||||||
|
result = ((result* 31)+((this.area == null)? 0 :this.area.hashCode()));
|
||||||
|
result = ((result* 31)+((this.address == null)? 0 :this.address.hashCode()));
|
||||||
|
result = ((result* 31)+((this.author == null)? 0 :this.author.hashCode()));
|
||||||
|
result = ((result* 31)+((this.topics == null)? 0 :this.topics.hashCode()));
|
||||||
|
result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
|
||||||
|
result = ((result* 31)+((this.id == null)? 0 :this.id.hashCode()));
|
||||||
|
result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
if (other == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((other instanceof Input) == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Input rhs = ((Input) other);
|
||||||
|
return ((((((((this.area == rhs.area)||((this.area!= null)&&this.area.equals(rhs.area)))&&((this.address == rhs.address)||((this.address!= null)&&this.address.equals(rhs.address))))&&((this.author == rhs.author)||((this.author!= null)&&this.author.equals(rhs.author))))&&((this.topics == rhs.topics)||((this.topics!= null)&&this.topics.equals(rhs.topics))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.id == rhs.id)||((this.id!= null)&&this.id.equals(rhs.id))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "Baeldung",
|
||||||
|
"area": "tech blogs",
|
||||||
|
"author": "Eugen",
|
||||||
|
"id": 32134,
|
||||||
|
"topics": [
|
||||||
|
"java",
|
||||||
|
"kotlin",
|
||||||
|
"cs",
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"address": {
|
||||||
|
"city": "Bucharest",
|
||||||
|
"country": "Romania"
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
-7
@@ -3,6 +3,7 @@ package com.baeldung.jsontojavaclass;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@@ -21,17 +22,16 @@ class JsonToJavaClassConversionUnitTest {
|
|||||||
File inputJson = new File(jsonPath + "sample_input.json");
|
File inputJson = new File(jsonPath + "sample_input.json");
|
||||||
|
|
||||||
// create the local directory for generating the Java Class file
|
// create the local directory for generating the Java Class file
|
||||||
String outputPath = "src/main/java/";
|
String outputPath = "src/test/resources/";
|
||||||
File outputJavaClassDirectory = new File(outputPath);
|
File outputJavaClassDirectory = new File(outputPath);
|
||||||
outputJavaClassDirectory.mkdirs();
|
|
||||||
|
|
||||||
String className = "SamplePojo";
|
String javaClassName = "SamplePojo";
|
||||||
|
|
||||||
Object object = jsonToJavaConversion.convertJsonToJavaClass(inputJson.toURI()
|
jsonToJavaConversion.convertJsonToJavaClass(inputJson.toURI()
|
||||||
.toURL(), outputJavaClassDirectory, packageName, className);
|
.toURL(), outputJavaClassDirectory, packageName, javaClassName);
|
||||||
System.out.println(object);
|
|
||||||
|
|
||||||
Assertions.assertNotNull(object);
|
File outputJavaClassPath = new File(outputPath + packageName.replace(".", "/"));
|
||||||
|
Assertions.assertTrue(Arrays.stream(outputJavaClassPath.listFiles()).peek(System.out::println).anyMatch(file -> (javaClassName+".java").equalsIgnoreCase(file.getName())));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,213 @@
|
|||||||
|
|
||||||
|
package com.baeldung.jsontojavaclass.pojo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.annotation.Generated;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAnySetter;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
|
||||||
|
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
|
@JsonPropertyOrder({
|
||||||
|
"name",
|
||||||
|
"area",
|
||||||
|
"author",
|
||||||
|
"id",
|
||||||
|
"salary",
|
||||||
|
"topics"
|
||||||
|
})
|
||||||
|
@Generated("jsonschema2pojo")
|
||||||
|
public class SamplePojo {
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
private String name;
|
||||||
|
@JsonProperty("area")
|
||||||
|
private String area;
|
||||||
|
@JsonProperty("author")
|
||||||
|
private String author;
|
||||||
|
@JsonProperty("id")
|
||||||
|
private Integer id;
|
||||||
|
@JsonProperty("salary")
|
||||||
|
private Integer salary;
|
||||||
|
@JsonProperty("topics")
|
||||||
|
private List<String> topics = new ArrayList<String>();
|
||||||
|
@JsonIgnore
|
||||||
|
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("name")
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("area")
|
||||||
|
public String getArea() {
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("area")
|
||||||
|
public void setArea(String area) {
|
||||||
|
this.area = area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withArea(String area) {
|
||||||
|
this.area = area;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("author")
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("author")
|
||||||
|
public void setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("id")
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("id")
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("salary")
|
||||||
|
public Integer getSalary() {
|
||||||
|
return salary;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("salary")
|
||||||
|
public void setSalary(Integer salary) {
|
||||||
|
this.salary = salary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withSalary(Integer salary) {
|
||||||
|
this.salary = salary;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("topics")
|
||||||
|
public List<String> getTopics() {
|
||||||
|
return topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonProperty("topics")
|
||||||
|
public void setTopics(List<String> topics) {
|
||||||
|
this.topics = topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withTopics(List<String> topics) {
|
||||||
|
this.topics = topics;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnyGetter
|
||||||
|
public Map<String, Object> getAdditionalProperties() {
|
||||||
|
return this.additionalProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonAnySetter
|
||||||
|
public void setAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SamplePojo withAdditionalProperty(String name, Object value) {
|
||||||
|
this.additionalProperties.put(name, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(SamplePojo.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
|
||||||
|
sb.append("name");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.name == null)?"<null>":this.name));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("area");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.area == null)?"<null>":this.area));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("author");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.author == null)?"<null>":this.author));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("id");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.id == null)?"<null>":this.id));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("salary");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.salary == null)?"<null>":this.salary));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("topics");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.topics == null)?"<null>":this.topics));
|
||||||
|
sb.append(',');
|
||||||
|
sb.append("additionalProperties");
|
||||||
|
sb.append('=');
|
||||||
|
sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
|
||||||
|
sb.append(',');
|
||||||
|
if (sb.charAt((sb.length()- 1)) == ',') {
|
||||||
|
sb.setCharAt((sb.length()- 1), ']');
|
||||||
|
} else {
|
||||||
|
sb.append(']');
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = 1;
|
||||||
|
result = ((result* 31)+((this.area == null)? 0 :this.area.hashCode()));
|
||||||
|
result = ((result* 31)+((this.author == null)? 0 :this.author.hashCode()));
|
||||||
|
result = ((result* 31)+((this.topics == null)? 0 :this.topics.hashCode()));
|
||||||
|
result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
|
||||||
|
result = ((result* 31)+((this.id == null)? 0 :this.id.hashCode()));
|
||||||
|
result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
|
||||||
|
result = ((result* 31)+((this.salary == null)? 0 :this.salary.hashCode()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
if (other == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if ((other instanceof SamplePojo) == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
SamplePojo rhs = ((SamplePojo) other);
|
||||||
|
return ((((((((this.area == rhs.area)||((this.area!= null)&&this.area.equals(rhs.area)))&&((this.author == rhs.author)||((this.author!= null)&&this.author.equals(rhs.author))))&&((this.topics == rhs.topics)||((this.topics!= null)&&this.topics.equals(rhs.topics))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.id == rhs.id)||((this.id!= null)&&this.id.equals(rhs.id))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.salary == rhs.salary)||((this.salary!= null)&&this.salary.equals(rhs.salary))));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user