Example usage for org.apache.commons.vfs.provider.sftp SftpFileNameParser getInstance

List of usage examples for org.apache.commons.vfs.provider.sftp SftpFileNameParser getInstance

Introduction

In this page you can find the example usage for org.apache.commons.vfs.provider.sftp SftpFileNameParser getInstance.

Prototype

public static FileNameParser getInstance() 

Source Link

Usage

From source file:org.pentaho.di.core.vfs.configuration.KettleSftpFileSystemConfigBuilder.java

/**
 * Publicly expose a generic way to set parameters
 *///from  ww w.  j a  v  a  2s. c o  m
@Override
public void setParameter(FileSystemOptions opts, String name, String value, String fullParameterName,
        String vfsUrl) throws IOException {
    if (!fullParameterName.startsWith("vfs.sftp")) {
        // This is not an SFTP parameter. Delegate to the generic handler
        super.setParameter(opts, name, value, fullParameterName, vfsUrl);
    } else {
        // Check for the presence of a host in the full variable name
        try {
            // Parse server name from vfsFilename
            FileNameParser sftpFilenameParser = SftpFileNameParser.getInstance();
            URLFileName file = (URLFileName) sftpFilenameParser.parseUri(null, null, vfsUrl);

            if (!parameterContainsHost(fullParameterName) || fullParameterName.endsWith(file.getHostName())) {
                // Match special cases for parameter names
                if (name.equalsIgnoreCase("AuthKeyPassphrase")) {
                    setParam(opts, UserInfo.class.getName(), new PentahoUserInfo(value));
                } else if (name.equals("identity")) {
                    File[] identities = (File[]) this.getParam(opts, "identities");

                    if (identities == null) {
                        identities = new File[] { new File(value) };
                    } else {
                        // Copy, in a Java 5 friendly manner, identities into a larger array
                        File[] temp = new File[identities.length + 1];
                        System.arraycopy(identities, 0, temp, 0, identities.length);
                        identities = temp;

                        identities[identities.length - 1] = new File(value);
                    }
                    setParam(opts, "identities", identities);
                } else {
                    setParam(opts, name, value);
                }
            } else {
                // No host match found
                log.logDebug("No host match found for: " + fullParameterName);
            }
        } catch (IOException e) {
            log.logError("Failed to set VFS parameter: [" + fullParameterName + "] " + value, e);
        }
    }
}