-
Notifications
You must be signed in to change notification settings - Fork 122
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added cleaner Executrix temp file names API, deprecated array-based A…
…PI (#1037)
- Loading branch information
1 parent
ee88bcf
commit d88cb58
Showing
5 changed files
with
389 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
package emissary.util.shell; | ||
|
||
import emissary.util.io.FileManipulator; | ||
|
||
import java.io.File; | ||
|
||
/** | ||
* A related set file and directory path names suitable for operations that require temporary disk-backed files. The | ||
* names do not directly imply that corresponding files and directories actually exist; I/O operations including | ||
* creating or deletions of files or directories is the responsibility of TempFileNames instance consumers. | ||
*/ | ||
public class TempFileNames { | ||
private final String tempDir; | ||
private final String base; | ||
private final String basePath; | ||
private final String in; | ||
private final String out; | ||
private final String inputFilename; | ||
private final String outputFilename; | ||
|
||
/** | ||
* Creates a new TempFileNames instance, using the same logic as the legacy{@link Executrix#makeTempFilenames()} API | ||
* | ||
* @param tmpDir configured temp directory for the server process | ||
* @param placeName place for which the names are needed | ||
* @param inFileEnding input file ending | ||
* @param outFileEnding output file ending | ||
*/ | ||
TempFileNames(String tmpDir, String placeName, String inFileEnding, String outFileEnding) { | ||
base = Long.toString(System.nanoTime()); | ||
tempDir = FileManipulator.mkTempFile(tmpDir, placeName); | ||
in = base + inFileEnding; | ||
out = base + outFileEnding; | ||
basePath = tempDir + File.separator + base; | ||
inputFilename = basePath + inFileEnding; | ||
outputFilename = basePath + outFileEnding; | ||
} | ||
|
||
/** | ||
* Temporary directory name for commands that use file i/o | ||
* <p> | ||
* Corresponds to the {@link Executrix#DIR} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return temp directory name | ||
*/ | ||
public String getTempDir() { | ||
return tempDir; | ||
} | ||
|
||
/** | ||
* Pseudorandom value intended to help ensure unique temporary filenames | ||
* <p> | ||
* Corresponds to the {@link Executrix#BASE} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return Pseudorandom key for this instance | ||
* @deprecated this property should be considered internal-use only and will likely be removed | ||
*/ | ||
@Deprecated | ||
public String getBase() { | ||
return base; | ||
} | ||
|
||
/** | ||
* Pseudorandom sub-path intended to help ensure unique temporary filenames | ||
* <p> | ||
* Corresponds to the {@link Executrix#BASE_PATH} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return Pseudorandom sub-path | ||
* @deprecated this property should be considered internal-use only and will likely be removed | ||
*/ | ||
@Deprecated | ||
public String getBasePath() { | ||
return basePath; | ||
} | ||
|
||
/** | ||
* Pseudo-random value intended to help ensure unique input filenames | ||
* <p> | ||
* Corresponds to the {@link Executrix#IN} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return Input filename path, relative to the {@link #getTempDir()} value | ||
*/ | ||
public String getIn() { | ||
return in; | ||
} | ||
|
||
/** | ||
* Pseudo-random value intended to help ensure unique output filenames | ||
* <p> | ||
* Corresponds to the {@link Executrix#OUT} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return Output filename path, relative to the {@link #getTempDir()} value | ||
*/ | ||
public String getOut() { | ||
return out; | ||
} | ||
|
||
/** | ||
* Input filename for commands that use file input | ||
* <p> | ||
* Corresponds to the {@link Executrix#INPATH} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return input filename | ||
*/ | ||
public String getInputFilename() { | ||
return inputFilename; | ||
} | ||
|
||
/** | ||
* Output filename for commands that generate file output | ||
* <p> | ||
* Corresponds to the {@link Executrix#OUTPATH} usage in the legacy Executrix API | ||
* </p> | ||
* | ||
* @return Output filename | ||
*/ | ||
public String getOutputFilename() { | ||
return outputFilename; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "TempFileNames{" + | ||
"tempDir='" + tempDir + '\'' + | ||
", base='" + base + '\'' + | ||
", basePath='" + basePath + '\'' + | ||
", in='" + in + '\'' + | ||
", out='" + out + '\'' + | ||
", inputFilename='" + inputFilename + '\'' + | ||
", outputFilename='" + outputFilename + '\'' + | ||
'}'; | ||
} | ||
} |
Oops, something went wrong.