Sample Java Code

The following examples demonstrate how to access the Oracle Prime Projects API using Java. The first example sends an HTTP GET request to the /workspace/ endpoint to retrieve information about a workspace with a given workspace ID. The second example sends an HTTP POST request to the /project endpoint to create a project. Both examples use basic authentication.

Sample Program to Invoke GET REST API

import java.io.BufferedReader; 
      import java.io.IOException; 
      import java.io.InputStream; 
      import java.io.InputStreamReader; 
      import java.net.HttpURLConnection; 
      import java.net.URL; 
      import java.security.KeyManagementException; 
      import java.security.NoSuchAlgorithmException; 
      import java.security.cert.X509Certificate; 
       
      import javax.net.ssl.HostnameVerifier; 
      import javax.net.ssl.HttpsURLConnection; 
      import javax.net.ssl.SSLContext; 
      import javax.net.ssl.SSLSession; 
      import javax.net.ssl.TrustManager; 
      import javax.net.ssl.X509TrustManager; 
       
      import org.apache.commons.httpclient.HttpStatus; 
       
      public class SampleProgram { 
          private static String userName = "<username>"; 
          private static String password = "<password>"; 
          private static String hostName = "<hostname>"; 
          private static String portNumber = "<portnumber>"; 
          private static String workspaceId = "<workspaceId>"; 
          private static String version = "2"; 
       
          /* 
           * Note: if hostName does not contain portNumber, remove below '+ ":" + portNumber' from getWorkspaceUrl
     */ 
       
          private static String getWorkspaceUrl = "https://" + hostName + ":" + portNumber + "/primeapi/restapi/workspace/" + workspaceId; 
       
          public static void main(String s[]) throws Exception { 
       
              /* 
               * Invoke the API to get information about a wokrspace matching the workspaceId 
               */ 
       
              String workspaceJson = callRestURL(getWorkspaceUrl, "GET", version); 
              System.out.println("Workspace:- " + workspaceJson); 
          } 
       
          /* 
           * Supporting Methods 
           */ 
       
          private static String callRestURL(String restUrl, String method, String version) throws Exception { 
              HttpURLConnection conn = null; 
       
              try { 
                  trustAllCert(); 
       
                  URL url = new URL(restUrl); 
       
                  /* 
                   * Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<proxyhost>", <port>)); 
                   * conn = (HttpURLConnection) url.openConnection(proxy); 
                   */ 
       
                  conn = (HttpURLConnection) url.openConnection(); 
       
                  conn.setDoOutput(true); 
                  conn.setDoInput(true); 
       
                  conn.setRequestMethod(method); 
       
                  conn.setRequestProperty("Accept", "application/json"); 
                  conn.setRequestProperty("Content-Type", "application/json"); 
                  conn.setRequestProperty("Version", version); 
       
                  String userCredentials = userName + ":" + password; 
       
                  String base64Credentials = javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes()); 
       
                  String basicAuth = "Basic " + base64Credentials; 
       
                  conn.setRequestProperty("Authorization", basicAuth); 
       
       
                  if (conn.getResponseCode() != HttpStatus.SC_OK) { 
                      throw new RuntimeException("Failed : HTTP error code : " 
                              + conn.getResponseCode() + "Error: " + readStreamData(conn.getErrorStream())); 
                  } 
       
                  return readStreamData(conn.getInputStream()); 
       
              } finally { 
       
                  if (conn != null) { 
                      conn.disconnect(); 
                  } 
       
              } 
       
          } 
       
          private static String readStreamData(InputStream is) throws IOException { 
              try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { 
       
                  String output; 
       
                  StringBuilder buff = new StringBuilder(); 
       
                  while ((output = br.readLine()) != null) { 
                      buff.append(output); 
                  } 
       
                  return buff.toString(); 
       
              } 
          } 
       
          private static void trustAllCert() throws NoSuchAlgorithmException, KeyManagementException { 
              // Create a trust manager that does not validate certificate chains 
              TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            @Override 
                  public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
                     return null; 
                  } 
       
                  @Override 
                  public void checkClientTrusted(X509Certificate[] certs, String authType) { 
                  } 
       
                  @Override 
                  public void checkServerTrusted(X509Certificate[] certs, String authType) { 
                  } 
              } }; 
       
              // Install the all-trusting trust manager 
              SSLContext sc = SSLContext.getInstance("SSL"); 
              sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
              HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
       
              // Create all-trusting host name verifier 
              HostnameVerifier allHostsValid = new HostnameVerifier() { 
       
                  @Override 
                  public boolean verify(String hostname, SSLSession session) { 
                      return true; 
                  } 
              }; 
       
              // Install the all-trusting host verifier 
              HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); 
          } 
      }

Sample Program to Invoke POST REST API

