From e614df65451268dcabf5a96d983fd83c66566b61 Mon Sep 17 00:00:00 2001 From: Maxim Nesen Date: Thu, 8 Aug 2024 08:10:19 +0200 Subject: [PATCH] Reverting removal of NullOutputStream for backwards compatibility Signed-off-by: Maxim Nesen --- .../message/internal/NullOutputStream.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 core-common/src/main/java/org/glassfish/jersey/message/internal/NullOutputStream.java diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/NullOutputStream.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/NullOutputStream.java new file mode 100644 index 0000000000..ae413788d0 --- /dev/null +++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/NullOutputStream.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package org.glassfish.jersey.message.internal; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Objects; + +import org.glassfish.jersey.internal.LocalizationMessages; + +/** + * Since JDK 11 is replaced by {@link OutputStream#nullOutputStream()} + */ +@Deprecated(since = "3.1.7", forRemoval = true) +public class NullOutputStream extends OutputStream { + + private volatile boolean isClosed; + + @Override + public void write(int b) throws IOException { + checkClosed(); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + checkClosed(); + Objects.checkFromIndexSize(off, len, b.length); + } + + @Override + public void flush() throws IOException { + checkClosed(); + } + + private void checkClosed() throws IOException { + if (isClosed) { + throw new IOException(LocalizationMessages.OUTPUT_STREAM_CLOSED()); + } + } + + @Override + public void close() throws IOException { + isClosed = true; + } +} \ No newline at end of file