6544224: Remove the need of sun.reflect.misc

Reviewed-by: alanb
This commit is contained in:
Lance Andersen 2011-01-10 14:43:50 -05:00
parent a449cd08d7
commit a137c29891

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,9 +25,7 @@
package javax.sql.rowset.serial; package javax.sql.rowset.serial;
import java.sql.*;
import java.io.*; import java.io.*;
import java.util.Map;
import java.lang.reflect.*; import java.lang.reflect.*;
import javax.sql.rowset.RowSetWarning; import javax.sql.rowset.RowSetWarning;
@ -51,7 +49,7 @@ public class SerialJavaObject implements Serializable, Cloneable {
/** /**
* Placeholder for object to be serialized. * Placeholder for object to be serialized.
*/ */
private Object obj; private final Object obj;
/** /**
@ -64,8 +62,7 @@ public class SerialJavaObject implements Serializable, Cloneable {
* <p> * <p>
* *
* @param obj the Java <code>Object</code> to be serialized * @param obj the Java <code>Object</code> to be serialized
* @throws SerialException if the object is found * @throws SerialException if the object is found not to be serializable
* to be unserializable
*/ */
public SerialJavaObject(Object obj) throws SerialException { public SerialJavaObject(Object obj) throws SerialException {
@ -74,16 +71,11 @@ public class SerialJavaObject implements Serializable, Cloneable {
// get Class. Object instance should always be available // get Class. Object instance should always be available
Class c = obj.getClass(); Class<?> c = obj.getClass();
// determine if object implements Serializable i/f // determine if object implements Serializable i/f
boolean serializableImpl = false; if (!(obj instanceof java.io.Serializable)) {
Class[] theIf = c.getInterfaces(); setWarning(new RowSetWarning("Warning, the object passed to the constructor does not implement Serializable"));
for (int i = 0; i < theIf.length; i++) {
String ifName = theIf[i].getName();
if (ifName == "java.io.Serializable") {
serializableImpl = true;
}
} }
// can only determine public fields (obviously). If // can only determine public fields (obviously). If
@ -93,22 +85,14 @@ public class SerialJavaObject implements Serializable, Cloneable {
boolean anyStaticFields = false; boolean anyStaticFields = false;
fields = c.getFields(); fields = c.getFields();
//fields = new Object[field.length];
for (int i = 0; i < fields.length; i++ ) { for (int i = 0; i < fields.length; i++ ) {
if ( fields[i].getModifiers() == Modifier.STATIC ) { if ( fields[i].getModifiers() == Modifier.STATIC ) {
anyStaticFields = true; anyStaticFields = true;
} }
//fields[i] = field[i].get(obj);
}
try {
if (!(serializableImpl)) {
throw new RowSetWarning("Test");
}
} catch (RowSetWarning w) {
setWarning(w);
} }
if (anyStaticFields) { if (anyStaticFields) {
throw new SerialException("Located static fields in " + throw new SerialException("Located static fields in " +
"object instance. Cannot serialize"); "object instance. Cannot serialize");
@ -139,11 +123,8 @@ public class SerialJavaObject implements Serializable, Cloneable {
*/ */
public Field[] getFields() throws SerialException { public Field[] getFields() throws SerialException {
if (fields != null) { if (fields != null) {
Class c = this.obj.getClass(); Class<?> c = this.obj.getClass();
//the following has to be commented before mustang integration return c.getFields();
//return c.getFields();
//the following has to be uncommented before mustang integration
return sun.reflect.misc.FieldUtil.getFields(c);
} else { } else {
throw new SerialException("SerialJavaObject does not contain" + throw new SerialException("SerialJavaObject does not contain" +
" a serialized object instance"); " a serialized object instance");