8071474: Better failure atomicity for default read object
Reviewed-by: plevart, coffeys
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package $package;
import java.io.IOException;
import java.io.Serializable;
import failureAtomicity.SerialRef;
public class Foo implements Serializable {
static final long serialVersionUID = -0L;
public final int fooPrim;
public final String fooRef;
public final SerialRef ref; // So we can retrieve a reference to check
public $zebra_type zebraFoo; // ordered alphabetically, must be last
public Foo(int fooPrim, String fooRef, $zebra_type zebra) {
this.fooPrim = fooPrim;
this.fooRef = fooRef;
this.zebraFoo = zebra;
this.ref = new SerialRef(this);
}
@Override
public String toString() {
return new StringBuilder()
.append("$package.Foo[")
.append("fooPrim:").append(fooPrim)
.append(", fooRef:").append(fooRef)
.append(", zebraFoo:").append(zebraFoo).append("]")
.toString();
}
//$has_readObject private void readObject(java.io.ObjectInputStream in)
//$has_readObject throws IOException, ClassNotFoundException
//$has_readObject {
//$has_readObject in.defaultReadObject();
//$has_readObject }
}