JSON-Database

client-server application that allows clients to store data on the server in JSON format.

Stack and topics covered:

  • JSON (Gson)
  • Sockets
  • Multithreading (threads, executors, synchronization, shared data)
  • Collections framework (list, set and map interfaces)
  • Design patterns (command)
  • Reading and writing files
  • Input and output streams
  • JCommander
  • Maven

Build

to build the project

mvn clean package

this should generate two jars in the target folder:

  • server-jar-with-dependencies.jar
  • client-jar-with-dependencies.jar

Run

first run the server

java -jar target/server-jar-with-dependencies.jar

then run the client with the request args

java -jar target/client-jar-with-dependencies.jar -t set -k "some key" -v "some value"

or with a file containing the request as json, for example a file set.json has the following content:

{
  "type": "set",
  "key": "some key",
  "value": "some value"
}
java -jar target/client-jar-with-dependencies.jar -in set.json

the output should be something like

Sent: {
  "type": "set",
  "key": "some key",
  "value": "some value"
}
Received: {
  "response": "OK"
}

Usage

option description
-t Type of the request (set, get, delete, exit)
-k Record key
-v Value to add
-in File containing the request as json