This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
The following commit(s) were added to refs/heads/master by this push:
new a9bcce8 Proper initialization of ThreadLocal.
a9bcce8 is described below
commit a9bcce8b667d6941d072560e5ff93c019bccb000
Author: Gary Gregory <[email protected]>
AuthorDate: Wed Jan 13 16:19:19 2021 -0500
Proper initialization of ThreadLocal.
---
.../commons/vfs2/provider/DefaultFileContent.java | 35 ++++++++++------------
1 file changed, 15 insertions(+), 20 deletions(-)
diff --git
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
index 07b7367..786386a 100644
---
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
+++
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
@@ -63,7 +63,7 @@ public final class DefaultFileContent implements FileContent {
private FileContentInfo fileContentInfo;
private final FileContentInfoFactory fileContentInfoFactory;
- private final ThreadLocal<FileContentThreadData> threadLocal = new
ThreadLocal<>();
+ private final ThreadLocal<FileContentThreadData> threadLocal =
ThreadLocal.withInitial(FileContentThreadData::new);
private boolean resetAttributes;
/**
@@ -76,13 +76,8 @@ public final class DefaultFileContent implements FileContent
{
this.fileContentInfoFactory = fileContentInfoFactory;
}
- private FileContentThreadData getOrCreateThreadData() {
- FileContentThreadData data = this.threadLocal.get();
- if (data == null) {
- data = new FileContentThreadData();
- this.threadLocal.set(data);
- }
- return data;
+ private FileContentThreadData getFileContentThreadData() {
+ return this.threadLocal.get();
}
void streamOpened() {
@@ -379,7 +374,7 @@ public final class DefaultFileContent implements
FileContent {
final FileRandomAccessContent rac = new
FileRandomAccessContent(fileObject, rastr);
- getOrCreateThreadData().addRastr(rac);
+ getFileContentThreadData().addRastr(rac);
streamOpened();
return rac;
@@ -444,11 +439,11 @@ public final class DefaultFileContent implements
FileContent {
public void close() throws FileSystemException {
FileSystemException caught = null;
try {
- final FileContentThreadData fileContentThreadData =
getOrCreateThreadData();
+ final FileContentThreadData threadData =
getFileContentThreadData();
// Close the input stream
- while (fileContentThreadData.getInstrsSize() > 0) {
- final InputStream inputStream =
fileContentThreadData.removeInputStream(0);
+ while (threadData.getInstrsSize() > 0) {
+ final InputStream inputStream =
threadData.removeInputStream(0);
try {
if (inputStream instanceof FileContentInputStream) {
((FileContentInputStream) inputStream).close();
@@ -464,8 +459,8 @@ public final class DefaultFileContent implements
FileContent {
}
// Close the randomAccess stream
- while (fileContentThreadData.getRastrsSize() > 0) {
- final FileRandomAccessContent randomAccessContent =
(FileRandomAccessContent) fileContentThreadData
+ while (threadData.getRastrsSize() > 0) {
+ final FileRandomAccessContent randomAccessContent =
(FileRandomAccessContent) threadData
.removeRastr(0);
try {
randomAccessContent.close();
@@ -475,9 +470,9 @@ public final class DefaultFileContent implements
FileContent {
}
// Close the output stream
- final FileContentOutputStream outputStream =
fileContentThreadData.getOutstr();
+ final FileContentOutputStream outputStream =
threadData.getOutstr();
if (outputStream != null) {
- fileContentThreadData.setOutstr(null);
+ threadData.setOutstr(null);
try {
outputStream.close();
} catch (final FileSystemException ex) {
@@ -522,7 +517,7 @@ public final class DefaultFileContent implements
FileContent {
: new FileContentInputStream(fileObject, inputStream,
bufferSize);
// @formatter:on
}
- getOrCreateThreadData().addInstr(wrappedInputStream);
+ getFileContentThreadData().addInstr(wrappedInputStream);
streamOpened();
return wrappedInputStream;
@@ -532,9 +527,9 @@ public final class DefaultFileContent implements
FileContent {
/*
* if (getThreadData().getState() != STATE_NONE)
*/
- final FileContentThreadData streams = getOrCreateThreadData();
+ final FileContentThreadData threadData = getFileContentThreadData();
- if (streams.getOutstr() != null) {
+ if (threadData.getOutstr() != null) {
throw new FileSystemException("vfs.provider/write-in-use.error",
fileObject);
}
@@ -545,7 +540,7 @@ public final class DefaultFileContent implements
FileContent {
final FileContentOutputStream wrapped = bufferSize == 0 ?
new FileContentOutputStream(fileObject, outstr) :
new FileContentOutputStream(fileObject, outstr, bufferSize);
- streams.setOutstr(wrapped);
+ threadData.setOutstr(wrapped);
streamOpened();
return wrapped;