提交 5eb0cb85 编写于 作者: X xuelei

8010815: some constructors issues in com.sun.jndi.toolkit

Reviewed-by: alanb
上级 2945ea91
/* /*
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2013, 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
...@@ -90,14 +90,16 @@ public class Continuation extends ResolveResult { ...@@ -90,14 +90,16 @@ public class Continuation extends ResolveResult {
* Constructs a new instance of Continuation. * Constructs a new instance of Continuation.
* @param top The name of the object that is to be resolved/operated upon. * @param top The name of the object that is to be resolved/operated upon.
* This becomes the Continuation's 'starter' and is used to * This becomes the Continuation's 'starter' and is used to
* calculate the "resolved name" when filling in a NamingException. * calculate the "resolved name" when filling in a NamingException.
* @param environment The environment used by the caller. It is used * @param environment The environment used by the caller. It is used
* when setting the "environment" of a CannotProceedException. * when setting the "environment" of a CannotProceedException.
*/ */
@SuppressWarnings("unchecked") // For Hashtable clone: environment.clone()
public Continuation(Name top, Hashtable<?,?> environment) { public Continuation(Name top, Hashtable<?,?> environment) {
super(); super();
starter = top; starter = top;
this.environment = environment; this.environment = (Hashtable<?,?>)
((environment == null) ? null : environment.clone());
} }
/** /**
......
/* /*
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2013, 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
...@@ -69,6 +69,7 @@ final public class LazySearchEnumerationImpl ...@@ -69,6 +69,7 @@ final public class LazySearchEnumerationImpl
} }
} }
@SuppressWarnings("unchecked") // For Hashtable clone: env.clone()
public LazySearchEnumerationImpl(NamingEnumeration<Binding> candidates, public LazySearchEnumerationImpl(NamingEnumeration<Binding> candidates,
AttrFilter filter, SearchControls cons, AttrFilter filter, SearchControls cons,
Context ctx, Hashtable<String, Object> env, boolean useFactory) Context ctx, Hashtable<String, Object> env, boolean useFactory)
...@@ -76,7 +77,8 @@ final public class LazySearchEnumerationImpl ...@@ -76,7 +77,8 @@ final public class LazySearchEnumerationImpl
this.candidates = candidates; this.candidates = candidates;
this.filter = filter; this.filter = filter;
this.env = env; this.env = (Hashtable<String, Object>)
((env == null) ? null : env.clone());
this.context = ctx; this.context = ctx;
this.useFactory = useFactory; this.useFactory = useFactory;
......
/* /*
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2013, 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
...@@ -53,7 +53,8 @@ abstract public class GenericURLContext implements Context { ...@@ -53,7 +53,8 @@ abstract public class GenericURLContext implements Context {
@SuppressWarnings("unchecked") // Expect Hashtable<String, Object> @SuppressWarnings("unchecked") // Expect Hashtable<String, Object>
public GenericURLContext(Hashtable<?,?> env) { public GenericURLContext(Hashtable<?,?> env) {
// context that is not tied to any specific URL // context that is not tied to any specific URL
myEnv = (Hashtable<String, Object>)env; // copied on write myEnv =
(Hashtable<String, Object>)(env == null ? null : env.clone());
} }
public void close() throws NamingException { public void close() throws NamingException {
...@@ -488,22 +489,19 @@ abstract public class GenericURLContext implements Context { ...@@ -488,22 +489,19 @@ abstract public class GenericURLContext implements Context {
return result; return result;
} }
@SuppressWarnings("unchecked") // clone()
public Object removeFromEnvironment(String propName) public Object removeFromEnvironment(String propName)
throws NamingException { throws NamingException {
if (myEnv == null) { if (myEnv == null) {
return null; return null;
} }
myEnv = (Hashtable<String, Object>)myEnv.clone();
return myEnv.remove(propName); return myEnv.remove(propName);
} }
@SuppressWarnings("unchecked") // clone()
public Object addToEnvironment(String propName, Object propVal) public Object addToEnvironment(String propName, Object propVal)
throws NamingException { throws NamingException {
myEnv = (myEnv == null) if (myEnv == null) {
? new Hashtable<String, Object>(11, 0.75f) myEnv = new Hashtable<String, Object>(11, 0.75f);
: (Hashtable<String, Object>)myEnv.clone(); }
return myEnv.put(propName, propVal); return myEnv.put(propName, propVal);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册