Mercurial > hg > release > icedtea7-forest-2.1 > corba
changeset 271:eac2b25431d9
Merge
author | andrew |
---|---|
date | Mon, 10 Jan 2011 16:57:20 +0000 |
parents | 06146786b141 (current diff) f90b3e014e83 (diff) |
children | 59f02c101698 |
files | .hgtags make/common/shared/Platform.gmk make/sun/corba/core/Makefile |
diffstat | 57 files changed, 663 insertions(+), 847 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Wed Nov 10 18:49:04 2010 +0000 +++ b/.hgtags Mon Jan 10 16:57:20 2011 +0000 @@ -93,3 +93,10 @@ 88fddb73c5c4a4b50c319cbae9380caf5172ab45 jdk7-b114 da7561d479e0ddaa4650d8023ac0fc7294e014e3 jdk7-b115 98c028de4301106f2285ac0e128a1bb9b4c24f5c jdk7-b116 +fa502e4834dac2176499cc1f44794d5dc32a11b9 jdk7-b117 +42e77836fded7c2a3080d27316b96634ea9e33c6 jdk7-b118 +39829414ae31a0080578a49b751899edd518cd7d jdk7-b119 +cff5a173ec1e89013359e804a3e31736ef6fb462 jdk7-b120 +2cc9f32992101732b23730b737740e64ebc5fa89 jdk7-b121 +1523a060032c8a5b7840198da8911abeff88118f jdk7-b122 +a230c142628cea22475ab9dc5cd544266ddf2466 jdk7-b123
--- a/make/Makefile Wed Nov 10 18:49:04 2010 +0000 +++ b/make/Makefile Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2010, 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
--- a/make/com/sun/corba/minclude/com_sun_corba_se_impl_io.jmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/com/sun/corba/minclude/com_sun_corba_se_impl_io.jmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2010, 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 @@ -34,7 +34,7 @@ com/sun/corba/se/impl/io/ObjectStreamField.java \ com/sun/corba/se/impl/io/OptionalDataException.java \ com/sun/corba/se/impl/io/ValueHandlerImpl.java \ - com/sun/corba/se/impl/io/IIOPInputStream.java \ + com/sun/corba/se/impl/io/IIOPInputStream.java \ com/sun/corba/se/impl/io/IIOPOutputStream.java \ com/sun/corba/se/impl/io/TypeMismatchException.java \ com/sun/corba/se/impl/io/InputStreamHook.java \
--- a/make/common/Defs-linux.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/Defs-linux.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2010, 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
--- a/make/common/Defs-solaris.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/Defs-solaris.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2010, 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
--- a/make/common/Defs-windows.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/Defs-windows.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2010, 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
--- a/make/common/Defs.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/Defs.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2010, 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
--- a/make/common/Rules.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/Rules.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2010, 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
--- a/make/common/shared/Defs-java.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Defs-java.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2010, 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
--- a/make/common/shared/Defs-linux.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Defs-linux.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2010, 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
--- a/make/common/shared/Defs-solaris.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Defs-solaris.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2010, 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
--- a/make/common/shared/Defs-windows.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Defs-windows.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2010, 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
--- a/make/common/shared/Defs.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Defs.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2010, 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
--- a/make/common/shared/Platform.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/common/shared/Platform.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1997, 2010, 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 @@ -383,7 +383,7 @@ REQUIRED_ZIP_VER = 2.2 REQUIRED_UNZIP_VER = 5.12 -REQUIRED_MAKE_VER = 3.78 +REQUIRED_MAKE_VER = 3.81 # Unix type settings (same for all unix platforms) ifneq ($(PLATFORM), windows)
--- a/make/org/omg/idl/Makefile Wed Nov 10 18:49:04 2010 +0000 +++ b/make/org/omg/idl/Makefile Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2010, 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
--- a/make/sun/corba/Makefile Wed Nov 10 18:49:04 2010 +0000 +++ b/make/sun/corba/Makefile Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2000, 2010, 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
--- a/make/sun/corba/core/Makefile Wed Nov 10 18:49:04 2010 +0000 +++ b/make/sun/corba/core/Makefile Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1997, 2010, 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
--- a/make/sun/rmi/rmic/FILES.gmk Wed Nov 10 18:49:04 2010 +0000 +++ b/make/sun/rmi/rmic/FILES.gmk Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ # -# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2002, 2010, 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
--- a/src/share/classes/com/sun/corba/se/impl/encoding/BufferManagerWriteStream.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/encoding/BufferManagerWriteStream.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -30,12 +30,14 @@ import com.sun.corba.se.impl.protocol.giopmsgheaders.Message; import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase; import com.sun.corba.se.impl.protocol.giopmsgheaders.FragmentMessage; +import com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage; import com.sun.corba.se.impl.encoding.BufferManagerWrite; import com.sun.corba.se.impl.encoding.ByteBufferWithInfo; import com.sun.corba.se.impl.encoding.CDROutputObject; import com.sun.corba.se.spi.orb.ORB; import com.sun.corba.se.pept.transport.Connection; import com.sun.corba.se.pept.encoding.OutputObject; +import org.omg.CORBA.SystemException; /** * Streaming buffer manager. @@ -66,7 +68,13 @@ // Set the fragment's moreFragments field to true MessageBase.setFlag(bbwi.byteBuffer, Message.MORE_FRAGMENTS_BIT); - sendFragment(false); + try { + sendFragment(false); + } catch(SystemException se){ + orb.getPIHandler().invokeClientPIEndingPoint( + ReplyMessage.SYSTEM_EXCEPTION, se); + throw se; + } // Reuse the old buffer
--- a/src/share/classes/com/sun/corba/se/impl/interceptors/ClientRequestInfoImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/interceptors/ClientRequestInfoImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -74,6 +74,7 @@ import com.sun.corba.se.spi.ior.iiop.GIOPVersion; import com.sun.corba.se.spi.orb.ORB; import com.sun.corba.se.spi.protocol.CorbaMessageMediator; +import com.sun.corba.se.spi.protocol.RetryType; import com.sun.corba.se.spi.transport.CorbaContactInfo; import com.sun.corba.se.spi.transport.CorbaContactInfoList; import com.sun.corba.se.spi.transport.CorbaContactInfoListIterator; @@ -110,7 +111,7 @@ // The current retry request status. True if this request is being // retried and this info object is to be reused, or false otherwise. - private boolean retryRequest; + private RetryType retryRequest; // The number of times this info object has been (re)used. This is // incremented every time a request is retried, and decremented every @@ -163,7 +164,8 @@ // Please keep these in the same order that they're declared above. - retryRequest = false; + // 6763340 + retryRequest = RetryType.NONE; // Do not reset entryCount because we need to know when to pop this // from the stack. @@ -824,14 +826,15 @@ /** * Set or reset the retry request flag. */ - void setRetryRequest( boolean retryRequest ) { + void setRetryRequest( RetryType retryRequest ) { this.retryRequest = retryRequest; } /** * Retrieve the current retry request status. */ - boolean getRetryRequest() { + RetryType getRetryRequest() { + // 6763340 return this.retryRequest; }
--- a/src/share/classes/com/sun/corba/se/impl/interceptors/PIHandlerImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/interceptors/PIHandlerImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -70,6 +70,7 @@ import com.sun.corba.se.spi.protocol.CorbaMessageMediator; import com.sun.corba.se.spi.protocol.ForwardException; import com.sun.corba.se.spi.protocol.PIHandler; +import com.sun.corba.se.spi.protocol.RetryType; import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.impl.logging.InterceptorsSystemException; @@ -372,9 +373,24 @@ } } - public Exception invokeClientPIEndingPoint( - int replyStatus, Exception exception ) - { + // Needed when an error forces a retry AFTER initiateClientPIRequest + // but BEFORE invokeClientPIStartingPoint. + public Exception makeCompletedClientRequest( int replyStatus, + Exception exception ) { + + // 6763340 + return handleClientPIEndingPoint( replyStatus, exception, false ) ; + } + + public Exception invokeClientPIEndingPoint( int replyStatus, + Exception exception ) { + + // 6763340 + return handleClientPIEndingPoint( replyStatus, exception, true ) ; + } + + public Exception handleClientPIEndingPoint( + int replyStatus, Exception exception, boolean invokeEndingPoint ) { if( !hasClientInterceptors ) return exception; if( !isClientPIEnabledForThisThread() ) return exception; @@ -388,24 +404,31 @@ ClientRequestInfoImpl info = peekClientRequestInfoImplStack(); info.setReplyStatus( piReplyStatus ); info.setException( exception ); - interceptorInvoker.invokeClientInterceptorEndingPoint( info ); - piReplyStatus = info.getReplyStatus(); + + if (invokeEndingPoint) { + // 6763340 + interceptorInvoker.invokeClientInterceptorEndingPoint( info ); + piReplyStatus = info.getReplyStatus(); + } // Check reply status: if( (piReplyStatus == LOCATION_FORWARD.value) || - (piReplyStatus == TRANSPORT_RETRY.value) ) - { + (piReplyStatus == TRANSPORT_RETRY.value) ) { // If this is a forward or a retry, reset and reuse // info object: info.reset(); - info.setRetryRequest( true ); + + // fix for 6763340: + if (invokeEndingPoint) { + info.setRetryRequest( RetryType.AFTER_RESPONSE ) ; + } else { + info.setRetryRequest( RetryType.BEFORE_RESPONSE ) ; + } // ... and return a RemarshalException so the orb internals know exception = new RemarshalException(); - } - else if( (piReplyStatus == SYSTEM_EXCEPTION.value) || - (piReplyStatus == USER_EXCEPTION.value) ) - { + } else if( (piReplyStatus == SYSTEM_EXCEPTION.value) || + (piReplyStatus == USER_EXCEPTION.value) ) { exception = info.getException(); } @@ -421,18 +444,21 @@ RequestInfoStack infoStack = (RequestInfoStack)threadLocalClientRequestInfoStack.get(); ClientRequestInfoImpl info = null; - if( !infoStack.empty() ) info = - (ClientRequestInfoImpl)infoStack.peek(); - if( !diiRequest && (info != null) && info.isDIIInitiate() ) { + if (!infoStack.empty() ) { + info = (ClientRequestInfoImpl)infoStack.peek(); + } + + if (!diiRequest && (info != null) && info.isDIIInitiate() ) { // In RequestImpl.doInvocation we already called // initiateClientPIRequest( true ), so ignore this initiate. info.setDIIInitiate( false ); - } - else { + } else { // If there is no info object or if we are not retrying a request, // push a new ClientRequestInfoImpl on the stack: - if( (info == null) || !info.getRetryRequest() ) { + + // 6763340: don't push unless this is not a retry + if( (info == null) || !info.getRetryRequest().isRetry() ) { info = new ClientRequestInfoImpl( orb ); infoStack.push( info ); printPush(); @@ -442,9 +468,15 @@ // Reset the retry request flag so that recursive calls will // push a new info object, and bump up entry count so we know // when to pop this info object: - info.setRetryRequest( false ); + info.setRetryRequest( RetryType.NONE ); info.incrementEntryCount(); + // KMC 6763340: I don't know why this wasn't set earlier, + // but we do not want a retry to pick up the previous + // reply status, so clear it here. Most likely a new + // info was pushed before, so that this was not a problem. + info.setReplyStatus( RequestInfoImpl.UNINITIALIZED ) ; + // If this is a DII request, make sure we ignore the next initiate. if( diiRequest ) { info.setDIIInitiate( true ); @@ -457,25 +489,34 @@ if( !isClientPIEnabledForThisThread() ) return; ClientRequestInfoImpl info = peekClientRequestInfoImplStack(); + RetryType rt = info.getRetryRequest() ; - // If the replyStatus has not yet been set, this is an indication - // that the ORB threw an exception before we had a chance to - // invoke the client interceptor ending points. - // - // _REVISIT_ We cannot handle any exceptions or ForwardRequests - // flagged by the ending points here because there is no way - // to gracefully handle this in any of the calling code. - // This is a rare corner case, so we will ignore this for now. - short replyStatus = info.getReplyStatus(); - if( replyStatus == info.UNINITIALIZED ) { - invokeClientPIEndingPoint( ReplyMessage.SYSTEM_EXCEPTION, - wrapper.unknownRequestInvoke( - CompletionStatus.COMPLETED_MAYBE ) ) ; + // fix for 6763340 + if (!rt.equals( RetryType.BEFORE_RESPONSE )) { + + // If the replyStatus has not yet been set, this is an indication + // that the ORB threw an exception before we had a chance to + // invoke the client interceptor ending points. + // + // _REVISIT_ We cannot handle any exceptions or ForwardRequests + // flagged by the ending points here because there is no way + // to gracefully handle this in any of the calling code. + // This is a rare corner case, so we will ignore this for now. + short replyStatus = info.getReplyStatus(); + if (replyStatus == info.UNINITIALIZED ) { + invokeClientPIEndingPoint( ReplyMessage.SYSTEM_EXCEPTION, + wrapper.unknownRequestInvoke( + CompletionStatus.COMPLETED_MAYBE ) ) ; + } } // Decrement entry count, and if it is zero, pop it from the stack. info.decrementEntryCount(); - if( info.getEntryCount() == 0 ) { + + // fix for 6763340, and probably other cases (non-recursive retry) + if (info.getEntryCount() == 0 && !info.getRetryRequest().isRetry()) { + // RequestInfoStack<ClientRequestInfoImpl> infoStack = + // threadLocalClientRequestInfoStack.get(); RequestInfoStack infoStack = (RequestInfoStack)threadLocalClientRequestInfoStack.get(); infoStack.pop();
--- a/src/share/classes/com/sun/corba/se/impl/interceptors/PINoOpHandlerImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/interceptors/PINoOpHandlerImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2010, 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 @@ -107,6 +107,11 @@ return null; } + public Exception makeCompletedClientRequest( + int replyStatus, Exception exception ) { + return null; + } + public void initiateClientPIRequest( boolean diiRequest ) { }
--- a/src/share/classes/com/sun/corba/se/impl/interceptors/RequestInfoImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/interceptors/RequestInfoImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -187,7 +187,8 @@ startingPointCall = 0; intermediatePointCall = 0; endingPointCall = 0; - replyStatus = UNINITIALIZED; + // 6763340 + setReplyStatus( UNINITIALIZED ) ; currentExecutionPoint = EXECUTION_POINT_STARTING; alreadyExecuted = false; connection = null;
--- a/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/io/IIOPInputStream.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -1012,7 +1012,11 @@ * else, * Handle it as a serializable class. */ - if (currentClassDesc.isExternalizable()) { + if (Enum.class.isAssignableFrom( clz )) { + int ordinal = orbStream.read_long() ; + String value = (String)orbStream.read_value( String.class ) ; + return Enum.valueOf( clz, value ) ; + } else if (currentClassDesc.isExternalizable()) { try { currentObject = (currentClass == null) ? null : currentClassDesc.newInstance(); @@ -2553,8 +2557,8 @@ bridge.putObject( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetObjectField( e, fieldName, - ObjectUtility.compactObjectToString( o ), - ObjectUtility.compactObjectToString( v )) ; + o.toString(), + v.toString() ) ; } } @@ -2566,7 +2570,7 @@ bridge.putBoolean( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetBooleanField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Boolean(v) ) ; } } @@ -2579,7 +2583,7 @@ bridge.putByte( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetByteField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Byte(v) ) ; } } @@ -2592,7 +2596,7 @@ bridge.putChar( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetCharField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Character(v) ) ; } } @@ -2605,7 +2609,7 @@ bridge.putShort( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetShortField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Short(v) ) ; } } @@ -2618,7 +2622,7 @@ bridge.putInt( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetIntField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Integer(v) ) ; } } @@ -2631,7 +2635,7 @@ bridge.putLong( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetLongField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Long(v) ) ; } } @@ -2644,7 +2648,7 @@ bridge.putFloat( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetFloatField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Float(v) ) ; } } @@ -2657,7 +2661,7 @@ bridge.putDouble( o, key, v ) ; } catch (Exception e) { throw utilWrapper.errorSetDoubleField( e, fieldName, - ObjectUtility.compactObjectToString( o ), + o.toString(), new Double(v) ) ; } }
--- a/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/io/ObjectStreamClass.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -85,6 +85,9 @@ private static Hashtable translatedFields; + /** true if represents enum type */ + private boolean isEnum; + private static final Bridge bridge = (Bridge)AccessController.doPrivileged( new PrivilegedAction() { @@ -359,6 +362,7 @@ } name = cl.getName(); + isEnum = Enum.class.isAssignableFrom(cl); superclass = superdesc; serializable = serial; if (!forProxyClass) { @@ -401,7 +405,8 @@ if (!serializable || externalizable || forProxyClass || - name.equals("java.lang.String")) { + name.equals("java.lang.String") || + isEnum) { fields = NO_FIELDS; } else if (serializable) { /* Ask for permission to override field access checks. @@ -502,7 +507,7 @@ * * NonSerializable classes have a serialVerisonUID of 0L. */ - if (isNonSerializable()) { + if (isNonSerializable() || isEnum) { suid = 0L; } else { // Lookup special Serializable members using reflection.
--- a/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/io/ValueHandlerImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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 @@ -32,32 +32,22 @@ package com.sun.corba.se.impl.io; import javax.rmi.CORBA.Util; -import javax.rmi.PortableRemoteObject; import java.util.Hashtable; -import java.util.Stack; import java.io.IOException; -import java.util.EmptyStackException; -import com.sun.corba.se.impl.util.Utility; -import com.sun.corba.se.impl.io.IIOPInputStream; -import com.sun.corba.se.impl.io.IIOPOutputStream; import com.sun.corba.se.impl.util.RepositoryId; import com.sun.corba.se.impl.util.Utility; import org.omg.CORBA.TCKind; -import org.omg.CORBA.MARSHAL; -import org.omg.CORBA.BAD_PARAM; -import org.omg.CORBA.CompletionStatus; import org.omg.CORBA.portable.IndirectionException; import com.sun.org.omg.SendingContext.CodeBase; import com.sun.org.omg.SendingContext.CodeBaseHelper; import java.security.AccessController; import java.security.PrivilegedAction; - -import com.sun.corba.se.impl.io.IIOPInputStream.ActiveRecursionManager; +import java.security.PrivilegedExceptionAction; import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.impl.logging.OMGSystemException; @@ -809,65 +799,163 @@ return "com.sun.corba.se.impl.io.IIOPOutputStream"; } - private com.sun.corba.se.impl.io.IIOPOutputStream createOutputStream() { - return (com.sun.corba.se.impl.io.IIOPOutputStream)AccessController.doPrivileged( - new StreamFactory(getOutputStreamClassName())); + private IIOPOutputStream createOutputStream() { + final String name = getOutputStreamClassName(); + try { + IIOPOutputStream stream = createOutputStreamBuiltIn(name); + if (stream != null) { + return stream; + } + return createCustom(IIOPOutputStream.class, name); + } catch (Throwable t) { + // Throw exception under the carpet. + InternalError ie = new InternalError( + "Error loading " + name + ); + ie.initCause(t); + throw ie; + } + } + + /** + * Construct a built in implementation with priveleges. + * Returning null indicates a non-built is specified. + */ + private IIOPOutputStream createOutputStreamBuiltIn( + final String name + ) throws Throwable { + try { + return AccessController.doPrivileged( + new PrivilegedExceptionAction<IIOPOutputStream>() { + public IIOPOutputStream run() throws IOException { + return createOutputStreamBuiltInNoPriv(name); + } + } + ); + } catch (java.security.PrivilegedActionException exc) { + throw exc.getCause(); + } + } + + /** + * Returning null indicates a non-built is specified. + */ + private IIOPOutputStream createOutputStreamBuiltInNoPriv( + final String name + ) throws IOException { + return + name.equals( + IIOPOutputStream + .class.getName() + ) ? + new IIOPOutputStream() : + + name.equals( + com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3 + .class.getName() + ) ? + new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3() : + + name.equals( + com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1 + .class.getName() + ) ? + new com.sun.corba.se.impl.orbutil.IIOPOutputStream_1_3_1() : + + null; } protected String getInputStreamClassName() { return "com.sun.corba.se.impl.io.IIOPInputStream"; } - private com.sun.corba.se.impl.io.IIOPInputStream createInputStream() { - return (com.sun.corba.se.impl.io.IIOPInputStream)AccessController.doPrivileged( - new StreamFactory(getInputStreamClassName())); + private IIOPInputStream createInputStream() { + final String name = getInputStreamClassName(); + try { + IIOPInputStream stream = createInputStreamBuiltIn(name); + if (stream != null) { + return stream; + } + return createCustom(IIOPInputStream.class, name); + } catch (Throwable t) { + // Throw exception under the carpet. + InternalError ie = new InternalError( + "Error loading " + name + ); + ie.initCause(t); + throw ie; + } } /** - * Instantiates a class of the given name using the system ClassLoader - * as part of a PrivilegedAction. - * - * It's private final so hopefully people can't grab it outside of - * this class. - * - * If you're worried that someone could subclass ValueHandlerImpl, - * install his own streams, and snoop what's on the wire: - * Someone can do that only if he's allowed to use the feature - * of installing his own javax.rmi.CORBA.Util delegate (via a - * JVM property or orb.properties file, read the first time the - * Util class is used). If he can do that, he can snoop - * anything on the wire, anyway, without abusing the - * StreamFactory class. + * Construct a built in implementation with priveleges. + * Returning null indicates a non-built is specified. */ - private static final class StreamFactory implements PrivilegedAction { - private String className; - - public StreamFactory (String _className) { - className = _className; - } + private IIOPInputStream createInputStreamBuiltIn( + final String name + ) throws Throwable { + try { + return AccessController.doPrivileged( + new PrivilegedExceptionAction<IIOPInputStream>() { + public IIOPInputStream run() throws IOException { + return createInputStreamBuiltInNoPriv(name); + } + } + ); + } catch (java.security.PrivilegedActionException exc) { + throw exc.getCause(); + } + } - public Object run() { - try { - // Note: We must use the system ClassLoader here - // since we want to load classes outside of the - // core JDK when running J2EE Pure ORB and - // talking to Kestrel. + /** + * Returning null indicates a non-built is specified. + */ + private IIOPInputStream createInputStreamBuiltInNoPriv( + final String name + ) throws IOException { + return + name.equals( + IIOPInputStream + .class.getName() + ) ? + new IIOPInputStream() : + + name.equals( + com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3 + .class.getName() + ) ? + new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3() : + + name.equals( + com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1 + .class.getName() + ) ? + new com.sun.corba.se.impl.orbutil.IIOPInputStream_1_3_1() : + + null; + } + + /** + * Create a custom implementation without privileges. + */ + private <T> T createCustom( + final Class<T> type, final String className + ) throws Throwable { + // Note: We use the thread context or system ClassLoader here + // since we want to load classes outside of the + // core JDK when running J2EE Pure ORB and + // talking to Kestrel. ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (cl == null) cl = ClassLoader.getSystemClassLoader(); - Class streamClass = cl.loadClass(className); + Class<?> clazz = cl.loadClass(className); + Class<? extends T> streamClass = clazz.asSubclass(type); // Since the ClassLoader should cache the class, this isn't // as expensive as it looks. return streamClass.newInstance(); - } catch(Throwable t) { - InternalError ie = new InternalError( "Error loading " + className ) ; - ie.initCause( t ) ; - throw ie ; - } - } } /**
--- a/src/share/classes/com/sun/corba/se/impl/oa/poa/AOMEntry.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/oa/poa/AOMEntry.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -45,6 +45,10 @@ import com.sun.corba.se.impl.orbutil.concurrent.Mutex ; import com.sun.corba.se.impl.orbutil.concurrent.CondVar ; +import org.omg.CORBA.SystemException ; + +import org.omg.PortableServer.POAPackage.ObjectAlreadyActive ; + /** AOMEntry represents a Servant or potential Servant in the ActiveObjectMap. * It may be in several states to allow for long incarnate or etherealize operations. * The methods on this class mostly represent input symbols to the state machine @@ -121,6 +125,12 @@ } } ; + private static Action oaaAction = new ActionBase( "throwObjectAlreadyActive" ) { + public void doIt( FSM fsm, Input in ) { + throw new RuntimeException( new ObjectAlreadyActive() ) ; + } + } ; + private static Guard waitGuard = new GuardBase( "wait" ) { public Guard.Result evaluate( FSM fsm, Input in ) { AOMEntry entry = (AOMEntry)fsm ; @@ -173,19 +183,23 @@ engine.add( INCARN, START_ETH, waitGuard, null, INCARN ) ; engine.add( INCARN, INC_DONE, null, VALID ) ; engine.add( INCARN, INC_FAIL, decrementAction, INVALID ) ; + engine.add( INCARN, ACTIVATE, oaaAction, INCARN ) ; engine.add( VALID, ENTER, incrementAction, VALID ) ; engine.add( VALID, EXIT, decrementAction, VALID ) ; engine.add( VALID, START_ETH, greaterZeroGuard, null, ETHP ) ; engine.add( VALID, START_ETH, zeroGuard, null, ETH ) ; + engine.add( VALID, ACTIVATE, oaaAction, VALID ) ; engine.add( ETHP, ENTER, waitGuard, null, ETHP ) ; engine.add( ETHP, START_ETH, null, ETHP ) ; engine.add( ETHP, EXIT, greaterOneGuard, decrementAction, ETHP ) ; engine.add( ETHP, EXIT, oneGuard, decrementAction, ETH ) ; + engine.add( ETHP, ACTIVATE, oaaAction, ETHP ) ; engine.add( ETH, START_ETH, null, ETH ) ; engine.add( ETH, ETH_DONE, null, DESTROYED ) ; + engine.add( ETH, ACTIVATE, oaaAction, ETH ) ; engine.add( ETH, ENTER, waitGuard, null, ETH ) ; engine.setDefault( DESTROYED, throwIllegalStateExceptionAction, DESTROYED ) ; @@ -217,7 +231,17 @@ public void etherealizeComplete() { doIt( ETH_DONE ) ; } public void incarnateComplete() { doIt( INC_DONE ) ; } public void incarnateFailure() { doIt( INC_FAIL ) ; } - public void activateObject() { doIt( ACTIVATE ) ; } + public void activateObject() throws ObjectAlreadyActive { + try { + doIt( ACTIVATE ) ; + } catch (RuntimeException exc) { + Throwable thr = exc.getCause() ; + if (thr instanceof ObjectAlreadyActive) + throw (ObjectAlreadyActive)thr ; + else + throw exc ; + } + } public void enter() { doIt( ENTER ) ; } public void exit() { doIt( EXIT ) ; } }
--- a/src/share/classes/com/sun/corba/se/impl/oa/poa/POAPolicyMediatorBase_R.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/oa/poa/POAPolicyMediatorBase_R.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -107,13 +107,9 @@ throw new ServantAlreadyActive(); ActiveObjectMap.Key key = new ActiveObjectMap.Key( id ) ; - // Note that this can't happen for system assigned IDs since the - // POA never hands out the same ID. However, we make this redundant - // check here to share the code. - if (activeObjectMap.containsKey(key)) - throw new ObjectAlreadyActive() ; + AOMEntry entry = activeObjectMap.get( key ) ; - AOMEntry entry = activeObjectMap.get( key ) ; + // Check for an ObjectAlreadyActive error entry.activateObject() ; activateServant( key, entry, servant ) ; }
--- a/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/orb/ORBImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -245,7 +245,14 @@ // All access to resolver, localResolver, and urlOperation must be protected using // resolverLock. Do not hold the ORBImpl lock while accessing // resolver, or deadlocks may occur. - private Object resolverLock ; + // Note that we now have separate locks for each resolver type. This is due + // to bug 6980681 and 6238477, which was caused by a deadlock while resolving a + // corbaname: URL that contained a reference to the same ORB as the + // ORB making the call to string_to_object. This caused a deadlock between the + // client thread holding the single lock for access to the urlOperation, + // and the server thread handling the client is_a request waiting on the + // same lock to access the localResolver. + // Used for resolver_initial_references and list_initial_services private Resolver resolver ; @@ -255,8 +262,14 @@ // Converts strings to object references for resolvers and string_to_object private Operation urlOperation ; + private final Object urlOperationLock = new java.lang.Object() ; private CorbaServerRequestDispatcher insNamingDelegate ; + // resolverLock must be used for all access to either resolver or + // localResolver, since it is possible for the resolver to indirectly + // refer to the localResolver. Also used to protect access to + // insNamingDelegate. + private final Object resolverLock = new Object() ; private TaggedComponentFactoryFinder taggedComponentFactoryFinder ; @@ -396,7 +409,6 @@ } }; - resolverLock = new java.lang.Object() ; requestDispatcherRegistry = new RequestDispatcherRegistryImpl( this, ORBConstants.DEFAULT_SCID); @@ -832,7 +844,7 @@ if (str == null) throw wrapper.nullParam() ; - synchronized (resolverLock) { + synchronized (urlOperationLock) { org.omg.CORBA.Object obj = (org.omg.CORBA.Object)op.operate( str ) ; return obj ; } @@ -1672,6 +1684,7 @@ { StackImpl invocationInfoStack = (StackImpl)clientInvocationInfoStack.get(); + int entryCount = -1; ClientInvocationInfo clientInvocationInfo = null; if (!invocationInfoStack.empty()) { clientInvocationInfo = @@ -1680,8 +1693,12 @@ throw wrapper.invocationInfoStackEmpty() ; } clientInvocationInfo.decrementEntryCount(); + entryCount = clientInvocationInfo.getEntryCount(); if (clientInvocationInfo.getEntryCount() == 0) { - invocationInfoStack.pop(); + // 6763340: don't pop if this is a retry! + if (!clientInvocationInfo.isRetryInvocation()) { + invocationInfoStack.pop(); + } finishedDispatch(); } } @@ -1773,7 +1790,7 @@ */ public void setURLOperation( Operation stringToObject ) { - synchronized (resolverLock) { + synchronized (urlOperationLock) { urlOperation = stringToObject ; } } @@ -1783,7 +1800,7 @@ */ public Operation getURLOperation() { - synchronized (resolverLock) { + synchronized (urlOperationLock) { return urlOperation ; } }
--- a/src/share/classes/com/sun/corba/se/impl/orb/PrefixParserAction.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/orb/PrefixParserAction.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -110,7 +110,7 @@ throw wrapper.couldNotSetArray( thr, getPropertyName(), new Integer(ctr), componentType, new Integer(size), - ObjectUtility.compactObjectToString( obj )) ; + obj.toString() ) ; } ctr++ ; }
--- a/src/share/classes/com/sun/corba/se/impl/orbutil/CorbaResourceUtil.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/orbutil/CorbaResourceUtil.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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
--- a/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectUtility.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/orbutil/ObjectUtility.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -50,103 +50,8 @@ import java.math.BigDecimal ; public final class ObjectUtility { - private boolean useToString ; - private boolean isIndenting ; - private int initialLevel ; - private int increment ; - private ClassMap classToPrinter = new ClassMap() ; - - private static ObjectUtility standard = new ObjectUtility( false, true, - 0, 4 ) ; - private static ObjectUtility compact = new ObjectUtility( true, false, - 0, 4 ) ; - - private ObjectUtility( boolean useToString, boolean isIndenting, - int initialLevel, int increment ) - { - this.useToString = useToString ; - this.isIndenting = isIndenting ; - this.initialLevel = initialLevel ; - this.increment = increment ; - classToPrinter.put( Properties.class, propertiesPrinter ) ; - classToPrinter.put( Collection.class, collectionPrinter ) ; - classToPrinter.put( Map.class, mapPrinter ) ; - } - - /** Construct an Utility instance with the desired objectToString - * behavior. - */ - public static ObjectUtility make( boolean useToString, boolean isIndenting, - int initialLevel, int increment ) - { - return new ObjectUtility( useToString, isIndenting, initialLevel, - increment ) ; - } - - /** Construct an Utility instance with the desired objectToString - * behavior. - */ - public static ObjectUtility make( boolean useToString, boolean isIndenting ) - { - return new ObjectUtility( useToString, isIndenting, 0, 4 ) ; - } - - /** Get the standard Utility object that supports objectToString with - * indented display and no use of toString() methods. - */ - public static ObjectUtility make() - { - return standard ; - } + private ObjectUtility() {} - /** A convenience method that gives the default behavior: use indenting - * to display the object's structure and do not use built-in toString - * methods. - */ - public static String defaultObjectToString( java.lang.Object object ) - { - return standard.objectToString( object ) ; - } - - public static String compactObjectToString( java.lang.Object object ) - { - return compact.objectToString( object ) ; - } - - /** objectToString handles display of arbitrary objects. It correctly - * handles objects whose elements form an arbitrary graph. It uses - * reflection to display the contents of any kind of object. - * An object's toString() method may optionally be used, but the default - * is to ignore all toString() methods except for those defined for - * primitive types, primitive type wrappers, and strings. - */ - public String objectToString(java.lang.Object obj) - { - IdentityHashMap printed = new IdentityHashMap() ; - ObjectWriter result = ObjectWriter.make( isIndenting, initialLevel, - increment ) ; - objectToStringHelper( printed, result, obj ) ; - return result.toString() ; - } - - // Perform a deep structural equality comparison of the two objects. - // This handles all arrays, maps, and sets specially, otherwise - // it just calls the object's equals() method. - public static boolean equals( java.lang.Object obj1, java.lang.Object obj2 ) - { - // Set of pairs of objects that have been (or are being) considered for - // equality. Such pairs are presumed to be equals. If they are not, - // this will be detected eventually and the equals method will return - // false. - Set considered = new HashSet() ; - - // Map that gives the corresponding component of obj2 for a component - // of obj1. This is used to check for the same aliasing and use of - // equal objects in both objects. - Map counterpart = new IdentityHashMap() ; - - return equalsHelper( counterpart, considered, obj1, obj2 ) ; - } /** If arr1 and arr2 are both arrays of the same component type, * return an array of that component type that consists of the @@ -179,544 +84,4 @@ return result ; } -//=========================================================================== -// Implementation -//=========================================================================== - - private void objectToStringHelper( IdentityHashMap printed, - ObjectWriter result, java.lang.Object obj) - { - if (obj==null) { - result.append( "null" ) ; - result.endElement() ; - } else { - Class cls = obj.getClass() ; - result.startObject( obj ) ; - - if (printed.keySet().contains( obj )) { - result.endObject( "*VISITED*" ) ; - } else { - printed.put( obj, null ) ; - - if (mustUseToString(cls)) { - result.endObject( obj.toString() ) ; - } else { - // First, handle any classes that have special printer - // methods defined. This is useful when the class - // overrides toString with something that - // is not sufficiently detailed. - ObjectPrinter printer = (ObjectPrinter)(classToPrinter.get( - cls )) ; - if (printer != null) { - printer.print( printed, result, obj ) ; - result.endObject() ; - } else { - Class compClass = cls.getComponentType() ; - - if (compClass == null) - // handleObject always calls endObject - handleObject( printed, result, obj ) ; - else { - handleArray( printed, result, obj ) ; - result.endObject() ; - } - } - } - } - } - } - - private static interface ObjectPrinter { - void print( IdentityHashMap printed, ObjectWriter buff, - java.lang.Object obj ) ; - } - - private ObjectPrinter propertiesPrinter = new ObjectPrinter() { - public void print( IdentityHashMap printed, ObjectWriter buff, - java.lang.Object obj ) - { - if (!(obj instanceof Properties)) - throw new Error() ; - - Properties props = (Properties)obj ; - Enumeration keys = props.propertyNames() ; - while (keys.hasMoreElements()) { - String key = (String)(keys.nextElement()) ; - String value = props.getProperty( key ) ; - buff.startElement() ; - buff.append( key ) ; - buff.append( "=" ) ; - buff.append( value ) ; - buff.endElement() ; - } - } - } ; - - private ObjectPrinter collectionPrinter = new ObjectPrinter() { - public void print( IdentityHashMap printed, ObjectWriter buff, - java.lang.Object obj ) - { - if (!(obj instanceof Collection)) - throw new Error() ; - - Collection coll = (Collection)obj ; - Iterator iter = coll.iterator() ; - while (iter.hasNext()) { - java.lang.Object element = iter.next() ; - buff.startElement() ; - objectToStringHelper( printed, buff, element ) ; - buff.endElement() ; - } - } - } ; - - private ObjectPrinter mapPrinter = new ObjectPrinter() { - public void print( IdentityHashMap printed, ObjectWriter buff, - java.lang.Object obj ) - { - if (!(obj instanceof Map)) - throw new Error() ; - - Map map = (Map)obj ; - Iterator iter = map.entrySet().iterator() ; - while (iter.hasNext()) { - Entry entry = (Entry)(iter.next()) ; - buff.startElement() ; - objectToStringHelper( printed, buff, entry.getKey() ) ; - buff.append( "=>" ) ; - objectToStringHelper( printed, buff, entry.getValue() ) ; - buff.endElement() ; - } - } - } ; - - private static class ClassMap { - ArrayList data ; - - public ClassMap() - { - data = new ArrayList() ; - } - - /** Return the first element of the ClassMap that is assignable to cls. - * The order is determined by the order in which the put method was - * called. Returns null if there is no match. - */ - public java.lang.Object get( Class cls ) - { - Iterator iter = data.iterator() ; - while (iter.hasNext()) { - java.lang.Object[] arr = (java.lang.Object[])(iter.next()) ; - Class key = (Class)(arr[0]) ; - if (key.isAssignableFrom( cls )) - return arr[1] ; - } - - return null ; - } - - /** Add obj to the map with key cls. Note that order matters, - * as the first match is returned. - */ - public void put( Class cls, java.lang.Object obj ) - { - java.lang.Object[] pair = { cls, obj } ; - data.add( pair ) ; - } - } - - private boolean mustUseToString( Class cls ) - { - // These probably never occur - if (cls.isPrimitive()) - return true ; - - // We must use toString for all primitive wrappers, since - // otherwise the code recurses endlessly (access value field - // inside Integer, returns another Integer through reflection). - if ((cls == Integer.class) || - (cls == BigInteger.class) || - (cls == BigDecimal.class) || - (cls == String.class) || - (cls == StringBuffer.class) || - (cls == Long.class) || - (cls == Short.class) || - (cls == Byte.class) || - (cls == Character.class) || - (cls == Float.class) || - (cls == Double.class) || - (cls == Boolean.class)) - return true ; - - if (useToString) { - try { - cls.getDeclaredMethod( "toString", (Class[])null ) ; - return true ; - } catch (Exception exc) { - return false ; - } - } - - return false ; - } - - private void handleObject( IdentityHashMap printed, ObjectWriter result, - java.lang.Object obj ) - { - Class cls = obj.getClass() ; - - try { - Field[] fields; - SecurityManager security = System.getSecurityManager(); - if (security != null && !Modifier.isPublic(cls.getModifiers())) { - fields = new Field[0]; - } else { - fields = cls.getDeclaredFields(); - } - - for (int ctr=0; ctr<fields.length; ctr++ ) { - final Field fld = fields[ctr] ; - int modifiers = fld.getModifiers() ; - - // Do not display field if it is static, since these fields - // are always the same for every instances. This could - // be made configurable, but I don't think it is - // useful to do so. - if (!Modifier.isStatic( modifiers )) { - if (security != null) { - if (!Modifier.isPublic(modifiers)) - continue; - } - result.startElement() ; - result.append( fld.getName() ) ; - result.append( ":" ) ; - - try { - // Make sure that we can read the field if it is - // not public - AccessController.doPrivileged( new PrivilegedAction() { - public Object run() { - fld.setAccessible( true ) ; - return null ; - } - } ) ; - - java.lang.Object value = fld.get( obj ) ; - objectToStringHelper( printed, result, value ) ; - } catch (Exception exc2) { - result.append( "???" ) ; - } - - result.endElement() ; - } - } - - result.endObject() ; - } catch (Exception exc2) { - result.endObject( obj.toString() ) ; - } - } - - private void handleArray( IdentityHashMap printed, ObjectWriter result, - java.lang.Object obj ) - { - Class compClass = obj.getClass().getComponentType() ; - if (compClass == boolean.class) { - boolean[] arr = (boolean[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == byte.class) { - byte[] arr = (byte[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == short.class) { - short[] arr = (short[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == int.class) { - int[] arr = (int[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == long.class) { - long[] arr = (long[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == char.class) { - char[] arr = (char[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == float.class) { - float[] arr = (float[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else if (compClass == double.class) { - double[] arr = (double[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - result.append( arr[ctr] ) ; - result.endElement() ; - } - } else { // array of object - java.lang.Object[] arr = (java.lang.Object[])obj ; - for (int ctr=0; ctr<arr.length; ctr++) { - result.startElement() ; - objectToStringHelper( printed, result, arr[ctr] ) ; - result.endElement() ; - } - } - } - - private static class Pair - { - private java.lang.Object obj1 ; - private java.lang.Object obj2 ; - - Pair( java.lang.Object obj1, java.lang.Object obj2 ) - { - this.obj1 = obj1 ; - this.obj2 = obj2 ; - } - - public boolean equals( java.lang.Object obj ) - { - if (!(obj instanceof Pair)) - return false ; - - Pair other = (Pair)obj ; - return other.obj1 == obj1 && other.obj2 == obj2 ; - } - - public int hashCode() - { - return System.identityHashCode( obj1 ) ^ - System.identityHashCode( obj2 ) ; - } - } - - private static boolean equalsHelper( Map counterpart, Set considered, - java.lang.Object obj1, java.lang.Object obj2 ) - { - if ((obj1 == null) || (obj2 == null)) - return obj1 == obj2 ; - - java.lang.Object other2 = counterpart.get( obj1 ) ; - if (other2 == null) { - other2 = obj2 ; - counterpart.put( obj1, other2 ) ; - } - - if (obj1 == other2) - return true ; - - if (obj2 != other2) - return false ; - - Pair pair = new Pair( obj1, obj2 ) ; - if (considered.contains( pair )) - return true ; - else - considered.add( pair ) ; - - if (obj1 instanceof java.lang.Object[] && - obj2 instanceof java.lang.Object[]) - return equalArrays( counterpart, considered, - (java.lang.Object[])obj1, (java.lang.Object[])obj2 ) ; - else if (obj1 instanceof Map && obj2 instanceof Map) - return equalMaps( counterpart, considered, - (Map)obj1, (Map)obj2 ) ; - else if (obj1 instanceof Set && obj2 instanceof Set) - return equalSets( counterpart, considered, - (Set)obj1, (Set)obj2 ) ; - else if (obj1 instanceof List && obj2 instanceof List) - return equalLists( counterpart, considered, - (List)obj1, (List)obj2 ) ; - else if (obj1 instanceof boolean[] && obj2 instanceof boolean[]) - return Arrays.equals( (boolean[])obj1, (boolean[])obj2 ) ; - else if (obj1 instanceof byte[] && obj2 instanceof byte[]) - return Arrays.equals( (byte[])obj1, (byte[])obj2 ) ; - else if (obj1 instanceof char[] && obj2 instanceof char[]) - return Arrays.equals( (char[])obj1, (char[])obj2 ) ; - else if (obj1 instanceof double[] && obj2 instanceof double[]) - return Arrays.equals( (double[])obj1, (double[])obj2 ) ; - else if (obj1 instanceof float[] && obj2 instanceof float[]) - return Arrays.equals( (float[])obj1, (float[])obj2 ) ; - else if (obj1 instanceof int[] && obj2 instanceof int[]) - return Arrays.equals( (int[])obj1, (int[])obj2 ) ; - else if (obj1 instanceof long[] && obj2 instanceof long[]) - return Arrays.equals( (long[])obj1, (long[])obj2 ) ; - else { - Class cls = obj1.getClass() ; - if (cls != obj2.getClass()) - return obj1.equals( obj2 ) ; - else - return equalsObject( counterpart, considered, cls, obj1, obj2 ) ; - } - } - - private static boolean equalsObject( Map counterpart, Set considered, - Class cls, java.lang.Object obj1, java.lang.Object obj2 ) - { - Class objectClass = java.lang.Object.class ; - if (cls == objectClass) - return true ; - - Class[] equalsTypes = { objectClass } ; - try { - Method equalsMethod = cls.getDeclaredMethod( "equals", - equalsTypes ) ; - return obj1.equals( obj2 ) ; - } catch (Exception exc) { - if (equalsObjectFields( counterpart, considered, - cls, obj1, obj2 )) - return equalsObject( counterpart, considered, - cls.getSuperclass(), obj1, obj2 ) ; - else - return false ; - } - } - - private static boolean equalsObjectFields( Map counterpart, Set considered, - Class cls, java.lang.Object obj1, java.lang.Object obj2 ) - { - Field[] fields = cls.getDeclaredFields() ; - for (int ctr=0; ctr<fields.length; ctr++) { - try { - final Field field = fields[ctr] ; - // Ignore static fields - if (!Modifier.isStatic( field.getModifiers())) { - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - field.setAccessible( true ) ; - return null ; - } - } ) ; - - java.lang.Object value1 = field.get( obj1 ) ; - java.lang.Object value2 = field.get( obj2 ) ; - if (!equalsHelper( counterpart, considered, value1, - value2 )) - return false ; - } - } catch (IllegalAccessException exc) { - return false ; - } - } - - return true ; - } - - private static boolean equalArrays( Map counterpart, Set considered, - java.lang.Object[] arr1, java.lang.Object[] arr2 ) - { - int len = arr1.length ; - if (len != arr2.length) - return false ; - - for (int ctr = 0; ctr<len; ctr++ ) - if (!equalsHelper( counterpart, considered, arr1[ctr], arr2[ctr] )) - return false ; - - return true ; - } - - private static boolean equalMaps( Map counterpart, Set considered, - Map map1, Map map2 ) - { - if (map2.size() != map1.size()) - return false; - - try { - Iterator i = map1.entrySet().iterator(); - while (i.hasNext()) { - Entry e = (Entry) i.next(); - java.lang.Object key = e.getKey(); - java.lang.Object value = e.getValue(); - if (value == null) { - if (!(map2.get(key)==null && map2.containsKey(key))) - return false; - } else { - if (!equalsHelper( counterpart, considered, - value, map2.get(key))) - return false; - } - } - } catch(ClassCastException unused) { - return false; - } catch(NullPointerException unused) { - return false; - } - - return true; - } - - // Obviously this is an inefficient quadratic algorithm. - // This is taken pretty directly from AbstractSet and AbstractCollection - // in the JDK. - // For HashSet, an O(n) (with a good hash function) algorithm - // is possible, and likewise TreeSet, since it is - // ordered, is O(n). But this is not worth the effort here. - // Note that the inner loop uses equals, not equalsHelper. - // This is needed because of the searching behavior of this test. - // However, note that this will NOT correctly handle sets that - // contain themselves as members, or that have members that reference - // themselves. These cases will cause infinite regress! - private static boolean equalSets( Map counterpart, Set considered, - Set set1, Set set2 ) - { - if (set1.size() != set2.size()) - return false ; - - Iterator e1 = set1.iterator() ; - while (e1.hasNext()) { - java.lang.Object obj1 = e1.next() ; - - boolean found = false ; - Iterator e2 = set2.iterator() ; - while (e2.hasNext() && !found) { - java.lang.Object obj2 = e2.next() ; - found = equals( obj1, obj2 ) ; - } - - if (!found) - return false ; - } - - return true ; - } - - private static boolean equalLists( Map counterpart, Set considered, - List list1, List list2 ) - { - ListIterator e1 = list1.listIterator(); - ListIterator e2 = list2.listIterator(); - while(e1.hasNext() && e2.hasNext()) { - java.lang.Object o1 = e1.next(); - java.lang.Object o2 = e2.next(); - if (!(o1==null ? o2==null : equalsHelper( - counterpart, considered, o1, o2))) - return false; - } - return !(e1.hasNext() || e2.hasNext()); - } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_pt_BR.properties Mon Jan 10 16:57:20 2011 +0000 @@ -0,0 +1,107 @@ + +# Copyright (c) 2001, 2010, 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. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# 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. +# + +orbd.usage=Uso: {0} <options> \n\nem que <options> inclui:\n -port porta de ativa\u00e7\u00e3o na qual o ORBD deve ser iniciado, padr\u00e3o 1049 (opcional)\n -defaultdb diret\u00f3rio dos arquivos ORBD, padr\u00e3o "./orb.db" (opcional)\n -serverid id do servidor para ORBD, padr\u00e3o 1 (opcional)\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -ORBInitialHost nome de host inicial (necess\u00e1rio)\n + +servertool.usage=Uso: {0} <options> \n\nem que <options> inclui:\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -ORBInitialHost nome de host inicial (necess\u00e1rio)\n +servertool.banner=\n\nBem-vindo a ferramenta de servidor IDL Java \ninsira os comandos no prompt \n +servertool.shorthelp=\n\n\tComandos dispon\u00edveis: \n\t------------------- \n +servertool.baddef=Servidor mal definido: {0} +servertool.nosuchserver=\tservidor n\u00e3o encontrado. +servertool.helddown=\to servidor est\u00e1 em espera. +servertool.nosuchorb=\tORB inv\u00e1lido. +servertool.serverup=\to servidor j\u00e1 est\u00e1 ativo. +servertool.appname=\tapplicationName - {0} +servertool.name=\tname - {0} +servertool.classpath=\tclasspath - {0} +servertool.args=\targs - {0} +servertool.vmargs=\tvmargs - {0} +servertool.serverid=\tserver id - {0} +servertool.servernotrunning=\to servidor n\u00e3o est\u00e1 em execu\u00e7\u00e3o. +servertool.register=\n\n\tregister -server <server class name> \n\t -applicationName <alternate server name> \n\t -classpath <classpath to server> \n\t -args <args to server> \n\t -vmargs <args to server Java VM>\n +servertool.register1=registra um servidor ativ\u00e1vel +servertool.register2=\tservidor registrado (serverid = {0}). +servertool.register3=\tservidor registrado, mas em espera (serverid = {0}). +servertool.register4=\tservidor j\u00e1 registrado (serverid = {0}). + +servertool.unregister=\n\tunregister [ -serverid <server id> | -applicationName <name> ] \n +servertool.unregister1=cancela o registro de um servidor registrado +servertool.unregister2=\tservidor n\u00e3o registrado. + +servertool.locate=\n\tlocate [ -serverid <server id> | -applicationName <name> ] [ <-endpointType <endpointType> ] \n +servertool.locate1=localiza portas de tipo espec\u00edfico para um servidor registrado +servertool.locate2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t---------\t\t------\n +servertool.locateorb=\n\tlocateperorb [ -serverid <server id> | -applicationName <name> ] [ -orbid <ORB name> ]\n +servertool.locateorb1=localiza portas para um orb espec\u00edfico de servidor registrado +servertool.locateorb2=\n\n\tNome do host {0} \n\n\t\tPorta\t\tTipo de porta\t\tId do ORB\n\t\t----\t\t--------\t\t------\n +servertool.getserverid=\n\tgetserverid [ -applicationName <name> ] \n +servertool.getserverid1=retorna o id do servidor de um applicationName +servertool.getserverid2=\tID do servidor de applicationName {0} \u00e9 {1} + +servertool.list=\n\tlist\n +servertool.list1=lista todos os servidores registrados +servertool.list2=\n\tId do servidor\tNome de classe do servidor\t\tAplicativo do servidor\n\t---------\t-----------------\t\t------------------\n +servertool.listactive=\n\tlistactive +servertool.listactive1=lista os servidores atualmente ativos +servertool.listappnames=\tlistappnames\n +servertool.listappnames1=lista os applicationNames atualmente definidos +servertool.listappnames2=applicationNames do servidor atualmente definidos: + +servertool.shutdown=\n\tshutdown [ -serverid <server id> | -applicationName <name> ]\n +servertool.shutdown1=desliga um servidor registrado +servertool.shutdown2=\tservidor desligado com \u00eaxito. +servertool.startserver=\n\tstartup [ -serverid <server id> | -applicationName <name> ]\n +servertool.startserver1=inicia um servidor registrado +servertool.startserver2=\tservidor iniciado com \u00eaxito. + +servertool.quit=\n\tquit\n +servertool.quit1=sai desta ferramenta + +servertool.help=\thelp\n\tOR\n\thelp <command name>\n +servertool.help1=obt\u00e9m ajuda + +servertool.orbidmap=\tUso: orblist [ -serverid <server id> | -applicationName <name> ]\n +servertool.orbidmap1=lista de nomes de orb e seus mapeamentos +servertool.orbidmap2=\n\tId de ORB\t\tNome de ORB\n\t------\t\t--------\n +pnameserv.success=NameServer persistente iniciado com \u00eaxito + + +bootstrap.usage=Uso: {0} <options> \n\nem que <options> inclui:\n -ORBInitialPort porta inicial (necess\u00e1rio)\n -InitialServicesFile arquivo que cont\u00e9m a lista de servi\u00e7os iniciais (necess\u00e1rio)\n +bootstrap.success=configurando porta para {0} e lendo servi\u00e7os de {1} +bootstrap.filenotreadable=o arquivo {0} n\u00e3o \u00e9 leg\u00edvel +bootstrap.filenotfound=arquivo {0} n\u00e3o encontrado +bootstrap.exception=exce\u00e7\u00e3o capturada ao salvar as propriedades no arquivo {0}: Exce\u00e7\u00e3o {1} + +tnameserv.exception=uma exce\u00e7\u00e3o capturada ao iniciar o servi\u00e7o de inicializa\u00e7\u00e3o na porta {0} +tnameserv.usage=tente usar outra porta com os argumentos de linha de comando -ORBInitialPort <portno> +tnameserv.invalidhostoption=ORBInitialHost n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService +tnameserv.orbinitialport0=ORBInitialPort 0 n\u00e3o \u00e9 uma op\u00e7\u00e3o v\u00e1lida para NameService +tnameserv.hs1=Contexto de nomea\u00e7\u00e3o inicial:\n{0} +tnameserv.hs2=TransientNameServer: definindo porta para as refer\u00eancias de objeto iniciais: {0} +tnameserv.hs3=Pronto. + +orbd.commfailure=\nFalha ao iniciar ORBD porque ORBinitialPort j\u00e1 est\u00e1 em uso +orbd.internalexception=\nFalha ao iniciar ORBD devido a uma exce\u00e7\u00e3o interna. \nPoss\u00edveis causas: \n1. ORBInitialPort especificado ou ORBActivationPort j\u00e1 em uso \n2. Sem permiss\u00e3o de grava\u00e7\u00e3o para gravar orb.db +
--- a/src/share/classes/com/sun/corba/se/impl/presentation/rmi/ExceptionHandlerImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/presentation/rmi/ExceptionHandlerImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2010, 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
--- a/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/protocol/CorbaClientRequestDispatcherImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -122,9 +122,6 @@ implements ClientRequestDispatcher { - // Used for locking - private Object lock = new Object(); - public OutputObject beginRequest(Object self, String opName, boolean isOneWay, ContactInfo contactInfo) { @@ -151,7 +148,8 @@ // This locking is done so that multiple connections are not created // for the same endpoint - synchronized (lock) { + //6929137 - Synchronized on contactInfo to avoid blocking across multiple endpoints + synchronized (contactInfo) { if (contactInfo.isConnectionBased()) { if (contactInfo.shouldCacheConnection()) { connection = (CorbaConnection) @@ -185,6 +183,7 @@ if(getContactInfoListIterator(orb).hasNext()) { contactInfo = (ContactInfo) getContactInfoListIterator(orb).next(); + unregisterWaiter(orb); return beginRequest(self, opName, isOneWay, contactInfo); } else { @@ -255,7 +254,7 @@ registerWaiter(messageMediator); // Do connection reclaim now - synchronized (lock) { + synchronized (contactInfo) { if (contactInfo.isConnectionBased()) { if (contactInfo.shouldCacheConnection()) { OutboundConnectionCache connectionCache = @@ -292,10 +291,22 @@ // ContactInfoList outside of subcontract. // Want to move that update to here. if (getContactInfoListIterator(orb).hasNext()) { - contactInfo = (ContactInfo) - getContactInfoListIterator(orb).next(); + contactInfo = (ContactInfo)getContactInfoListIterator(orb).next(); + if (orb.subcontractDebugFlag) { + dprint( "RemarshalException: hasNext true\ncontact info " + contactInfo ); + } + + // Fix for 6763340: Complete the first attempt before starting another. + orb.getPIHandler().makeCompletedClientRequest( + ReplyMessage.LOCATION_FORWARD, null ) ; + unregisterWaiter(orb); + orb.getPIHandler().cleanupClientPIRequest() ; + return beginRequest(self, opName, isOneWay, contactInfo); } else { + if (orb.subcontractDebugFlag) { + dprint( "RemarshalException: hasNext false" ); + } ORBUtilSystemException wrapper = ORBUtilSystemException.get(orb, CORBALogDomains.RPC_PROTOCOL); @@ -374,11 +385,15 @@ boolean retry = getContactInfoListIterator(orb) .reportException(messageMediator.getContactInfo(), e); + + //Bug 6382377: must not lose exception in PI + + // Must run interceptor end point before retrying. + Exception newException = + orb.getPIHandler().invokeClientPIEndingPoint( + ReplyMessage.SYSTEM_EXCEPTION, e); + if (retry) { - // Must run interceptor end point before retrying. - Exception newException = - orb.getPIHandler().invokeClientPIEndingPoint( - ReplyMessage.SYSTEM_EXCEPTION, e); if (newException == e) { continueOrThrowSystemOrRemarshal(messageMediator, new RemarshalException()); @@ -387,6 +402,14 @@ newException); } } else { + if (newException instanceof RuntimeException){ + throw (RuntimeException)newException; + } + else if (newException instanceof RemarshalException) + { + throw (RemarshalException)newException; + } + // NOTE: Interceptor ending point will run in releaseReply. throw e; }
--- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaConnectionCacheBase.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaConnectionCacheBase.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -34,6 +34,7 @@ import com.sun.corba.se.spi.logging.CORBALogDomains; import com.sun.corba.se.spi.orb.ORB; +import com.sun.corba.se.spi.transport.CorbaConnection; import com.sun.corba.se.spi.transport.CorbaConnectionCache; import com.sun.corba.se.impl.logging.ORBUtilSystemException; @@ -87,6 +88,14 @@ } } + public void close() { + synchronized (backingStore()) { + for (Object obj : values()) { + ((CorbaConnection)obj).closeConnectionResources() ; + } + } + } + public long numberOfIdleConnections() { long count = 0;
--- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2010 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 @@ -38,6 +38,7 @@ import org.omg.CORBA.CompletionStatus; import com.sun.corba.se.pept.transport.Acceptor; +import com.sun.corba.se.pept.transport.ConnectionCache; import com.sun.corba.se.pept.transport.ByteBufferPool; import com.sun.corba.se.pept.transport.ContactInfo; import com.sun.corba.se.pept.transport.InboundConnectionCache; @@ -49,6 +50,8 @@ import com.sun.corba.se.spi.orb.ORB; import com.sun.corba.se.spi.transport.CorbaAcceptor; import com.sun.corba.se.spi.transport.CorbaTransportManager; +import com.sun.corba.se.pept.transport.Connection; +import com.sun.corba.se.pept.transport.ConnectionCache; // REVISIT - impl/poa specific: import com.sun.corba.se.impl.oa.poa.Policies; @@ -182,6 +185,12 @@ if (orb.transportDebugFlag) { dprint(".close->"); } + for (Object cc : outboundConnectionCaches.values()) { + ((ConnectionCache)cc).close() ; + } + for (Object cc : inboundConnectionCaches.values()) { + ((ConnectionCache)cc).close() ; + } getSelector(0).close(); } finally { if (orb.transportDebugFlag) {
--- a/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2010, 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 @@ -32,6 +32,7 @@ import java.nio.channels.Selector; import java.util.ArrayList; import java.util.HashMap; +import java.util.Map; import java.util.Iterator; import java.util.List; @@ -66,7 +67,7 @@ private List deferredRegistrations; private List interestOpsList; private HashMap listenerThreads; - private HashMap readerThreads; + private Map readerThreads; private boolean selectorStarted; private boolean closed; private ORBUtilSystemException wrapper ; @@ -81,7 +82,7 @@ deferredRegistrations = new ArrayList(); interestOpsList = new ArrayList(); listenerThreads = new HashMap(); - readerThreads = new HashMap(); + readerThreads = java.util.Collections.synchronizedMap(new HashMap()); closed = false; wrapper = ORBUtilSystemException.get(orb,CORBALogDomains.RPC_TRANSPORT); } @@ -178,8 +179,13 @@ } if (eventHandler.shouldUseSelectThreadToWait()) { - SelectionKey selectionKey = eventHandler.getSelectionKey(); - selectionKey.cancel(); + SelectionKey selectionKey ; + synchronized(deferredRegistrations) { + selectionKey = eventHandler.getSelectionKey(); + } + if (selectionKey != null) { + selectionKey.cancel(); + } selector.wakeup(); return; }
--- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -33,14 +33,7 @@ import java.nio.channels.SelectionKey; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.Collection; import java.util.Iterator; -import java.util.LinkedList; - -import org.omg.CORBA.CompletionStatus; -import org.omg.CORBA.INTERNAL; import com.sun.corba.se.pept.broker.Broker; import com.sun.corba.se.pept.encoding.InputObject; @@ -61,18 +54,12 @@ import com.sun.corba.se.spi.ior.iiop.IIOPProfileTemplate ; import com.sun.corba.se.spi.ior.iiop.GIOPVersion ; import com.sun.corba.se.spi.ior.iiop.AlternateIIOPAddressComponent; -import com.sun.corba.se.spi.legacy.connection.LegacyServerSocketEndPointInfo; import com.sun.corba.se.spi.logging.CORBALogDomains; -import com.sun.corba.se.spi.monitoring.LongMonitoredAttributeBase; -import com.sun.corba.se.spi.monitoring.MonitoringConstants; -import com.sun.corba.se.spi.monitoring.MonitoringFactories; -import com.sun.corba.se.spi.monitoring.MonitoredObject; import com.sun.corba.se.spi.orb.ORB; import com.sun.corba.se.spi.orbutil.threadpool.Work; import com.sun.corba.se.spi.protocol.CorbaMessageMediator; import com.sun.corba.se.spi.transport.CorbaAcceptor; import com.sun.corba.se.spi.transport.CorbaConnection; -import com.sun.corba.se.spi.transport.CorbaContactInfo; import com.sun.corba.se.spi.transport.SocketInfo; import com.sun.corba.se.spi.transport.SocketOrChannelAcceptor; @@ -82,7 +69,6 @@ import com.sun.corba.se.impl.oa.poa.Policies; // REVISIT impl/poa specific import com.sun.corba.se.impl.orbutil.ORBConstants; import com.sun.corba.se.impl.orbutil.ORBUtility; -import com.sun.corba.se.impl.ior.iiop.JavaSerializationComponent; // BEGIN Legacy support. import com.sun.corba.se.spi.legacy.connection.LegacyServerSocketEndPointInfo; @@ -442,12 +428,7 @@ dprint(".doWork->: " + this); } if (selectionKey.isAcceptable()) { - AccessController.doPrivileged(new PrivilegedAction() { - public java.lang.Object run() { accept(); - return null; - } - }); } else { if (orb.transportDebugFlag) { dprint(".doWork: ! selectionKey.isAcceptable: " + this);
--- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -811,6 +811,7 @@ dprint(".close: " + this, e); } } + closeConnectionResources(); } finally { if (orb.transportDebugFlag) { dprint(".close<-: " + this); @@ -818,6 +819,28 @@ } } + public void closeConnectionResources() { + if (orb.transportDebugFlag) { + dprint(".closeConnectionResources->: " + this); + } + Selector selector = orb.getTransportManager().getSelector(0); + selector.unregisterForEvent(this); + try { + if (socketChannel != null) + socketChannel.close() ; + if (socket != null && !socket.isClosed()) + socket.close() ; + } catch (IOException e) { + if (orb.transportDebugFlag) { + dprint( ".closeConnectionResources: " + this, e ) ; + } + } + if (orb.transportDebugFlag) { + dprint(".closeConnectionResources<-: " + this); + } + } + + public Acceptor getAcceptor() { return acceptor;
--- a/src/share/classes/com/sun/corba/se/pept/transport/ConnectionCache.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/pept/transport/ConnectionCache.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2010, 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 @@ -41,6 +41,12 @@ public long numberOfBusyConnections(); public boolean reclaim(); + + /** Close all connections in the connection cache. + * This is used as a final cleanup, and will result + * in abrupt termination of any pending communications. + */ + public void close(); } // End of file.
--- a/src/share/classes/com/sun/corba/se/spi/orb/OperationFactory.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/spi/orb/OperationFactory.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -25,6 +25,7 @@ package com.sun.corba.se.spi.orb ; import java.util.StringTokenizer ; +import java.util.Arrays ; import java.lang.reflect.Array ; @@ -446,7 +447,7 @@ public String toString() { return "sequenceAction(separator=\"" + sep + "\",actions=" + - ObjectUtility.compactObjectToString(actions) + ")" ; + Arrays.toString(actions) + ")" ; } } @@ -533,7 +534,7 @@ public String toString() { return "mapSequenceAction(" + - ObjectUtility.compactObjectToString(op) + ")" ; + Arrays.toString(op) + ")" ; } }
--- a/src/share/classes/com/sun/corba/se/spi/orb/ParserImplBase.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/spi/orb/ParserImplBase.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -125,7 +125,7 @@ // Since exc wraps the actual exception, use exc.getCause() // instead of exc. throw wrapper.errorSettingField( exc.getCause(), name, - ObjectUtility.compactObjectToString(value) ) ; + value.toString() ) ; } }
--- a/src/share/classes/com/sun/corba/se/spi/protocol/PIHandler.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/spi/protocol/PIHandler.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -142,6 +142,27 @@ int replyStatus, Exception exception ) ; /** + * Called when a retry is needed after initiateClientPIRequest but + * before invokeClientPIRequest. In this case, we need to properly + * balance initiateClientPIRequest/cleanupClientPIRequest calls, + * but WITHOUT extraneous calls to invokeClientPIEndingPoint + * (see bug 6763340). + * + * @param replyStatus One of the constants in iiop.messages.ReplyMessage + * indicating which reply status to set. + * @param exception The exception before ending interception points have + * been invoked, or null if no exception at the moment. + * @return The exception to be thrown, after having gone through + * all ending points, or null if there is no exception to be + * thrown. Note that this exception can be either the same or + * different from the exception set using setClientPIException. + * There are four possible return types: null (no exception), + * SystemException, UserException, or RemarshalException. + */ + Exception makeCompletedClientRequest( + int replyStatus, Exception exception ) ; + + /** * Invoked when a request is about to be created. Must be called before * any of the setClientPI* methods so that a new info object can be * prepared for information collection.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/com/sun/corba/se/spi/protocol/RetryType.java Mon Jan 10 16:57:20 2011 +0000 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010, 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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 com.sun.corba.se.spi.protocol ; + +// Introduce more information about WHY we are re-trying a request +// so we can properly handle the two cases: +// - BEFORE_RESPONSE means that the retry is caused by +// something that happened BEFORE the message was sent: either +// an exception from the SocketFactory, or one from the +// Client side send_request interceptor point. +// - AFTER_RESPONSE means that the retry is a result either of the +// request sent to the server (from the response), or from the +// Client side receive_xxx interceptor point. +public enum RetryType { + NONE( false ), + BEFORE_RESPONSE( true ), + AFTER_RESPONSE( true ) ; + + private final boolean isRetry ; + + RetryType( boolean isRetry ) { + this.isRetry = isRetry ; + } + + public boolean isRetry() { + return this.isRetry ; + } +} ; +
--- a/src/share/classes/com/sun/corba/se/spi/transport/CorbaConnection.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/corba/se/spi/transport/CorbaConnection.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2010, 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 @@ -163,6 +163,10 @@ // REVISIT - MessageMediator parameter? public void serverRequestProcessingBegins(); public void serverRequestProcessingEnds(); + + /** Clean up all connection resources. Used when shutting down an ORB. + */ + public void closeConnectionResources(); } // End of file.
--- a/src/share/classes/com/sun/tools/corba/se/idl/constExpr/Expression.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/tools/corba/se/idl/constExpr/Expression.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2010, 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
--- a/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Stub.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Stub.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2010, 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 @@ -344,17 +344,27 @@ stream.println (" String str = s.readUTF ();"); stream.println (" String[] args = null;"); stream.println (" java.util.Properties props = null;"); - stream.println (" org.omg.CORBA.Object obj = org.omg.CORBA.ORB.init (args, props).string_to_object (str);"); + stream.println (" org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, props);"); + stream.println (" try {"); + stream.println (" org.omg.CORBA.Object obj = orb.string_to_object (str);"); stream.println (" org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate ();"); stream.println (" _set_delegate (delegate);"); + stream.println (" } finally {"); + stream.println (" orb.destroy() ;"); + stream.println (" }"); stream.println (" }"); stream.println (); stream.println (" private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException"); stream.println (" {"); stream.println (" String[] args = null;"); stream.println (" java.util.Properties props = null;"); - stream.println (" String str = org.omg.CORBA.ORB.init (args, props).object_to_string (this);"); + stream.println (" org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, props);"); + stream.println (" try {"); + stream.println (" String str = orb.object_to_string (this);"); stream.println (" s.writeUTF (str);"); + stream.println (" } finally {"); + stream.println (" orb.destroy() ;"); + stream.println (" }"); stream.println (" }"); }
--- a/src/share/classes/javax/rmi/PortableRemoteObject.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/javax/rmi/PortableRemoteObject.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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
--- a/src/share/classes/org/omg/CORBA/ORB.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CORBA/ORB.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2010, 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
--- a/src/share/classes/org/omg/CORBA/SetOverrideType.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CORBA/SetOverrideType.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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
--- a/src/share/classes/org/omg/CORBA/TCKind.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CORBA/TCKind.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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
--- a/src/share/classes/org/omg/CORBA/UnknownUserException.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CORBA/UnknownUserException.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2010, 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
--- a/src/share/classes/org/omg/CORBA/portable/ServantObject.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CORBA/portable/ServantObject.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2010, 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
--- a/src/share/classes/org/omg/CosNaming/nameservice.idl Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/CosNaming/nameservice.idl Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2002, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2010, 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
--- a/src/share/classes/org/omg/PortableInterceptor/Interceptors.idl Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/org/omg/PortableInterceptor/Interceptors.idl Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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
--- a/src/share/classes/sun/corba/Bridge.java Wed Nov 10 18:49:04 2010 +0000 +++ b/src/share/classes/sun/corba/Bridge.java Mon Jan 10 16:57:20 2011 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2010, 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