diff --git a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml index 21b81a6b927..b1bd5d4de31 100644 --- a/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml +++ b/core-feature-pack/common/src/main/resources/modules/system/layers/base/org/jboss/as/server/main/module.xml @@ -83,6 +83,7 @@ + diff --git a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java index 1473c36744f..64032b0e65c 100644 --- a/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java +++ b/server/src/main/java/org/jboss/as/server/controller/git/GitRepository.java @@ -68,11 +68,11 @@ public class GitRepository implements Closeable { private final Set ignored; - private final Repository repository; + private Repository repository; private final Path basePath; private final String defaultRemoteRepository; private final String branch; - private final SshdSessionFactory sshdSessionFactory; + private SshdSessionFactory sshdSessionFactory; public GitRepository(GitRepositoryConfiguration gitConfig) throws IllegalArgumentException, IOException, ConfigXMLParseException, GeneralSecurityException { @@ -266,10 +266,33 @@ public boolean isBare() { @Override public void close() { - if (sshdSessionFactory != null) { - this.sshdSessionFactory.close(); + SshdSessionFactory toCloseSshdSessionFactory = sshdSessionFactory; + sshdSessionFactory = null; + RuntimeException rex = null; + if (toCloseSshdSessionFactory != null) { + try { + toCloseSshdSessionFactory.close(); + } catch (RuntimeException e) { + rex = e; + } + } + + Repository toCloseRepository = repository; + repository = null; + if (toCloseRepository != null) { + try { + toCloseRepository.close(); + } catch (RuntimeException e) { + if (rex == null) { + rex = e; + } else { + rex.addSuppressed(e); + } + } + } + if (rex != null) { + throw rex; } - this.repository.close(); } public String getPattern(File file) { diff --git a/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java b/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java index 35a5445ff84..07537a49230 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java +++ b/server/src/main/java/org/jboss/as/server/deployment/AbstractDeploymentUploadHandler.java @@ -18,6 +18,8 @@ */ package org.jboss.as.server.deployment; +import static org.xnio.IoUtils.safeClose; + import java.io.IOException; import java.io.InputStream; import java.util.EnumSet; @@ -79,14 +81,4 @@ public void execute(OperationContext context, ModelNode operation) throws Operat protected abstract InputStream getContentInputStream(OperationContext context, ModelNode operation) throws IOException, OperationFailedException; - private static void safeClose(InputStream is) { - if (is != null) { - try { - is.close(); - } - catch (Exception e) { - ServerLogger.ROOT_LOGGER.caughtExceptionClosingContentInputStream(e); - } - } - } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java index 1ec9447624f..ca43966d0bb 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java +++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentAddHandler.java @@ -36,6 +36,7 @@ import static org.jboss.as.server.deployment.DeploymentHandlerUtils.asString; import static org.jboss.as.server.deployment.DeploymentHandlerUtils.getInputStream; import static org.jboss.as.server.deployment.DeploymentHandlerUtils.hasValidContentAdditionParameterDefined; +import static org.xnio.IoUtils.safeClose; import java.io.IOException; import java.io.InputStream; @@ -49,7 +50,6 @@ import org.jboss.as.controller.ProcessType; import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.registry.Resource; -import org.jboss.as.protocol.StreamUtils; import org.jboss.as.repository.ContentRepository; import org.jboss.as.server.logging.ServerLogger; import org.jboss.dmr.ModelNode; @@ -205,16 +205,13 @@ DeploymentHandlerUtil.ContentItem addFromContentAdditionParameter(OperationConte InputStream in = getInputStream(context, contentItemNode); InputStream transformed = null; try { - try { - transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in); - hash = contentRepository.addContent(transformed); - } catch (IOException e) { - throw createFailureException(e.toString()); - } - + transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in); + hash = contentRepository.addContent(transformed); + } catch (IOException e) { + throw createFailureException(e.toString()); } finally { - StreamUtils.safeClose(in); - StreamUtils.safeClose(transformed); + safeClose(in); + safeClose(transformed); } return new DeploymentHandlerUtil.ContentItem(hash); } diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java index 220efec7e7d..fcdb71042be 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java +++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentFullReplaceHandler.java @@ -34,6 +34,7 @@ import static org.jboss.as.server.deployment.DeploymentHandlerUtils.createFailureException; import static org.jboss.as.server.deployment.DeploymentHandlerUtils.getInputStream; import static org.jboss.as.server.deployment.DeploymentHandlerUtils.hasValidContentAdditionParameterDefined; +import static org.xnio.IoUtils.safeClose; import java.io.IOException; import java.io.InputStream; @@ -47,7 +48,6 @@ import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.registry.Resource; -import org.jboss.as.protocol.StreamUtils; import org.jboss.as.repository.ContentReference; import org.jboss.as.repository.ContentRepository; import org.jboss.as.server.controller.resources.DeploymentAttributes; @@ -204,16 +204,13 @@ DeploymentHandlerUtil.ContentItem addFromContentAdditionParameter(OperationConte InputStream in = getInputStream(context, contentItemNode); InputStream transformed = null; try { - try { - transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in); - hash = contentRepository.addContent(transformed); - } catch (IOException e) { - throw createFailureException(e.toString()); - } - + transformed = deploymentTransformation.doTransformation(context, contentItemNode, name, in); + hash = contentRepository.addContent(transformed); + } catch (IOException e) { + throw createFailureException(e.toString()); } finally { - StreamUtils.safeClose(in); - StreamUtils.safeClose(transformed); + safeClose(in); + safeClose(transformed); } contentItemNode.clear(); // AS7-1029 contentItemNode.get(CONTENT_HASH.getName()).set(hash); diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java index 29fd6700146..f79b6744684 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java +++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentMountProvider.java @@ -23,6 +23,7 @@ package org.jboss.as.server.deployment; import static java.security.AccessController.doPrivileged; +import static org.xnio.IoUtils.safeClose; import java.io.Closeable; import java.io.IOException; @@ -45,7 +46,6 @@ import org.jboss.threads.JBossThreadFactory; import org.jboss.vfs.TempFileProvider; import org.jboss.vfs.VFS; -import org.jboss.vfs.VFSUtils; import org.jboss.vfs.VirtualFile; /** @@ -139,7 +139,8 @@ public void stop(final StopContext context) { public void run() { try { deploymentMountProviderConsumer.accept(null); - VFSUtils.safeClose(tempFileProvider); + safeClose(tempFileProvider); + tempFileProvider = null; //not needed anymore } finally { try { ScheduledExecutorService ses = scheduledExecutorService; diff --git a/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java index 0d057ca120c..a92087f641b 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java +++ b/server/src/main/java/org/jboss/as/server/deployment/DeploymentOverlayDeploymentUnitProcessor.java @@ -233,11 +233,7 @@ protected static void copyFile(final InputStream in, final File dest) throws IOE } } - protected static void close(Closeable closeable) { - try { - closeable.close(); - } catch (IOException ignore) { - } + org.xnio.IoUtils.safeClose(closeable); } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java b/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java index 973e062f084..27b8ddafbc0 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java +++ b/server/src/main/java/org/jboss/as/server/deployment/MountedDeploymentOverlay.java @@ -1,9 +1,10 @@ package org.jboss.as.server.deployment; +import static org.xnio.IoUtils.safeClose; + import org.jboss.vfs.TempFileProvider; import org.jboss.vfs.VFS; import org.jboss.vfs.VirtualFile; -import org.xnio.IoUtils; import java.io.Closeable; import java.io.File; @@ -27,7 +28,8 @@ public MountedDeploymentOverlay(Closeable closeable, File realFile, VirtualFile } public void remountAsZip(boolean expanded) throws IOException { - IoUtils.safeClose(closeable); + safeClose(closeable); + closeable = null; // following assignments may fail if(expanded) { closeable = VFS.mountZipExpanded(realFile, mountPoint, tempFileProvider); } else { @@ -37,6 +39,8 @@ public void remountAsZip(boolean expanded) throws IOException { @Override public void close() throws IOException { - closeable.close(); + Closeable toClose = closeable; + closeable = null; + toClose.close(); } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java index c7cf3061e6c..5e5c942e18c 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java +++ b/server/src/main/java/org/jboss/as/server/deployment/ServiceLoaderProcessor.java @@ -22,6 +22,8 @@ package org.jboss.as.server.deployment; +import static org.xnio.IoUtils.safeClose; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -35,7 +37,6 @@ import org.jboss.as.server.logging.ServerLogger; import org.jboss.as.server.deployment.module.ModuleRootMarker; import org.jboss.as.server.deployment.module.ResourceRoot; -import org.jboss.vfs.VFSUtils; import org.jboss.vfs.VirtualFile; /** @@ -91,7 +92,7 @@ private void processRoot(final ResourceRoot resourceRoot, final Map { public static final Parser INSTANCE = new Parser(); diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java b/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java index 773134be32a..35c88156e5d 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java +++ b/server/src/main/java/org/jboss/as/server/deployment/module/DeploymentRootMountProcessor.java @@ -22,6 +22,8 @@ package org.jboss.as.server.deployment.module; +import static org.xnio.IoUtils.safeClose; + import java.io.Closeable; import java.io.IOException; @@ -36,7 +38,6 @@ import org.jboss.as.server.deployment.MountExplodedMarker; import org.jboss.as.server.deployment.MountType; import org.jboss.vfs.VFS; -import org.jboss.vfs.VFSUtils; import org.jboss.vfs.VirtualFile; /** @@ -94,8 +95,8 @@ public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitPro failed = true; throw ServerLogger.ROOT_LOGGER.deploymentMountFailed(e); } finally { - if(failed) { - VFSUtils.safeClose(handle); + if (failed) { + safeClose(handle); } } } @@ -109,7 +110,7 @@ public void undeploy(DeploymentUnit context) { final ResourceRoot resourceRoot = context.removeAttachment(Attachments.DEPLOYMENT_ROOT); if (resourceRoot != null) { final Closeable mountHandle = resourceRoot.getMountHandle(); - VFSUtils.safeClose(mountHandle); + safeClose(mountHandle); } } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java b/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java index 1b78c80410b..baca47c90a8 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java +++ b/server/src/main/java/org/jboss/as/server/deployment/module/MountHandle.java @@ -22,9 +22,10 @@ package org.jboss.as.server.deployment.module; +import static org.xnio.IoUtils.safeClose; + import java.io.Closeable; -import org.jboss.vfs.VFSUtils; import org.wildfly.common.ref.CleanerReference; import org.wildfly.common.ref.Reaper; import org.wildfly.common.ref.Reference; @@ -43,7 +44,7 @@ public class MountHandle implements Closeable { private static final Reaper REAPER = new Reaper() { @Override public void reap(Reference reference) { - VFSUtils.safeClose(reference.getAttachment()); + safeClose(reference.getAttachment()); } }; @@ -58,7 +59,7 @@ public static MountHandle create(final Closeable handle) { return mountHandle; } - private final Closeable handle; + private Closeable handle; /** * Construct new instance with the mount handle to close. @@ -76,8 +77,7 @@ public MountHandle(final Closeable handle) { * Forcefully close this handle. Use with caution. */ public void close() { - if (handle != null) { - VFSUtils.safeClose(handle); - } + safeClose(handle); + handle = null; } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java b/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java index 9a90b503b03..bf938c519dc 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java +++ b/server/src/main/java/org/jboss/as/server/deployment/module/TempFileProviderService.java @@ -22,6 +22,9 @@ package org.jboss.as.server.deployment.module; +import static java.security.AccessController.doPrivileged; +import static org.xnio.IoUtils.safeClose; + import java.io.IOException; import java.security.PrivilegedAction; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -35,9 +38,7 @@ import org.jboss.msc.service.StopContext; import org.jboss.threads.JBossThreadFactory; import org.jboss.vfs.TempFileProvider; -import org.jboss.vfs.VFSUtils; -import static java.security.AccessController.doPrivileged; /** * Service responsible for managing the life-cycle of a TempFileProvider. @@ -74,7 +75,7 @@ public void start(StartContext context) throws StartException { * {@inheritDoc} */ public void stop(StopContext context) { - VFSUtils.safeClose(PROVIDER); + safeClose(PROVIDER); } /** diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java b/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java index 620f6ec50fc..3db82b0903a 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java +++ b/server/src/main/java/org/jboss/as/server/deployment/module/VFSResourceLoader.java @@ -23,6 +23,7 @@ package org.jboss.as.server.deployment.module; import static java.security.AccessController.doPrivileged; +import static org.xnio.IoUtils.safeClose; import java.io.BufferedReader; import java.io.IOException; @@ -180,7 +181,7 @@ public ClassSpec run() throws Exception { final long size = file.getSize(); final ClassSpec spec = new ClassSpec(); synchronized (VFSResourceLoader.this) { - final InputStream is = file.openStream(); + InputStream is = file.openStream(); try { if (size <= Integer.MAX_VALUE) { final int castSize = (int) size; @@ -193,6 +194,7 @@ public ClassSpec run() throws Exception { while (is.read() != -1) {} // done is.close(); + is = null; // avoid double close spec.setBytes(bytes); final CodeSigner[] entryCodeSigners = file.getCodeSigners(); final CodeSigners codeSigners = entryCodeSigners == null || entryCodeSigners.length == 0 ? EMPTY_CODE_SIGNERS : new CodeSigners(entryCodeSigners); @@ -206,7 +208,7 @@ public ClassSpec run() throws Exception { throw ServerLogger.ROOT_LOGGER.resourceTooLarge(); } } finally { - VFSUtils.safeClose(is); + safeClose(is); } } } diff --git a/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java b/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java index bbf99c4d6bc..96ef03e4f63 100644 --- a/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java +++ b/server/src/main/java/org/jboss/as/server/deployment/module/descriptor/DeploymentStructureDescriptorParser.java @@ -21,7 +21,8 @@ */ package org.jboss.as.server.deployment.module.descriptor; -import java.io.Closeable; +import static org.xnio.IoUtils.safeClose; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -379,30 +380,13 @@ private ParseResult parse(final InputStream source, final File file, final Deplo mapper.parseDocument(result, streamReader); return result; } finally { - safeClose(streamReader); + if (streamReader != null) { + safeClose((AutoCloseable) streamReader::close); + } } } catch (XMLStreamException e) { throw ServerLogger.ROOT_LOGGER.errorLoadingDeploymentStructureFile(file.getPath(), e); } } - private static void safeClose(final Closeable closeable) { - if (closeable != null) - try { - closeable.close(); - } catch (IOException e) { - // ignore - } - } - - private static void safeClose(final XMLStreamReader streamReader) { - if (streamReader != null) - try { - streamReader.close(); - } catch (XMLStreamException e) { - // ignore - } - } - - } diff --git a/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java b/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java index 996f2d36c03..72583dcb31b 100644 --- a/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java +++ b/server/src/main/java/org/jboss/as/server/deploymentoverlay/DeploymentOverlayContentAdd.java @@ -28,6 +28,7 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.INPUT_STREAM_INDEX; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.URL; +import static org.xnio.IoUtils.safeClose; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -47,7 +48,6 @@ import org.jboss.as.controller.operations.CompositeOperationAwareTransmuter; import org.jboss.as.controller.operations.OperationAttachments; import org.jboss.as.controller.registry.Resource; -import org.jboss.as.protocol.StreamUtils; import org.jboss.as.repository.ContentReference; import org.jboss.as.repository.ContentRepository; import org.jboss.as.repository.DeploymentFileRepository; @@ -143,14 +143,11 @@ byte[] addFromContentAdditionParameter(OperationContext context, ModelNode conte byte[] hash; InputStream in = getInputStream(context, contentItemNode); try { - try { - hash = contentRepository.addContent(in); - } catch (IOException e) { - throw createFailureException(e.toString()); - } - + hash = contentRepository.addContent(in); + } catch (IOException e) { + throw createFailureException(e.toString()); } finally { - StreamUtils.safeClose(in); + safeClose(in); } return hash; } diff --git a/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java b/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java index 56261517760..1adf9228344 100644 --- a/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java +++ b/server/src/main/java/org/jboss/as/server/deploymentoverlay/ReadContentHandler.java @@ -24,6 +24,7 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.CONTENT; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP_ADDR; +import static org.xnio.IoUtils.safeClose; import java.io.BufferedInputStream; import java.io.IOException; @@ -81,13 +82,7 @@ public static String readFile(VirtualFile file) throws IOException { } return builder.toString(); } finally { - if (stream != null) { - try { - stream.close(); - } catch (IOException e) { - //ignore - } - } + safeClose(stream); } } diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java index bdc8ea80747..386ceaa38af 100644 --- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java +++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerClient.java @@ -61,7 +61,7 @@ public class HostControllerClient implements AbstractControllerService.ControllerInstabilityListener, Closeable { private final String serverName; - private final HostControllerConnection connection; + private HostControllerConnection connection; private final ManagementChannelHandler channelHandler; private final RemoteFileRepositoryExecutorImpl repositoryExecutor; private volatile ModelController controller; @@ -154,8 +154,10 @@ RemoteFileRepositoryExecutor getRemoteFileRepository() { @Override public void close() throws IOException { - if(connection != null) { - connection.close(); + HostControllerConnection toClose = connection; + connection = null; + if(toClose != null) { + toClose.close(); } } diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java index 7437620b818..aa252fea18a 100644 --- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java +++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnection.java @@ -22,6 +22,8 @@ package org.jboss.as.server.mgmt.domain; +import static org.xnio.IoUtils.safeClose; + import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.NameCallback; @@ -45,7 +47,6 @@ import org.jboss.as.protocol.ProtocolConnectionConfiguration; import org.jboss.as.protocol.ProtocolConnectionManager; import org.jboss.as.protocol.ProtocolConnectionUtils; -import org.jboss.as.protocol.StreamUtils; import org.jboss.as.protocol.mgmt.AbstractManagementRequest; import org.jboss.as.protocol.mgmt.ActiveOperation; import org.jboss.as.protocol.mgmt.FlushableDataOutput; @@ -188,7 +189,7 @@ synchronized boolean doReConnect() throws IOException { } // Disconnect - the HC might have closed the connection without us noticing and is asking for a reconnect final Connection connection = connectionManager.getConnection(); - StreamUtils.safeClose(connection); + safeClose(connection); if(connection != null) { try { // Wait for the connection to be closed @@ -216,7 +217,7 @@ synchronized boolean doReConnect() throws IOException { } } finally { if(!ok) { - StreamUtils.safeClose(connection); + safeClose(connection); } } } diff --git a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java index b293dfef8e1..6a487eb9e46 100644 --- a/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java +++ b/server/src/main/java/org/jboss/as/server/mgmt/domain/HostControllerConnectionService.java @@ -22,6 +22,8 @@ package org.jboss.as.server.mgmt.domain; +import static org.xnio.IoUtils.safeClose; + import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.FileInputStream; @@ -49,7 +51,6 @@ import org.jboss.as.controller.ProcessStateNotifier; import org.jboss.as.controller.remote.ResponseAttachmentInputStreamSupport; import org.jboss.as.protocol.ProtocolConnectionConfiguration; -import org.jboss.as.protocol.StreamUtils; import org.jboss.as.server.logging.ServerLogger; import org.jboss.msc.service.Service; import org.jboss.msc.service.ServiceName; @@ -57,7 +58,6 @@ import org.jboss.msc.service.StartException; import org.jboss.msc.service.StopContext; import org.jboss.remoting3.Endpoint; -import org.xnio.IoUtils; import org.xnio.OptionMap; /** @@ -144,7 +144,7 @@ public void propertyChange(final PropertyChangeEvent evt) { || current == ControlledProcessState.State.RESTART_REQUIRED) { connection.started(); } else { - IoUtils.safeClose(connection); + safeClose(connection); } } } @@ -165,7 +165,7 @@ public void run() { try { responseAttachmentSupport.shutdown(); } finally { - StreamUtils.safeClose(client); + safeClose(client); client = null; stopContext.complete(); } diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java b/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java index 6c4415585b6..61f7168c40d 100644 --- a/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java +++ b/server/src/main/java/org/jboss/as/server/moduleservice/ExtensionIndexService.java @@ -22,6 +22,8 @@ package org.jboss.as.server.moduleservice; +import static org.xnio.IoUtils.safeClose; + import java.io.File; import java.io.FileFilter; import java.io.IOException; @@ -46,7 +48,6 @@ import org.jboss.msc.service.StartContext; import org.jboss.msc.service.StartException; import org.jboss.msc.service.StopContext; -import org.jboss.vfs.VFSUtils; /** * @author David M. Lloyd @@ -80,7 +81,7 @@ public boolean accept(final File file) { if (jars != null) for (File jar : jars) try { - final JarFile jarFile = new JarFile(jar); + JarFile jarFile = new JarFile(jar); try { final Manifest manifest = jarFile.getManifest(); if (manifest == null) { @@ -97,6 +98,7 @@ public boolean accept(final File file) { final String specVersion = mainAttributes.getValue(Attributes.Name.SPECIFICATION_VERSION); final String implVendorId = mainAttributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR_ID); jarFile.close(); + jarFile = null; // avoid double close Set extensionJarSet = extensions.get(extensionName); if (extensionJarSet == null) extensions.put(extensionName, extensionJarSet = new LinkedHashSet()); @@ -123,7 +125,7 @@ public boolean accept(final File file) { extensionJarSet.add(extensionJar); } finally { - VFSUtils.safeClose(jarFile); + safeClose(jarFile); } } catch (IOException e) { log.debugf("Failed to process JAR manifest for %s: %s", jar, e); diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java b/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java index 7bab68ba49d..fc0b0c2b673 100644 --- a/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java +++ b/server/src/main/java/org/jboss/as/server/moduleservice/ExternalModuleSpecService.java @@ -21,6 +21,8 @@ */ package org.jboss.as.server.moduleservice; +import static org.xnio.IoUtils.safeClose; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -47,7 +49,6 @@ import org.jboss.msc.service.StartContext; import org.jboss.msc.service.StartException; import org.jboss.msc.service.StopContext; -import org.jboss.vfs.VFSUtils; import org.wildfly.security.manager.WildFlySecurityManager; /** @@ -136,7 +137,7 @@ public synchronized void start(StartContext context) throws StartException { public synchronized void stop(StopContext context) { for (JarFile jarFile : jarFiles) { log.debugf("Closing %s jar file which was added as resource root for %s module identifier", jarFile.getName(), moduleIdentifier.getName()); - VFSUtils.safeClose(jarFile); + safeClose(jarFile); } jarFiles.clear(); jarFiles = null; diff --git a/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java b/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java index 9c2c2155e8f..2055b3b82a7 100644 --- a/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java +++ b/server/src/main/java/org/jboss/as/server/moduleservice/ModuleIndexBuilder.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.net.URL; import java.util.Enumeration; import java.util.HashSet; @@ -51,17 +52,14 @@ public static CompositeIndex buildCompositeIndex(Module module) { final Set indexes = new HashSet(); while (resources.hasMoreElements()) { final URL url = resources.nextElement(); - InputStream stream = url.openStream(); - try { + try (InputStream stream = url.openStream()) { IndexReader reader = new IndexReader(stream); indexes.add(reader.read()); - } finally { - stream.close(); } } return new CompositeIndex(indexes); } catch (IOException e) { - throw new RuntimeException(e); + throw new UncheckedIOException(e); } }