From f0dc1efacea75da01f2f5d3889c6f67a46864a95 Mon Sep 17 00:00:00 2001 From: Julian Dolby Date: Wed, 29 Oct 2003 14:54:00 +0000 Subject: NamingManager.java (getContinuationContext): Call getObjectInstance() with Object... 2003-10-29 Julian Dolby * javax/naming/spi/NamingManager.java (getContinuationContext): Call getObjectInstance() with Object, Name, Context and environment Hashtable from exception. Call fillInStackTrace() on exception when rethrown. * javax/naming/InitialContext.java (lookup(Name)): When a CannotProceedException is thrown use the ContinuationContext. (lookup(String)): Likewise. (close): Clear myProps and defaultInitCtx. From-SVN: r73041 --- libjava/ChangeLog | 11 +++++++++++ libjava/javax/naming/InitialContext.java | 23 ++++++++++++++++++++--- libjava/javax/naming/spi/NamingManager.java | 9 +++++++-- 3 files changed, 38 insertions(+), 5 deletions(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 07043ac..bea41fc 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2003-10-29 Julian Dolby + + * javax/naming/spi/NamingManager.java (getContinuationContext): Call + getObjectInstance() with Object, Name, Context and environment + Hashtable from exception. Call fillInStackTrace() on exception when + rethrown. + * javax/naming/InitialContext.java (lookup(Name)): When a + CannotProceedException is thrown use the ContinuationContext. + (lookup(String)): Likewise. + (close): Clear myProps and defaultInitCtx. + 2003-10-29 Michael Koch * java/net/InetAddress.java diff --git a/libjava/javax/naming/InitialContext.java b/libjava/javax/naming/InitialContext.java index 715f30a..e2a1ac6 100644 --- a/libjava/javax/naming/InitialContext.java +++ b/libjava/javax/naming/InitialContext.java @@ -240,12 +240,28 @@ public class InitialContext implements Context public Object lookup (Name name) throws NamingException { - return getURLOrDefaultInitCtx (name).lookup (name); + try + { + return getURLOrDefaultInitCtx (name).lookup (name); + } + catch (CannotProceedException cpe) + { + Context ctx = NamingManager.getContinuationContext (cpe); + return ctx.lookup (cpe.getRemainingName()); + } } public Object lookup (String name) throws NamingException { - return getURLOrDefaultInitCtx (name).lookup (name); + try + { + return getURLOrDefaultInitCtx (name).lookup (name); + } + catch (CannotProceedException cpe) + { + Context ctx = NamingManager.getContinuationContext (cpe); + return ctx.lookup (cpe.getRemainingName()); + } } public void rebind (Name name, Object obj) throws NamingException @@ -367,7 +383,8 @@ public class InitialContext implements Context public void close () throws NamingException { - throw new OperationNotSupportedException (); + myProps = null; + defaultInitCtx = null; } public String getNameInNamespace () throws NamingException diff --git a/libjava/javax/naming/spi/NamingManager.java b/libjava/javax/naming/spi/NamingManager.java index 65ce2d2..af9ddc3 100644 --- a/libjava/javax/naming/spi/NamingManager.java +++ b/libjava/javax/naming/spi/NamingManager.java @@ -324,8 +324,10 @@ public class NamingManager // It is really unclear to me if this is right. try { - Object obj = getObjectInstance (null, cpe.getAltName (), - cpe.getAltNameCtx (), env); + Object obj = getObjectInstance (cpe.getResolvedObj(), + cpe.getAltName (), + cpe.getAltNameCtx (), + env); if (obj != null) return (Context) obj; } @@ -333,6 +335,9 @@ public class NamingManager { } + // fix stack trace for re-thrown exception (message confusing otherwise) + cpe.fillInStackTrace(); + throw cpe; } -- cgit v1.1