github.com/docker/compose-on-kubernetes@v0.5.0/samples/words/src/main/java/Main.java (about)

     1  import com.google.common.base.Charsets;
     2  import com.google.common.base.Supplier;
     3  import com.google.common.base.Suppliers;
     4  import com.sun.net.httpserver.HttpHandler;
     5  import com.sun.net.httpserver.HttpServer;
     6  
     7  import java.io.OutputStream;
     8  import java.net.InetSocketAddress;
     9  import java.sql.*;
    10  import java.util.NoSuchElementException;
    11  
    12  public class Main {
    13      public static void main(String[] args) throws Exception {
    14          Class.forName("org.postgresql.Driver");
    15  
    16          HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
    17          server.createContext("/noun", handler(Suppliers.memoize(() -> randomWord("nouns"))));
    18          server.createContext("/verb", handler(Suppliers.memoize(() -> randomWord("verbs"))));
    19          server.createContext("/adjective", handler(Suppliers.memoize(() -> randomWord("adjectives"))));
    20          server.start();
    21      }
    22  
    23      private static String randomWord(String table) {
    24          try (Connection connection = DriverManager.getConnection("jdbc:postgresql://db:5432/postgres", "postgres", "")) {
    25              try (Statement statement = connection.createStatement()) {
    26                  try (ResultSet set = statement.executeQuery("SELECT word FROM " + table + " ORDER BY random() LIMIT 1")) {
    27                      while (set.next()) {
    28                          return set.getString(1);
    29                      }
    30                  }
    31              }
    32          } catch (SQLException e) {
    33              e.printStackTrace();
    34          }
    35  
    36          throw new NoSuchElementException(table);
    37      }
    38  
    39      private static HttpHandler handler(Supplier<String> word) {
    40          return t -> {
    41              String response = "{\"word\":\"" + word.get() + "\"}";
    42              byte[] bytes = response.getBytes(Charsets.UTF_8);
    43  
    44              System.out.println(response);
    45              t.getResponseHeaders().add("content-type", "application/json; charset=utf-8");
    46              t.sendResponseHeaders(200, bytes.length);
    47  
    48              try (OutputStream os = t.getResponseBody()) {
    49                  os.write(bytes);
    50              }
    51          };
    52      }
    53  }