下面列出了怎么用java.io.ObjectInputValidation的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* @param in the input stream to read from
* @exception IOException error during read
* @exception ClassNotFoundException when class not found
*/
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, java.lang.ClassNotFoundException {
in.defaultReadObject();
in.registerValidation(
new ObjectInputValidation() {
public void validateObject() {
if (attr.getClass() == DefaultAttributes.class) {
Impl impl = new Impl(LocalFileSystem.this);
attr = new InnerAttrs(LocalFileSystem.this, impl, impl, impl);
}
}
}, 0
);
}
@SuppressWarnings("unchecked")
public T pasteObject() {
try {
ByteArrayInputStream bai = new ByteArrayInputStream(objectHolder);
ObjectInputStream oi = new ObjectInputStream(bai);
T resourceList = (T) oi.readObject();
if (resourceList instanceof ObjectInputValidation) {
((ObjectInputValidation) resourceList).validateObject();
}
return resourceList;
} catch (Exception e) {
throw new RuntimeException("Failed To Paste Object", e); //$NON-NLS-1$
}
}
private void readObject (ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject ();
ois.registerValidation(new ObjectInputValidation() {
public void validateObject() throws InvalidObjectException {
warnedFiles.add(getFileImpl());
}
}, 0);
}
/**
* Creates an ObjectInputStream that deserializes a stream of objects from a reader using XStream.
*
* @see #createObjectOutputStream(com.thoughtworks.xstream.io.HierarchicalStreamWriter, String)
* @see #createObjectInputStream(com.thoughtworks.xstream.io.HierarchicalStreamReader)
* @since 1.4.10
*/
public ObjectInputStream createObjectInputStream(final HierarchicalStreamReader reader, final DataHolder dataHolder)
throws IOException {
return new CustomObjectInputStream(new CustomObjectInputStream.StreamCallback() {
public Object readFromStream() throws EOFException {
if (!reader.hasMoreChildren()) {
throw new EOFException();
}
reader.moveDown();
final Object result = unmarshal(reader, dataHolder);
reader.moveUp();
return result;
}
public Map readFieldsFromStream() throws IOException {
throw new NotActiveException("not in call to readObject");
}
public void defaultReadObject() throws NotActiveException {
throw new NotActiveException("not in call to readObject");
}
public void registerValidation(ObjectInputValidation validation, int priority)
throws NotActiveException {
throw new NotActiveException("stream inactive");
}
public void close() {
reader.close();
}
}, classLoaderReference);
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public void registerValidation(ObjectInputValidation validation, int priority) throws NotActiveException, InvalidObjectException {
peekCallback().registerValidation(validation, priority);
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
public final synchronized void registerValidation(ObjectInputValidation obj,
int prio)
throws NotActiveException, InvalidObjectException{
// XXX I18N, logging needed.
throw new Error("Method registerValidation not supported");
}
/** {@inheritDoc} */
@Override public void registerValidation(ObjectInputValidation obj, int pri) {
// No-op.
}
void registerValidation(ObjectInputValidation validation, int priority) throws NotActiveException, InvalidObjectException;