package net.sourceforge.seqware.webservice.resources.queries; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.sql.SQLException; import java.util.List; import java.util.Map.Entry; import java.util.SortedMap; import java.util.TreeMap; import net.sourceforge.seqware.common.factory.DBAccess; import net.sourceforge.seqware.common.metadata.MetadataDB; import net.sourceforge.seqware.pipeline.runner.PluginRunner; import net.sourceforge.seqware.webservice.resources.BasicResource; import net.sourceforge.seqware.webservice.resources.TomcatVersion; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.restlet.data.MediaType; import org.restlet.resource.Get; /** * This resource returns information about the web-service environment * * @author dyuen */ public class EnvironmentResource extends BasicResource { @Get public void getXml() { SortedMap<String, String> environment = new TreeMap<>(); PluginRunner pluginRunner = new PluginRunner(); environment.put("metadata", "webservice"); environment.put("tomcat.version", TomcatVersion.get().getServerNumber()); environment.put("tomcat.built", TomcatVersion.get().getServerBuilt()); environment.put("version", pluginRunner.getClass().getPackage().getImplementationVersion()); environment.put("java.version", System.getProperty("java.version")); for (Entry<Object, Object> property : System.getProperties().entrySet()) { environment.put("java.property." + property.getKey().toString(), property.getValue().toString()); } MetadataDB mdb = null; try { String query = "show all"; mdb = DBAccess.get(); List<Object[]> executeQuery = mdb.executeQuery(query, new ArrayListHandler()); for (Object[] row : executeQuery) { environment.put("database." + row[0].toString(), row[1].toString()); } environment.put("jdbc.driver.name", mdb.getDbmd().getDriverName()); environment.put("jdbc.username", mdb.getDbmd().getUserName()); environment.put("jdbc.driver.version", mdb.getDbmd().getDriverVersion()); environment.put("jdbc.url", mdb.getDbmd().getURL()); } catch (RuntimeException | SQLException ex) { environment.put("database", "connection error"); } finally { if (mdb != null) { DbUtils.closeQuietly(mdb.getDb(), mdb.getSql(), null); } DBAccess.close(); } Gson gson = new GsonBuilder().setPrettyPrinting().create(); String toJson = gson.toJson(environment); getResponse().setEntity(toJson, MediaType.APPLICATION_ALL_JSON); } }