My Client
package omni.client;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.boon.Boon;
import omni.commons.core.Request;
public class Client {
private static final Logger log = Logger.getLogger(Client.class);
private static final String host = "localhost";
private static final int port = 9876;
private static Request requestServer;
private static Map<String, String> properties;
public static void main(String[] args) {
properties = new HashMap<>();
properties.put("mockProperty1", "mockValue1");
properties.put("mockProperty2", "mockValue2");
properties.put("mockProperty3", "mockValue3");
requestServer = new Request();
requestServer.setCommandName("Mock Command");
requestServer.setProperties(properties);
String jsonRequest = Boon.toJson(requestServer);
try (Socket socket = new Socket(host, port)) {
try (OutputStreamWriter request = new OutputStreamWriter(socket.getOutputStream(),
StandardCharsets.UTF_8)) {
request.write(jsonRequest);
request.flush();
}
} catch (IOException ioe) {
log.error("Unable to send the request", ioe);
}
}
}
My Server
package omni.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import org.apache.log4j.Logger;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
import omni.commons.core.Request;
public class Server {
private static final Logger log = Logger.getLogger(Server.class);
private static final int port = 9876;
private static Socket socket;
private static BufferedReader input;
private static String request;
private static ObjectMapper mapper;
private static Request requestObject;
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(port)) {
log.info("Server started and listening at port : " + port);
socket = serverSocket.accept();
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
request = input.readLine();
log.info("JSON Request " + request);
mapper = JsonFactory.create();
requestObject = mapper.readValue(request, Request.class);
log.info("Request from client : " + requestObject.toString());
} catch (IOException ioe) {
log.error(ioe);
}
}
}
Common POJO to parse from and to parse to.
package omni.commons.core;
import java.util.Map;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
public class Request {
private String commandName;
private Map<String, String> properties;
public String getCommandName() {
return commandName;
}
public void setCommandName(String commandName) {
this.commandName = commandName;
}
public Map getProperties() {
return properties;
}
public void setProperties(Map<String, String> properties) {
this.properties = properties;
}
@Override
public String toString() {
ObjectMapper mapper = JsonFactory.create();
String formattedProperties = mapper.writeValueAsString(properties);
return "Request [commandName=" + commandName + ", properties=" + formattedProperties + "]";
}
}
Dependencies in pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<l4j.version>1.2.17</l4j.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${l4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
<dependency>
<groupId>io.fastjson</groupId>
<artifactId>boon</artifactId>
<version>0.33</version>
</dependency>
</dependencies>



No comments:
Post a Comment