View Javadoc

1   package com.atlassian.security.auth.trustedapps;
2   
3   import java.io.FileNotFoundException;
4   import java.io.IOException;
5   import java.io.InputStream;
6   import java.io.InputStreamReader;
7   import java.net.MalformedURLException;
8   import java.net.URL;
9   import java.net.URLConnection;
10  
11  /**
12   * Take a URL and produce an {@link Application}.
13   */
14  public class URLApplicationRetriever implements ApplicationRetriever
15  {
16      private static final String CERTIFICATE_URL_PATH = "/admin/appTrustCertificate";
17  
18      private final String baseUrl;
19      private final EncryptionProvider encryptionProvider;
20  
21      public URLApplicationRetriever(String baseUrl, EncryptionProvider encryptionProvider)
22      {
23          Null.not("baseUrl", baseUrl);
24          Null.not("encryptionProvider", encryptionProvider);
25  
26          this.baseUrl = baseUrl;
27          this.encryptionProvider = encryptionProvider;
28      }
29  
30      public Application getApplication() throws RetrievalException
31      {
32          final String certUrl = baseUrl + CERTIFICATE_URL_PATH;
33          try
34          {
35              final URLConnection con = new URL(certUrl).openConnection();
36              con.connect();
37              final InputStream in = con.getInputStream();
38              final InputStreamReader reader = new InputStreamReader(in);
39              final ReaderApplicationRetriever retriever = new ReaderApplicationRetriever(reader, encryptionProvider);
40              return retriever.getApplication();
41          }
42          catch (FileNotFoundException e)
43          {
44              throw new ApplicationNotFoundException(e);
45          }
46          catch (MalformedURLException e)
47          {
48              throw new RemoteSystemNotFoundException(e);
49          }
50          catch (IOException e)
51          {
52              throw new RemoteSystemNotFoundException(e);
53          }
54      }
55  }