src/share/classes/com/sun/jndi/ldap/Obj.java
Print this page
@@ -36,17 +36,15 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamClass;
import java.io.InputStream;
+import java.util.Base64;
import java.util.Hashtable;
import java.util.Vector;
import java.util.StringTokenizer;
-import sun.misc.BASE64Encoder;
-import sun.misc.BASE64Decoder;
-
import java.lang.reflect.Proxy;
import java.lang.reflect.Modifier;
/**
* Class containing static methods and constants for dealing with
@@ -322,27 +320,30 @@
if (count > 0) {
Attribute refAttr = new BasicAttribute(JAVA_ATTRIBUTES[REF_ADDR]);
RefAddr refAddr;
- BASE64Encoder encoder = null;
+ Base64.Encoder encoder = null;
for (int i = 0; i < count; i++) {
refAddr = ref.get(i);
if (refAddr instanceof StringRefAddr) {
refAttr.add(""+ separator + i +
separator + refAddr.getType() +
separator + refAddr.getContent());
} else {
if (encoder == null)
- encoder = new BASE64Encoder();
+ encoder = Base64.getMimeEncoder();
+ // Base64.Encoder.encode method is used instead of
+ // encodeToString method to ensure Java object in LDAP
+ // is encoded with the same scheme as previous releases.
refAttr.add(""+ separator + i +
separator + refAddr.getType() +
separator + separator +
- encoder.encodeBuffer(serializeObject(refAddr)));
+ new String(encoder.encode(serializeObject(refAddr))));
}
}
attrs.put(refAttr);
}
return attrs;
@@ -401,11 +402,11 @@
if ((attr = attrs.get(JAVA_ATTRIBUTES[REF_ADDR])) != null) {
String val, posnStr, type;
char separator;
int start, sep, posn;
- BASE64Decoder decoder = null;
+ Base64.Decoder decoder = null;
ClassLoader cl = helper.getURLClassLoader(codebases);
/*
* Temporary Vector for decoded RefAddr addresses - used to ensure
@@ -470,15 +471,17 @@
++start; // skip over consecutive separator
// %%% RL: exception if empty after double separator
if (decoder == null)
- decoder = new BASE64Decoder();
+ decoder = Base64.getMimeDecoder();
+ // Java object in LDAP was encoded with the platform
+ // default charset.
RefAddr ra = (RefAddr)
deserializeObject(
- decoder.decodeBuffer(val.substring(start)),
+ decoder.decode(val.substring(start).getBytes()),
cl);
refAddrList.setElementAt(ra, posn);
} else {
// Single separator indicates a StringRefAddr