+ * Read and return the port number returned in the reply to --start RESTServer
+ */
+ private int getPortNumber()
+ {
+ int port = 0;
+ InputStream readChan = chimera.getInputStream();
+ BufferedReader lineReader = new BufferedReader(new InputStreamReader(
+ readChan));
+ StringBuilder responses = new StringBuilder();
+ try
+ {
+ String response = lineReader.readLine();
+ while (response != null)
+ {
+ responses.append("\n" + response);
+ // expect: REST server on host 127.0.0.1 port port_number
+ if (response.startsWith("REST server"))
+ {
+ String[] tokens = response.split(" ");
+ if (tokens.length == 7 && "port".equals(tokens[5]))
+ {
+ port = Integer.parseInt(tokens[6]);
+ break;
+ }
+ }
+ response = lineReader.readLine();
+ }
+ } catch (Exception e)
+ {
+ logger.error("Failed to get REST port number from " + responses
+ + ": " + e.getMessage());
+ } finally
+ {
+ try
+ {
+ lineReader.close();
+ } catch (IOException e2)
+ {
+ }
+ }
+ if (port == 0)
+ {
+ System.err
+ .println("Failed to start Chimera with REST service, response was: "
+ + responses);
+ }
+ logger.info("Chimera REST service listening on port " + chimeraRestPort);
+ return port;
+ }
+
+ /**