org.gradle.internal.serialize.Message Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2016 the original author or authors.
*
* Licensed 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.gradle.internal.serialize;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
public abstract class Message {
private static final Logger LOGGER = LoggerFactory.getLogger(Message.class);
/**
* Serialize the message
onto the provided outputStream
, replacing all {@link Throwable}s in the object graph with a placeholder object that can be read back by {@link
* #receive(java.io.InputStream, ClassLoader)}.
*
* @param message object to serialize
* @param outputSteam stream to serialize onto
*/
public static void send(Object message, OutputStream outputSteam) throws IOException {
ObjectOutputStream oos = new ExceptionReplacingObjectOutputStream(outputSteam);
try {
oos.writeObject(message);
} finally {
oos.flush();
}
}
/**
* Read back an object from the provided stream that has been serialized by a call to {@link #send(Object, java.io.OutputStream)}. Any {@link Throwable} that cannot be de-serialized (for whatever
* reason) will be replaced by a {@link PlaceholderException}.
*
* @param inputSteam stream to read the object from
* @param classLoader loader used to load exception classes
* @return the de-serialized object
*/
public static Object receive(InputStream inputSteam, ClassLoader classLoader)
throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ExceptionReplacingObjectInputStream(inputSteam, classLoader);
return ois.readObject();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy