Java tutorial
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.oozie.service; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocalFileSystem; import org.apache.hadoop.fs.Path; import org.apache.oozie.util.FSUtils; import java.io.IOException; public class TestShareLibMappingFileInput { final FileSystem fs; final String sharelibNameWithMappingFilePrefix; final String sharelibName; final String sharelibPath; final String baseName; public TestShareLibMappingFileInput(final FileSystem fs, final String sharelibMappingActionName, final String sharelibPath) { this.fs = fs; this.sharelibName = sharelibMappingActionName; this.sharelibNameWithMappingFilePrefix = ShareLibService.SHARE_LIB_CONF_PREFIX + "." + sharelibMappingActionName; this.sharelibPath = sharelibPath; this.baseName = sharelibPath.substring(sharelibPath.lastIndexOf(Path.SEPARATOR) + 1); } public void materialize() throws IOException { TestShareLibService.createFileWithDirectoryPath(fs, sharelibPath); } String getFullShareLibPathDir() { String fullShareLibPathDir = getLocalizedShareLibPath(fs, sharelibPath); return fullShareLibPathDir.substring(0, fullShareLibPathDir.lastIndexOf(Path.SEPARATOR)); } static String getLocalizedShareLibPath(FileSystem fs, String path) { return (fs instanceof LocalFileSystem) ? FSUtils.FILE_SCHEME_PREFIX + "//" + path : path; } } class TestShareLibMappingSymlinkInput extends TestShareLibMappingFileInput { final String symlinkPath; public TestShareLibMappingSymlinkInput(final FileSystem fs, final String sharelibActionName, final String sharelibPath, final String symlinkPath) { super(fs, sharelibActionName, sharelibPath); this.symlinkPath = symlinkPath; } @Override public void materialize() throws IOException { super.materialize(); FSUtils.createSymlink(fs, new Path(sharelibPath), new Path(symlinkPath), true); } @Override String getFullShareLibPathDir() { int lastIndexOfPathSeparator = sharelibPath.lastIndexOf(Path.SEPARATOR); String symlinkTargetFileName = (lastIndexOfPathSeparator != -1) ? sharelibPath.substring(lastIndexOfPathSeparator + 1) : sharelibPath; String fullShareLibPathDir = getLocalizedShareLibPath(fs, symlinkPath); return fullShareLibPathDir + "#" + symlinkTargetFileName; } }