blob: e7a9d5dddb63333a45ad259dacef2d80daf4eb60 [file] [log] [blame]
/*
* Copyright (c) 1998, 2020 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,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
/* $Header: DataObjectInputStream.java 22-nov-2006.16:27:02 mfobrien Exp $ */
/*
DESCRIPTION
This class wraps the ObjectInputStream with a HelperContext instance in order to preserve state and
make the InputStream context aware.
NOTES
Implementor is ExternalizableDelegator
MODIFIED (MM/DD/YY)
mfobrien 11/22/06 - Creation
*/
/**
* @version $Header: DataObjectInputStream.java 22-nov-2006.16:27:02 mfobrien Exp $
* @author mfobrien
* @since 11.1
*/
package org.eclipse.persistence.sdo.helper;
import java.io.*;
import java.util.Arrays;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.impl.HelperProvider;
import org.eclipse.persistence.internal.localization.LoggingLocalization;
import org.eclipse.persistence.logging.AbstractSessionLog;
import org.eclipse.persistence.sdo.SDOConstants;
public class DataObjectInputStream extends ObjectInputStream {
private HelperContext aHelperContext;
/**
* Constructor for single static context clients
* @throws IOException
*/
public DataObjectInputStream() throws IOException {
super();
// default to static context
aHelperContext = HelperProvider.getDefaultContext();
}
/**
* Constructor for single static context clients
* @param in
* @throws IOException
*/
public DataObjectInputStream(InputStream in) throws IOException {
super(in);
// default to static context
aHelperContext = HelperProvider.getDefaultContext();
}
/**
* Constructor for general use by multi-threaded clients
* @param in
* @param aContext
* @throws IOException
*/
public DataObjectInputStream(InputStream in, HelperContext aContext) throws IOException {
super(in);
// set a static or dynamic-instance context
aHelperContext = aContext;
}
public HelperContext getHelperContext() {
return aHelperContext;
}
public void setHelperContext(HelperContext helperContext) {
aHelperContext = helperContext;
}
@Override
protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
if (!SDOConstants.ALLOWED_DESERIALIZATION_CLASS_NAMES.contains(desc.getName())) {
AbstractSessionLog.getLog().log(AbstractSessionLog.SEVERE, "sdo_error_deserialization", new Object[] {desc.getName()});
throw new InvalidClassException(LoggingLocalization.buildMessage("sdo_error_deserialization", new Object[] {desc.getName()}));
}
return super.resolveClass(desc);
}
}