/** * Tests that parsing a URI fails with the expected error. */ private void testBadlyFormedUri(final String uri, final String errorMsg) { try { new URLFileNameParser(80).parseUri(null, null, uri); fail(); } catch (final FileSystemException e) { assertSameMessage(errorMsg, uri, e); } } }
/** * Extracts the hostname from a URI. * * @param name string buffer with the "scheme://[userinfo@]" part has been removed already. Will be modified. * @return the host name or null. */ @Override protected String extractHostName( StringBuilder name ) { final String hostname = super.extractHostName( name ); // Trick the URLFileNameParser into thinking we have a hostname so we don't have to refactor it. return hostname == null ? EMPTY_HOSTNAME : hostname; } }
@Override public FileName parseChildUri(final VfsComponentContext context, final FileName base, final String filename) throws FileSystemException { // FTP URI are generic URI (as per RFC 2396) final StringBuilder name = new StringBuilder(); // Extract the scheme and authority parts final Authority auth = extractToPath(filename, name); // Extract the queryString final String queryString = UriParser.extractQueryString(name); // Decode and normalise the file name UriParser.canonicalizePath(name, 0, name.length(), this); //UriParser.fixSeparators(name); final FileType fileType = UriParser.normalisePath(name); final String path = name.toString(); return new URLFileName( auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(), path, fileType, queryString); } }
/** * Parse a URI. * * @param context The component context. * @param base The base FileName. * @param uri The target file name. * @return The FileName. * @throws FileSystemException if an error occurs */ @Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String uri) throws FileSystemException { if (isUrlBased(base, uri)) { return url.parseUri(context, base, uri); } return generic.parseUri(context, base, uri); }
@Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String filename) throws FileSystemException { // FTP URI are generic URI (as per RFC 2396) final StringBuilder name = new StringBuilder(); // Extract the scheme and authority parts final Authority auth = extractToPath(filename, name); // Extract the queryString final String queryString = UriParser.extractQueryString(name); // Decode and normalise the file name UriParser.canonicalizePath(name, 0, name.length(), this); UriParser.fixSeparators(name); final FileType fileType = UriParser.normalisePath(name); final String path = name.toString(); return new URLFileName(auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(), auth.getUserName(), auth.getPassword(), path, fileType, queryString); } }
/** * Parse a URI. * * @param context The component context. * @param base The base FileName. * @param uri The target file name. * @return The FileName. * @throws FileSystemException if an error occurs */ @Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String uri) throws FileSystemException { if (isUrlBased(base, uri)) { return url.parseUri(context, base, uri); } return generic.parseUri(context, base, uri); }
/** * Tests that parsing a URI fails with the expected error. */ private void testBadlyFormedUri(final String uri, final String errorMsg) { try { new URLFileNameParser(80).parseUri(null, null, uri); fail(); } catch (final FileSystemException e) { assertSameMessage(errorMsg, uri, e); } } }
@Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String filename) throws FileSystemException { // FTP URI are generic URI (as per RFC 2396) final StringBuilder name = new StringBuilder(); // Extract the scheme and authority parts final Authority auth = extractToPath(filename, name); // Extract the queryString final String queryString = UriParser.extractQueryString(name); // Decode and normalise the file name UriParser.canonicalizePath(name, 0, name.length(), this); UriParser.fixSeparators(name); final FileType fileType = UriParser.normalisePath(name); final String path = name.toString(); return new URLFileName(auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(), auth.getUserName(), auth.getPassword(), path, fileType, queryString); } }
/** * Parse a URI. * * @param context The component context. * @param base The base FileName. * @param uri The target file name. * @return The FileName. * @throws FileSystemException if an error occurs */ @Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String uri) throws FileSystemException { if (isUrlBased(base, uri)) { return url.parseUri(context, base, uri); } return generic.parseUri(context, base, uri); }
/** * Tests that parsing a URI fails with the expected error. */ private void testBadlyFormedUri(final String uri, final String errorMsg) { try { new URLFileNameParser(80).parseUri(null, null, uri); fail(); } catch (final FileSystemException e) { assertSameMessage(errorMsg, uri, e); } } }
@Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String filename) throws FileSystemException { // FTP URI are generic URI (as per RFC 2396) final StringBuilder name = new StringBuilder(); // Extract the scheme and authority parts final Authority auth = extractToPath(filename, name); // Extract the queryString final String queryString = UriParser.extractQueryString(name); // Decode and normalise the file name UriParser.canonicalizePath(name, 0, name.length(), this); UriParser.fixSeparators(name); final FileType fileType = UriParser.normalisePath(name); final String path = name.toString(); return new URLFileName(auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(), auth.getUserName(), auth.getPassword(), path, fileType, queryString); } }
@Override public FileName parseUri( VfsComponentContext context, FileName base, String filename ) throws FileSystemException { URLFileName fileNameURLFileName = (URLFileName) super.parseUri( context, base, filename ); return new URLFileName( fileNameURLFileName.getScheme(), getHostNameCaseSensitive( filename ), fileNameURLFileName.getPort(), fileNameURLFileName.getDefaultPort(), fileNameURLFileName.getUserName(), fileNameURLFileName.getPassword(), fileNameURLFileName.getPath(), fileNameURLFileName.getType(), fileNameURLFileName.getQueryString() ); }
final URLFileNameParser urlParser = new URLFileNameParser(21); GenericFileName name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("hostname", name.getHostName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname:9090/file"); assertEquals("ftp", name.getScheme()); assertEquals("hostname", name.getHostName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname"); assertEquals("ftp", name.getScheme()); assertEquals("hostname", name.getHostName());
@Override public FileName parseUri(final VfsComponentContext context, final FileName base, final String filename) throws FileSystemException { // FTP URI are generic URI (as per RFC 2396) final StringBuilder name = new StringBuilder(); // Extract the scheme and authority parts final Authority auth = extractToPath(filename, name); // Extract the queryString final String queryString = UriParser.extractQueryString(name); // Decode and normalise the file name UriParser.canonicalizePath(name, 0, name.length(), this); UriParser.fixSeparators(name); final FileType fileType = UriParser.normalisePath(name); final String path = name.toString(); return new URLFileName( auth.getScheme(), auth.getHostName(), auth.getPort(), getDefaultPort(), path, fileType, queryString); }
final URLFileNameParser urlParser = new URLFileNameParser(21); GenericFileName name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname/file"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname:9090/file"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://user@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://user:password@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://%75ser%3A:%40@hostname"); assertEquals("ftp", name.getScheme()); assertEquals("user:", name.getUserName());
final URLFileNameParser urlParser = new URLFileNameParser(21); GenericFileName name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname/file"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname:9090/file"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://hostname"); assertEquals("ftp", name.getScheme()); assertNull(name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://user@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://user:password@hostname/file"); assertEquals("ftp", name.getScheme()); assertEquals("user", name.getUserName()); name = (GenericFileName) urlParser.parseUri(null, null, "ftp://%75ser%3A:%40@hostname"); assertEquals("ftp", name.getScheme()); assertEquals("user:", name.getUserName());