public static ByteSource newConfigEntrySupplier(final URI configBundle, String entryName) { ByteSource configBundleInput = new ByteSource() { @Override public InputStream openStream() throws IOException { URL url = configBundle.toURL(); URLConnection connection = url.openConnection(); if (connection instanceof HttpURLConnection) { HttpURLConnection httpConnection = (HttpURLConnection) connection; httpConnection.addRequestProperty("User-Agent", "User-Agent: Apache-Maven/3.0.3 (Java 1.6.0_29; Mac OS X 10.7.2)"); } InputStream in = connection.getInputStream(); return in; } }; return newConfigEntrySupplier(configBundleInput, entryName); }
private static void listFilesRecursive(String path, LinkedHashMap<String, File> files, File dir) { if (!path.isEmpty() && !path.endsWith("/")) { path = path + "/"; } for (File file : firstNonNull(dir.listFiles(), new File[0])) { String filePath = path + file.getName(); if (file.isDirectory()) { files.put(filePath, file); listFilesRecursive(filePath, files, file); } else { files.put(filePath, file); } } }
public static ConfigurationFactory createConfigurationFactory(Repository repository, String config) { URI configUri = repository.configToHttpUri(config); if (configUri == null) { throw new RuntimeException("Unknown configuration: " + config); } try { Properties properties = loadProperties(newConfigEntrySupplier(configUri, CONFIG_PROPERTIES)); return new ConfigurationFactory(Maps.fromProperties(properties)); } catch (IOException e) { String message = format("Unable to read %s from config %s: %s", CONFIG_PROPERTIES, config, e.getMessage()); throw new RuntimeException(message, e); } }
ConfigurationFactory configurationFactory = createConfigurationFactory(repository, agentConfig); HttpServerConfig httpServerConfig = configurationFactory.build(HttpServerConfig.class);
public static void packConfig(File outputFile, String rootPath, File... inputDirs) throws IOException { FileOutputStream outputStream = new FileOutputStream(outputFile); try { packConfig(outputStream, rootPath, inputDirs); } catch (IOException e) { outputStream.close(); } }
public static void packConfig(OutputStream outputStream, String rootPath, File... inputDirs) throws IOException { ZipOutputStream out = new ZipOutputStream(outputStream); try { zipDirectory(out, rootPath, inputDirs); } finally { out.finish(); out.flush(); } }
ConfigUtils.unpackConfig(Resources.asByteSource(url), binaryRootDir);
ConfigurationFactory configurationFactory = createConfigurationFactory(repository, coordinatorConfigSpec); AwsProvisionerConfig awsProvisionerConfig = configurationFactory.build(AwsProvisionerConfig.class); HttpServerConfig httpServerConfig = configurationFactory.build(HttpServerConfig.class);
public static Map<String, Integer> readResources(Repository repository, Assignment assignment) { ImmutableMap.Builder<String, Integer> builder = ImmutableMap.builder(); ByteSource resourcesFile = newConfigEntrySupplier(repository, assignment.getConfig(), "airship-resources.properties"); if (resourcesFile != null) { try { Properties resources = new Properties(); resources.load(resourcesFile.openStream()); for (Entry<Object, Object> entry : resources.entrySet()) { builder.put((String) entry.getKey(), Integer.valueOf((String) entry.getValue())); } } catch (IOException ignored) { } } return builder.build(); } }
ConfigurationFactory configurationFactory = createConfigurationFactory(repository, coordinatorConfig);
private static void zipDirectory(ZipOutputStream out, String rootPath, File... inputDirs) throws IOException { LinkedHashMap<String, File> files = newLinkedHashMap(); for (File inputDir : Lists.reverse(Arrays.asList(inputDirs))) { listFilesRecursive(rootPath, files, inputDir); } for (Entry<String, File> entry : files.entrySet()) { String path = entry.getKey(); File file = entry.getValue(); if (file.isDirectory()) { if (!path.endsWith("/")) { path = path + "/"; } ZipEntry dirEntry = new ZipEntry(path); dirEntry.setTime(file.lastModified()); out.putNextEntry(dirEntry); } else { ZipEntry fileEntry = new ZipEntry(path); fileEntry.setTime(file.lastModified()); out.putNextEntry(fileEntry); Files.copy(file, out); } } }
public static ByteSource newConfigEntrySupplier(Repository repository, String config, final String entryName) { URI uri = repository.configToHttpUri(config); if (uri == null) { return null; } URL configUrl; try { configUrl = uri.toURL(); } catch (MalformedURLException e) { throw new RuntimeException("Invalid config bundle location " + uri); } return ConfigUtils.newConfigEntrySupplier(Resources.asByteSource(configUrl), entryName); }
ConfigurationFactory configurationFactory = createConfigurationFactory(repository, coordinatorConfig);
ByteSource configFile = ConfigUtils.newConfigEntrySupplier(repository, config, "airship-service-inventory.json"); if (configFile == null) { return null;