import java.io.BufferedReader; 
      import java.io.IOException; 
      import java.io.InputStream; 
      import java.io.InputStreamReader; 
      import java.io.OutputStream; 
      import java.net.HttpURLConnection; 
      import java.net.URL; 
      import java.security.KeyManagementException; 
      import java.security.NoSuchAlgorithmException; 
      import java.security.cert.X509Certificate; 
       
      import javax.net.ssl.HostnameVerifier; 
      import javax.net.ssl.HttpsURLConnection; 
      import javax.net.ssl.SSLContext; 
      import javax.net.ssl.SSLSession; 
      import javax.net.ssl.TrustManager; 
      import javax.net.ssl.X509TrustManager; 
       
      public class SamplePostProgram { 
       
          private static String userName = "<username>"; 
          private static String password = "<password>"; 
          private static String hostName = "<hostname>"; 
          private static String portNumber = "<portnumber>"; 
          private static String version = "2"; 
       
          /* 
           *  Note: if hostName does not contain portNumber, remove below '+ ":" + portNumber' from projectUrl 
           */ 
       
          private static String projectUrl = "https://" + hostName + ":" + portNumber + "/primeapi/restapi/project"; 
       
          public static void main(String s[]) throws Exception { 
       
              /* 
               *  Invoke the API to create a project using the provided JSON data 
               */ 
       
              String projectJson = callRestURL(projectUrl, "POST", version); 
       
              System.out.println("Project:- " + projectJson); 
       
          } 
       
          /* 
           *  Supporting Methods 
           */ 
       
          private static String callRestURL(String restUrl, String method, String version) throws Exception { 
       
              HttpURLConnection conn = null; 
       
              try { 
       
                  trustAllCert(); 
       
                  URL url = new URL(restUrl); 
       
                  /* 
                   * Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<proxyhost>", <port>)); 
                   * conn = (HttpURLConnection) url.openConnection(proxy); 
                   */ 
       
                  conn = (HttpURLConnection) url.openConnection(); 
       
                  conn.setDoOutput(true); 
                  conn.setDoInput(true); 
       
                  conn.setRequestMethod(method); 
       
                  conn.setRequestProperty("Accept", "application/json"); 
       
                  conn.setRequestProperty("Content-Type", "application/json"); 
                  conn.setRequestProperty("Version", version); 
       
                  String userCredentials = userName + ":" + password; 
       
                  String base64Credentials = javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes()); 
       
                  String basicAuth = "Basic " + base64Credentials; 
       
                  conn.setRequestProperty("Authorization", basicAuth); 
       
                  String input = "{\"projectCode\":\"P62111\", \"calendarId\":0, \"status\":\"ACTIVE\", \"projectName\":\"P15\",\"workspaceId\":2001, \"pegRate\":12}"; 
       
                  OutputStream os = conn.getOutputStream(); 
                  os.write(input.getBytes("UTF-8")); 
                  os.flush(); 
       
                  if (conn.getResponseCode() != 200 && conn.getResponseCode() != 201 && conn.getResponseCode() != 204 && conn.getResponseCode() != 202 
                          && conn.getResponseCode() != 203) { 
       
                      throw new RuntimeException("Failed : HTTP error code : " 
       
                              + conn.getResponseCode() + " Error: " + readStreamData(conn.getErrorStream())); 
       
                  } 
       
                  return readStreamData(conn.getInputStream()); 
       
              } finally { 
       
                  if (conn != null) { 
                      conn.disconnect(); 
                  } 
       
              } 
       
          } 
       
          private static String readStreamData(InputStream is) throws IOException { 
              try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { 
       
                  String output; 
       
                  StringBuilder buff = new StringBuilder(); 
       
                  while ((output = br.readLine()) != null) { 
       
                      buff.append(output); 
       
                  } 
       
                  return buff.toString(); 
       
              } 
          } 
       
          private static void trustAllCert() throws NoSuchAlgorithmException, KeyManagementException { 
              // Create a trust manager that does not validate certificate chains 
              TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { 
       
                  @Override 
                  public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
                      return null; 
                  } 
       
                  @Override 
                  public void checkClientTrusted(X509Certificate[] certs, String authType) { 
                  } 
       
                  @Override 
                  public void checkServerTrusted(X509Certificate[] certs, String authType) { 
                  } 
              } }; 
       
              // Install the all-trusting trust manager 
              SSLContext sc = SSLContext.getInstance("SSL"); 
              sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
              HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 
       
              // Create all-trusting host name verifier 
              HostnameVerifier allHostsValid = new HostnameVerifier() { 
       
                  @Override 
                  public boolean verify(String hostname, SSLSession session) { 
                      return true; 
                  } 
              }; 
       
              // Install the all-trusting host verifier 
              HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); 
          } 
       
      }