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

com.venky.swf.db.platform.CloudFoundryPlatform Maven / Gradle / Ivy

The newest version!
package com.venky.swf.db.platform;

import java.util.Properties;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import com.venky.core.util.ObjectUtil;
import com.venky.extension.Extension;
import com.venky.swf.routing.Config;

public class CloudFoundryPlatform implements Extension{
	
	public void invoke(Object... context) {
		Properties info = (Properties)context[0];
		String vcap_services = System.getenv("VCAP_SERVICES");
		String serviceName = System.getProperty("cf.db.service");
		Config.instance().getLogger(CloudFoundryPlatform.class.getName()).fine("vcap_services:" + vcap_services);
		Config.instance().getLogger(CloudFoundryPlatform.class.getName()).fine("cf.db.service:" +serviceName);
		if (ObjectUtil.isVoid(vcap_services)){
			return ;
		}

		if (ObjectUtil.isVoid(serviceName)){
			return ;
		}
		
		parse(serviceName,vcap_services,info);
	}
	
	public static void parse(String serviceName,String vcap_services,Properties info){
		JSONObject service = null; 
		
		JSONParser parser = new JSONParser();
		try {
			JSONObject jsvcapservices =  (JSONObject)parser.parse(vcap_services);
			if (jsvcapservices == null){
				return ;
			}
			JSONArray arr = (JSONArray)jsvcapservices.get(serviceName);
			if (arr == null || arr.isEmpty()){
				return;
			}
			service = (JSONObject) arr.get(0);
			if (service == null){
				return;
			}
		} catch (ParseException e) {
			throw new RuntimeException(e);
		}
		
		JSONObject credentials = ((JSONObject)service.get("credentials"));
		String db = (String)credentials.get("name");
		String host = (String)credentials.get("host");
		Number port = (Number)credentials.get("port");
		String user = (String)credentials.get("user");
		String password = (String)credentials.get("password");

		
		String jdbcurl = null ; 
		if (serviceName.startsWith("postgres")){
			jdbcurl = "jdbc:postgresql://" + host + ":" + port + "/" + db;
		}else if (serviceName.startsWith("mysql")){
			jdbcurl = "jdbc:mysql://" + host + ":" + port + "/" + db + "?zeroDateTimeBehavior=convertToNull&sessionVariables=storage_engine=INNODB" ;
		}
		Config.instance().getLogger(CloudFoundryPlatform.class.getName()).info("jdbcurl:" + jdbcurl);
		//Logger.getLogger(CloudFoundryPlatform.class.getName()).info("Systemproperties" + System.getProperties().toString());
		//Logger.getLogger(CloudFoundryPlatform.class.getName()).info("SystemEnv" + System.getenv().toString());
		
		if (!info.containsKey("url")){
			info.setProperty("url", jdbcurl);
		}
		if (!info.containsKey("username")){
			info.setProperty("username", user);
		}
		if (!info.containsKey("password")){
			info.setProperty("password", password);
		}

	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy