All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.tid.topologyModuleBase.plugins.writer.gson.GsonClient Maven / Gradle / Ivy

The newest version!
package es.tid.topologyModuleBase.plugins.writer.gson;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.lang.reflect.Type;
import java.net.Socket;
import java.util.Collection;
import java.util.logging.Logger;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import es.tid.provisioningManager.objects.RouterInfoPM;
import es.tid.topologyModuleBase.TopologyModuleConstants;
import es.tid.topologyModuleBase.util.UtilsFunctions;

/**
 * Gson client for GsonSession.
 * @author jaume
 *
 */

public class GsonClient 
{
	String ip;
	int port;
	
	/**
	 * 
	 * Logger
	 */
	Logger log=Logger.getLogger("TMController");
	
	public GsonClient(String ip ,int port)
	{
		this.ip = ip;
		this.port = port;
	}
	public Collection getTopologyNodes()
	{
		log.info("Opening socket with server in: "+ip+" , port: "+port);
		try 
		{
			Socket connectionToTheServer = new Socket(ip, port);
			
			//Asking for information
			OutputStream out = connectionToTheServer.getOutputStream();
			PrintStream ps = new PrintStream(out, true);
			
			ps.println(queryForNodes());
			
			
			//Receiving information
			BufferedReader br = new BufferedReader(new InputStreamReader(connectionToTheServer.getInputStream()));
			
			
			log.info("Preparing to get response..");
			
			/*
			String inputLine;
			while ((inputLine = br.readLine()) != null) 
			{   
			    log.info("inputLine:::"+(String)inputLine);
			    break;
			}
			*/
			
			String response = br.readLine();
	        
	        log.info("response::"+response);
	        
	        ps.println(endCommunication());
	        
	        connectionToTheServer.close();
	        
	        Type collectionType = new TypeToken>(){}.getType();
			
	        
	        Gson gson = new Gson();
	        
	        log.info("Body message:::"+getBodyMessage(response));
	        return gson.fromJson(getBodyMessage(response),collectionType);
		
		} 
		catch (Exception e) 
		{
			System.out.println(UtilsFunctions.exceptionToString(e));
		} 
		
		return null;
	}
	
	private String getBodyMessage(String response)
	{
		return response.substring(TopologyModuleConstants.GSON_RESPONSE_TYPE.length());
	}
	
	private String queryForNodes()
	{
		return TopologyModuleConstants.GSON_GET_NODES;
	}
	
	private String endCommunication()
	{
		return TopologyModuleConstants.END_COMMUNICATION;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy