com.google.gxp.compiler.fs..svn.text-base.AbstractFileSystem.svn-base Maven / Gradle / Ivy
Show all versions of google-gxp Show documentation
/*
* Copyright (C) 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.gxp.compiler.fs;
import com.google.common.collect.Lists;
import java.nio.charset.Charset;
import java.util.*;
import java.util.regex.Pattern;
/**
* Abstract base class for typical implementations of {@code FileSystem}. This
* is useful for implementing {@code FileSystem}s that have all of the
* following characteristics:
*
* - use a single {@code FileStore}
*
- represent a filename list as a sequence of filenames separated by some
* delimiter which can be matched by a regular expression
*
*/
public abstract class AbstractFileSystem implements FileSystem {
/**
* Returns the FileStore used by this FileSystem.
*/
protected abstract FileStore getFileStore();
/**
* Returns a regular expression which matches filename list delimters.
*/
protected abstract Pattern getFilenameListDelimiter();
/**
* {@inheritDoc}
*
* This implementation simply returns a {@code FileRef} with the abstract
* name "/" on the {@code FileStore} returned by {@link #getFileStore()}.
*/
public final FileRef getRoot() {
return new FileRef(getFileStore(), "/");
}
/**
* {@inheritDoc}
*
*
This implementation splits {@code filenameList} using the result of
* {@link #getFilenameListDelimiter()} and parses the resulting filenames
* with {@link #parseFilename(String)}.
*/
public final List parseFilenameList(String filenameList) {
String[] filenames = getFilenameListDelimiter().split(filenameList, -1);
List result = Lists.newArrayListWithExpectedSize(filenames.length);
for (int i = 0; i < filenames.length; i++) {
result.add(parseFilename(filenames[i]));
}
return Collections.unmodifiableList(result);
}
public Charset getDefaultCharset() {
throw new UnsupportedOperationException();
}
}