private TransferSettings askPluginSettings(TransferSettings settings, Map<String, String> knownPluginSettings) throws StorageException { if (isInteractive) { out.println(); out.println("Connection details for " + settings.getType() + " connection:"); if (!settings.isValid()) { if (askRetryInvalidSettings(settings.getReasonForLastValidationFail())) { return askPluginSettings(settings, knownPluginSettings); throw new StorageException("Validation failed: " + settings.getReasonForLastValidationFail()); logger.log(Level.INFO, "Settings are " + settings.toString());
@Override public String read(InputNode node) throws Exception { InputNode encryptedAttribute = node.getAttribute("encrypted"); if (encryptedAttribute != null && encryptedAttribute.getValue().equals(Boolean.TRUE.toString())) { return TransferSettings.decrypt(node.getValue()); } return node.getValue(); }
@Override public void write(OutputNode node, String raw) throws Exception { if (encryptedFields.contains(node.getName())) { node.setValue(TransferSettings.encrypt(raw)); node.setAttribute("encrypted", Boolean.TRUE.toString()); } else { node.setValue(raw); } }
protected TransferManager createTransferManagerFromNullConfig(ConfigTO configTo) throws IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchMethodException, StorageException { // Init plugin and transfer manager TransferPlugin plugin = Plugins.get(configTo.getTransferSettings().getType(), TransferPlugin.class); TransferSettings transferSettings = configTo.getTransferSettings(); transferSettings.setUserInteractionListener(listener); TransferManager transferManager = plugin.createTransferManager(transferSettings, config); // constructor is not visible and config seems to be null at this point, hence we cannot use the build method here Constructor<TransferManagerBuilder> tmbConstructor = TransferManagerBuilder.class.getDeclaredConstructor(Config.class, TransferManager.class); tmbConstructor.setAccessible(true); return tmbConstructor.newInstance(config, transferManager) .withFeature(ReadAfterWriteConsistent.class) .asDefault(); } }
private byte[] getPlaintextStorageXml() throws Exception { ByteArrayOutputStream plaintextByteArrayOutputStream = new ByteArrayOutputStream(); DataOutputStream plaintextOutputStream = new DataOutputStream(plaintextByteArrayOutputStream); plaintextOutputStream.writeInt(transferSettings.getType().getBytes().length); plaintextOutputStream.write(transferSettings.getType().getBytes()); GZIPOutputStream plaintextGzipOutputStream = new GZIPOutputStream(plaintextOutputStream); new Persister(new Format(0)).write(transferSettings, plaintextGzipOutputStream); plaintextGzipOutputStream.close(); return plaintextByteArrayOutputStream.toByteArray(); } }
if (!transferSettings.isValid()) { throw new StorageException("Unable to create transfer manager: connection isn't valid (perhaps missing some mandatory fields?)");
private String askPluginOptionOptional(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; if (knownOptionValue == null || "".equals(knownOptionValue)) { String defaultValueDescription = settings.getField(option.getField().getName()); if (defaultValueDescription == null) { defaultValueDescription = "none"; } out.printf("- %s (optional, default is %s): ", getDescription(settings, option), defaultValueDescription); value = console.readLine(); } else { out.printf("- %s (%s): ", getDescription(settings, option), knownOptionValue); value = console.readLine(); if ("".equals(value)) { value = knownOptionValue; } } return value; }
private void askNormalPluginSettings(TransferSettings settings, TransferPluginOption option, Map<String, String> knownPluginSettings, String nestPrefix) throws StorageException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { TransferPluginOptionCallback optionCallback = createOptionCallback(settings, option.getCallback()); TransferPluginOptionConverter optionConverter = createOptionConverter(settings, option.getConverter()); if (!isInteractive && !knownPluginSettings.containsKey(nestPrefix + option.getName())) { throw new IllegalArgumentException("Missing plugin option (" + nestPrefix + option.getName() + ") in non-interactive mode."); } else if (knownPluginSettings.containsKey(nestPrefix + option.getName())) { settings.setField(option.getField().getName(), knownPluginSettings.get(nestPrefix + option.getName())); } else if (!option.isVisible()) { // Do nothing. Invisible option! } else { callAndPrintPreQueryCallback(optionCallback); String optionValue = askPluginOption(settings, option); if (optionConverter != null) { optionValue = optionConverter.convert(optionValue); } settings.setField(option.getField().getName(), optionValue); callAndPrintPostQueryCallback(optionCallback, optionValue); } }
private void initConnection(ConfigTO configTO) throws ConfigException { if (configTO.getTransferSettings() != null) { plugin = Plugins.get(configTO.getTransferSettings().getType(), TransferPlugin.class); if (plugin == null) { throw new ConfigException("Plugin not supported: " + configTO.getTransferSettings().getType()); } try { transferSettings = configTO.getTransferSettings(); } catch (Exception e) { throw new ConfigException("Cannot initialize storage: " + e.getMessage(), e); } } }
private String askPluginOptionSensitive(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; String optionalIndicator = option.isRequired() ? "" : ", optional"; if (option.isSingular() || knownOptionValue == null || "".equals(knownOptionValue)) { out.printf("- %s (not displayed%s): ", getDescription(settings, option), optionalIndicator); value = String.copyValueOf(console.readPassword()); } else { out.printf("- %s (***, not displayed%s): ", getDescription(settings, option), optionalIndicator); value = String.copyValueOf(console.readPassword()); if ("".equals(value)) { value = knownOptionValue; } } return value; }
/** * Asks the user for all of the child plugin's settings. * * <p>This case is triggered by a field looking like this: * <tt>private LocalTransferSettings localChildPluginSettings;</tt> */ private void askConreteChildPluginSettings(TransferSettings settings, NestedTransferPluginOption option, Map<String, String> knownPluginSettings, String nestPrefix) throws StorageException, IllegalAccessException, InstantiationException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { TransferPluginOptionCallback optionCallback = createOptionCallback(settings, option.getCallback()); if (isInteractive) { callAndPrintPreQueryCallback(optionCallback); out.println(); out.println(option.getDescription() + ":"); } for (TransferPluginOption nestedPluginOption : option.getOptions()) { Class<?> nestedTransferSettingsClass = ReflectionUtil.getClassFromType(option.getType()); if (nestedTransferSettingsClass == null) { throw new RuntimeException("No class found for type: " + option.getType()); } TransferSettings nestedSettings = (TransferSettings) nestedTransferSettingsClass.newInstance(); settings.setField(option.getField().getName(), nestedSettings); nestPrefix = nestPrefix + option.getName() + NESTED_OPTIONS_SEPARATOR; askPluginSettings(nestedSettings, nestedPluginOption, knownPluginSettings, nestPrefix); } if (isInteractive) { callAndPrintPostQueryCallback(optionCallback, null); } }
RepoTO repoTO = ConfigHelper.loadRepoTO(localDir, configTO); String pluginId = (configTO.getTransferSettings() != null) ? configTO.getTransferSettings().getType() : null; TransferPlugin plugin = Plugins.get(pluginId, TransferPlugin.class);
private String askPluginOptionNormal(TransferSettings settings, TransferPluginOption option) throws StorageException { String knownOptionValue = settings.getField(option.getField().getName()); String value = knownOptionValue; if (option.isSingular() || knownOptionValue == null || "".equals(knownOptionValue)) { out.printf("- %s: ", getDescription(settings, option)); value = console.readLine(); } else { out.printf("- %s (%s): ", getDescription(settings, option), knownOptionValue); value = console.readLine(); if ("".equals(value)) { value = knownOptionValue; } } return value; }
settings.setField(option.getField().getName(), childSettings); nestPrefix = nestPrefix + option.getName() + NESTED_OPTIONS_SEPARATOR;