diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2010-06-03 19:11:10 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2010-06-03 19:11:10 +0000 |
commit | a17284098845d59d84bbf76b33190a5a91c12a82 (patch) | |
tree | c634c40062604cd1cdefa535b838926c9ede1a38 /java/text/SimpleDateFormat.java | |
parent | 43b6a8d2580b5c9549a58db41a0239f3929e4b91 (diff) | |
download | classpath-a17284098845d59d84bbf76b33190a5a91c12a82.tar.gz |
Normalise whitespace.
2010-06-03 Andrew John Hughes <ahughes@redhat.com>
* examples/gnu/classpath/examples/CORBA/NamingService/Demo.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/Demo.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/StructureToPass.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/StructureToReturn.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/TreeNode.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/WeThrowThisException.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/WeThrowThisExceptionHelper.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/_DemoTesterImplBase.java,
* examples/gnu/classpath/examples/CORBA/SimpleCommunication/communication/_DemoTesterStub.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/CanvasWorld.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/ChatConstants.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/ClientFrame.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/Demo.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/GameManager.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/GameManagerImpl.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/IorReader.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/OrbStarter.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/Player.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/PlayerImpl.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/PlayingDesk.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/State.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/X5Server.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/_GameManager_Stub.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java,
* examples/gnu/classpath/examples/CORBA/swing/x5/_Player_Stub.java,
* examples/gnu/classpath/examples/awt/AicasGraphicsBenchmark.java,
* examples/gnu/classpath/examples/awt/Demo.java,
* examples/gnu/classpath/examples/awt/HintingDemo.java,
* examples/gnu/classpath/examples/datatransfer/Demo.java,
* examples/gnu/classpath/examples/html/Demo.java,
* examples/gnu/classpath/examples/java2d/J2dBenchmark.java,
* examples/gnu/classpath/examples/java2d/J2dBenchmarkGUI.java,
* examples/gnu/classpath/examples/java2d/JNIOverhead.java,
* examples/gnu/classpath/examples/jawt/DemoJAWT.java,
* examples/gnu/classpath/examples/management/TestClassLoading.java,
* examples/gnu/classpath/examples/management/TestCompilation.java,
* examples/gnu/classpath/examples/management/TestGarbageCollector.java,
* examples/gnu/classpath/examples/management/TestMemory.java,
* examples/gnu/classpath/examples/management/TestMemoryManager.java,
* examples/gnu/classpath/examples/management/TestMemoryPool.java,
* examples/gnu/classpath/examples/management/TestThread.java,
* examples/gnu/classpath/examples/midi/Demo.java,
* examples/gnu/classpath/examples/print/Demo.java,
* examples/gnu/classpath/examples/sound/AudioPlayerSample.java,
* examples/gnu/classpath/examples/swing/BrowserEditorKit.java,
* examples/gnu/classpath/examples/swing/ButtonDemo.java,
* examples/gnu/classpath/examples/swing/ComboBoxDemo.java,
* examples/gnu/classpath/examples/swing/Demo.java,
* examples/gnu/classpath/examples/swing/DemoFactory.java,
* examples/gnu/classpath/examples/swing/DocumentFilterDemo.java,
* examples/gnu/classpath/examples/swing/FileChooserDemo.java,
* examples/gnu/classpath/examples/swing/HtmlDemo.java,
* examples/gnu/classpath/examples/swing/ListDemo.java,
* examples/gnu/classpath/examples/swing/MetalThemeEditor.java,
* examples/gnu/classpath/examples/swing/NavigationFilterDemo.java,
* examples/gnu/classpath/examples/swing/ScrollBarDemo.java,
* examples/gnu/classpath/examples/swing/SliderDemo.java,
* examples/gnu/classpath/examples/swing/SpinnerDemo.java,
* examples/gnu/classpath/examples/swing/TabbedPaneDemo.java,
* examples/gnu/classpath/examples/swing/TableDemo.java,
* examples/gnu/classpath/examples/swing/TextAreaDemo.java,
* examples/gnu/classpath/examples/swing/TextFieldDemo.java,
* examples/gnu/classpath/examples/swing/TreeDemo.java,
* gnu/CORBA/BigDecimalHelper.java,
* gnu/CORBA/CDR/AbstractCdrInput.java,
* gnu/CORBA/CDR/AbstractCdrOutput.java,
* gnu/CORBA/CDR/AbstractDataInput.java,
* gnu/CORBA/CDR/AbstractDataOutput.java,
* gnu/CORBA/CDR/AligningInput.java,
* gnu/CORBA/CDR/AligningOutput.java,
* gnu/CORBA/CDR/ArrayValueHelper.java,
* gnu/CORBA/CDR/BigEndianInputStream.java,
* gnu/CORBA/CDR/BigEndianOutputStream.java,
* gnu/CORBA/CDR/BufferedCdrOutput.java,
* gnu/CORBA/CDR/BufferredCdrInput.java,
* gnu/CORBA/CDR/HeadlessInput.java,
* gnu/CORBA/CDR/IDLTypeHelper.java,
* gnu/CORBA/CDR/LittleEndianOutputStream.java,
* gnu/CORBA/CDR/UnknownExceptionCtxHandler.java,
* gnu/CORBA/CDR/VMVio.java,
* gnu/CORBA/CDR/Vio.java,
* gnu/CORBA/CDR/gnuRuntime.java,
* gnu/CORBA/CDR/gnuValueStream.java,
* gnu/CORBA/CdrEncapsCodecImpl.java,
* gnu/CORBA/CollocatedOrbs.java,
* gnu/CORBA/Connected_objects.java,
* gnu/CORBA/DefaultSocketFactory.java,
* gnu/CORBA/DuplicateNameHolder.java,
* gnu/CORBA/DynAn/AbstractAny.java,
* gnu/CORBA/DynAn/DivideableAny.java,
* gnu/CORBA/DynAn/NameValuePairHolder.java,
* gnu/CORBA/DynAn/RecordAny.java,
* gnu/CORBA/DynAn/ValueChangeListener.java,
* gnu/CORBA/DynAn/gnuDynAny.java,
* gnu/CORBA/DynAn/gnuDynAnyFactory.java,
* gnu/CORBA/DynAn/gnuDynArray.java,
* gnu/CORBA/DynAn/gnuDynEnum.java,
* gnu/CORBA/DynAn/gnuDynFixed.java,
* gnu/CORBA/DynAn/gnuDynSequence.java,
* gnu/CORBA/DynAn/gnuDynUnion.java,
* gnu/CORBA/DynAn/gnuDynValue.java,
* gnu/CORBA/DynAn/gnuDynValueBox.java,
* gnu/CORBA/DynAnySeqHolder.java,
* gnu/CORBA/EmptyExceptionHolder.java,
* gnu/CORBA/ForwardRequestHelper.java,
* gnu/CORBA/GIOP/CharSets_OSF.java,
* gnu/CORBA/GIOP/CloseMessage.java,
* gnu/CORBA/GIOP/ErrorMessage.java,
* gnu/CORBA/GIOP/MessageHeader.java,
* gnu/CORBA/GIOP/ServiceContext.java,
* gnu/CORBA/GIOP/v1_2/RequestHeader.java,
* gnu/CORBA/GeneralHolder.java,
* gnu/CORBA/IOR.java,
* gnu/CORBA/Interceptor/ClientRequestInterceptors.java,
* gnu/CORBA/Interceptor/ForwardRequestHolder.java,
* gnu/CORBA/Interceptor/IORInterceptors.java,
* gnu/CORBA/Interceptor/Registrator.java,
* gnu/CORBA/Interceptor/ServerRequestInterceptors.java,
* gnu/CORBA/Interceptor/gnuClientRequestInfo.java,
* gnu/CORBA/Interceptor/gnuIcCurrent.java,
* gnu/CORBA/Interceptor/gnuIorInfo.java,
* gnu/CORBA/Interceptor/gnuServerRequestInfo.java,
* gnu/CORBA/IorDelegate.java,
* gnu/CORBA/IorObject.java,
* gnu/CORBA/Minor.java,
* gnu/CORBA/NameDynAnyPairHolder.java,
* gnu/CORBA/NameDynAnyPairSeqHolder.java,
* gnu/CORBA/NameValuePairHolder.java,
* gnu/CORBA/NameValuePairSeqHolder.java,
* gnu/CORBA/NamingService/NameParser.java,
* gnu/CORBA/NamingService/NamingMap.java,
* gnu/CORBA/NamingService/NamingServiceTransient.java,
* gnu/CORBA/NamingService/TransientContext.java,
* gnu/CORBA/ObjectCreator.java,
* gnu/CORBA/OrbFocused.java,
* gnu/CORBA/OrbFunctional.java,
* gnu/CORBA/OrbRestricted.java,
* gnu/CORBA/Poa/AOM.java,
* gnu/CORBA/Poa/AccessiblePolicy.java,
* gnu/CORBA/Poa/DynamicImpHandler.java,
* gnu/CORBA/Poa/ForwardRequestHolder.java,
* gnu/CORBA/Poa/ForwardedServant.java,
* gnu/CORBA/Poa/InvalidPolicyHolder.java,
* gnu/CORBA/Poa/LocalDelegate.java,
* gnu/CORBA/Poa/LocalRequest.java,
* gnu/CORBA/Poa/LocalServerRequest.java,
* gnu/CORBA/Poa/ORB_1_4.java,
* gnu/CORBA/Poa/ServantDelegateImpl.java,
* gnu/CORBA/Poa/StandardPolicies.java,
* gnu/CORBA/Poa/gnuAdapterActivator.java,
* gnu/CORBA/Poa/gnuForwardRequest.java,
* gnu/CORBA/Poa/gnuIdAssignmentPolicy.java,
* gnu/CORBA/Poa/gnuIdUniquenessPolicy.java,
* gnu/CORBA/Poa/gnuImplicitActivationPolicy.java,
* gnu/CORBA/Poa/gnuLifespanPolicy.java,
* gnu/CORBA/Poa/gnuPOA.java,
* gnu/CORBA/Poa/gnuPOAManager.java,
* gnu/CORBA/Poa/gnuPoaCurrent.java,
* gnu/CORBA/Poa/gnuRequestProcessingPolicy.java,
* gnu/CORBA/Poa/gnuServantObject.java,
* gnu/CORBA/Poa/gnuServantRetentionPolicy.java,
* gnu/CORBA/Poa/gnuThreadPolicy.java,
* gnu/CORBA/ServiceRequestAdapter.java,
* gnu/CORBA/SetOverrideTypeHolder.java,
* gnu/CORBA/SimpleDelegate.java,
* gnu/CORBA/SocketRepository.java,
* gnu/CORBA/StreamHolder.java,
* gnu/CORBA/TypeCodeHelper.java,
* gnu/CORBA/TypeKindNamer.java,
* gnu/CORBA/Version.java,
* gnu/CORBA/_PolicyImplBase.java,
* gnu/CORBA/gnuAny.java,
* gnu/CORBA/gnuCodecFactory.java,
* gnu/CORBA/gnuEnvironment.java,
* gnu/CORBA/gnuRequest.java,
* gnu/CORBA/gnuValueHolder.java,
* gnu/CORBA/interfaces/SocketFactory.java,
* gnu/CORBA/typecodes/AliasTypeCode.java,
* gnu/CORBA/typecodes/ArrayTypeCode.java,
* gnu/CORBA/typecodes/FixedTypeCode.java,
* gnu/CORBA/typecodes/GeneralTypeCode.java,
* gnu/CORBA/typecodes/PrimitiveTypeCode.java,
* gnu/CORBA/typecodes/RecordTypeCode.java,
* gnu/CORBA/typecodes/RecursiveTypeCode.java,
* gnu/CORBA/typecodes/StringTypeCode.java,
* gnu/classpath/Pair.java,
* gnu/classpath/Pointer.java,
* gnu/classpath/Pointer32.java,
* gnu/classpath/Pointer64.java,
* gnu/classpath/ServiceFactory.java,
* gnu/classpath/ServiceProviderLoadingAction.java,
* gnu/classpath/SystemProperties.java,
* gnu/classpath/debug/Component.java,
* gnu/classpath/debug/PreciseFilter.java,
* gnu/classpath/debug/SystemLogger.java,
* gnu/classpath/debug/TeeInputStream.java,
* gnu/classpath/debug/TeeReader.java,
* gnu/classpath/jdwp/Jdwp.java,
* gnu/classpath/jdwp/JdwpConstants.java,
* gnu/classpath/jdwp/event/BreakpointEvent.java,
* gnu/classpath/jdwp/event/ClassPrepareEvent.java,
* gnu/classpath/jdwp/event/ClassUnloadEvent.java,
* gnu/classpath/jdwp/event/Event.java,
* gnu/classpath/jdwp/event/EventManager.java,
* gnu/classpath/jdwp/event/EventRequest.java,
* gnu/classpath/jdwp/event/ExceptionEvent.java,
* gnu/classpath/jdwp/event/MethodEntryEvent.java,
* gnu/classpath/jdwp/event/MethodExitEvent.java,
* gnu/classpath/jdwp/event/SingleStepEvent.java,
* gnu/classpath/jdwp/event/ThreadEndEvent.java,
* gnu/classpath/jdwp/event/VmDeathEvent.java,
* gnu/classpath/jdwp/event/VmInitEvent.java,
* gnu/classpath/jdwp/event/filters/ClassExcludeFilter.java,
* gnu/classpath/jdwp/event/filters/ClassMatchFilter.java,
* gnu/classpath/jdwp/event/filters/ClassOnlyFilter.java,
* gnu/classpath/jdwp/event/filters/ExceptionOnlyFilter.java,
* gnu/classpath/jdwp/event/filters/FieldOnlyFilter.java,
* gnu/classpath/jdwp/event/filters/InstanceOnlyFilter.java,
* gnu/classpath/jdwp/event/filters/StepFilter.java,
* gnu/classpath/jdwp/event/filters/ThreadOnlyFilter.java,
* gnu/classpath/jdwp/exception/InvalidClassException.java,
* gnu/classpath/jdwp/exception/InvalidClassLoaderException.java,
* gnu/classpath/jdwp/exception/InvalidEventTypeException.java,
* gnu/classpath/jdwp/exception/InvalidFieldException.java,
* gnu/classpath/jdwp/exception/InvalidFrameException.java,
* gnu/classpath/jdwp/exception/InvalidLocationException.java,
* gnu/classpath/jdwp/exception/InvalidMethodException.java,
* gnu/classpath/jdwp/exception/InvalidObjectException.java,
* gnu/classpath/jdwp/exception/InvalidSlotException.java,
* gnu/classpath/jdwp/exception/InvalidStringException.java,
* gnu/classpath/jdwp/exception/InvalidThreadException.java,
* gnu/classpath/jdwp/exception/InvalidThreadGroupException.java,
* gnu/classpath/jdwp/exception/NativeMethodException.java,
* gnu/classpath/jdwp/exception/NotImplementedException.java,
* gnu/classpath/jdwp/id/JdwpId.java,
* gnu/classpath/jdwp/id/NullObjectId.java,
* gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/ArrayTypeCommandSet.java,
* gnu/classpath/jdwp/processor/ClassLoaderReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/ClassObjectReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/ClassTypeCommandSet.java,
* gnu/classpath/jdwp/processor/CommandSet.java,
* gnu/classpath/jdwp/processor/EventRequestCommandSet.java,
* gnu/classpath/jdwp/processor/FieldCommandSet.java,
* gnu/classpath/jdwp/processor/InterfaceTypeCommandSet.java,
* gnu/classpath/jdwp/processor/MethodCommandSet.java,
* gnu/classpath/jdwp/processor/ObjectReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/PacketProcessor.java,
* gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java,
* gnu/classpath/jdwp/processor/StackFrameCommandSet.java,
* gnu/classpath/jdwp/processor/StringReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/ThreadGroupReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/ThreadReferenceCommandSet.java,
* gnu/classpath/jdwp/processor/VirtualMachineCommandSet.java,
* gnu/classpath/jdwp/transport/JdwpCommandPacket.java,
* gnu/classpath/jdwp/transport/JdwpConnection.java,
* gnu/classpath/jdwp/transport/JdwpPacket.java,
* gnu/classpath/jdwp/transport/JdwpReplyPacket.java,
* gnu/classpath/jdwp/transport/SocketTransport.java,
* gnu/classpath/jdwp/transport/TransportFactory.java,
* gnu/classpath/jdwp/util/JdwpString.java,
* gnu/classpath/jdwp/util/LineTable.java,
* gnu/classpath/jdwp/util/Location.java,
* gnu/classpath/jdwp/util/MethodResult.java,
* gnu/classpath/jdwp/util/MonitorInfo.java,
* gnu/classpath/jdwp/util/Signature.java,
* gnu/classpath/jdwp/util/VariableTable.java,
* gnu/classpath/jdwp/value/ArrayValue.java,
* gnu/classpath/jdwp/value/BooleanValue.java,
* gnu/classpath/jdwp/value/ByteValue.java,
* gnu/classpath/jdwp/value/CharValue.java,
* gnu/classpath/jdwp/value/DoubleValue.java,
* gnu/classpath/jdwp/value/FloatValue.java,
* gnu/classpath/jdwp/value/IntValue.java,
* gnu/classpath/jdwp/value/LongValue.java,
* gnu/classpath/jdwp/value/ObjectValue.java,
* gnu/classpath/jdwp/value/ShortValue.java,
* gnu/classpath/jdwp/value/StringValue.java,
* gnu/classpath/jdwp/value/Value.java,
* gnu/classpath/jdwp/value/ValueFactory.java,
* gnu/classpath/jdwp/value/VoidValue.java,
* gnu/classpath/toolkit/DefaultDaemonThreadFactory.java,
* gnu/java/awt/AWTUtilities.java,
* gnu/java/awt/BitMaskExtent.java,
* gnu/java/awt/BitwiseXORComposite.java,
* gnu/java/awt/Buffers.java,
* gnu/java/awt/ClasspathGraphicsEnvironment.java,
* gnu/java/awt/ClasspathToolkit.java,
* gnu/java/awt/ComponentDataBlitOp.java,
* gnu/java/awt/EmbeddedWindow.java,
* gnu/java/awt/GradientPaintContext.java,
* gnu/java/awt/color/CieXyzConverter.java,
* gnu/java/awt/color/ClutProfileConverter.java,
* gnu/java/awt/color/ColorLookUpTable.java,
* gnu/java/awt/color/GrayProfileConverter.java,
* gnu/java/awt/color/GrayScaleConverter.java,
* gnu/java/awt/color/LinearRGBConverter.java,
* gnu/java/awt/color/ProfileHeader.java,
* gnu/java/awt/color/RgbProfileConverter.java,
* gnu/java/awt/color/SrgbConverter.java,
* gnu/java/awt/color/ToneReproductionCurve.java,
* gnu/java/awt/dnd/GtkMouseDragGestureRecognizer.java,
* gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java,
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetContextPeer.java,
* gnu/java/awt/dnd/peer/gtk/GtkDropTargetPeer.java,
* gnu/java/awt/font/FontDelegate.java,
* gnu/java/awt/font/FontFactory.java,
* gnu/java/awt/font/GNUGlyphVector.java,
* gnu/java/awt/font/OpenTypeFontPeer.java,
* gnu/java/awt/font/autofit/GlyphHints.java,
* gnu/java/awt/font/autofit/Latin.java,
* gnu/java/awt/font/autofit/Utils.java,
* gnu/java/awt/font/opentype/CharGlyphMap.java,
* gnu/java/awt/font/opentype/GlyphNamer.java,
* gnu/java/awt/font/opentype/MacResourceFork.java,
* gnu/java/awt/font/opentype/NameDecoder.java,
* gnu/java/awt/font/opentype/OpenTypeFont.java,
* gnu/java/awt/font/opentype/OpenTypeFontFactory.java,
* gnu/java/awt/font/opentype/truetype/GlyphLoader.java,
* gnu/java/awt/font/opentype/truetype/GlyphLocator.java,
* gnu/java/awt/font/opentype/truetype/GlyphMeasurer.java,
* gnu/java/awt/font/opentype/truetype/Point.java,
* gnu/java/awt/font/opentype/truetype/TrueTypeScaler.java,
* gnu/java/awt/font/opentype/truetype/VirtualMachine.java,
* gnu/java/awt/font/opentype/truetype/Zone.java,
* gnu/java/awt/font/opentype/truetype/ZonePathIterator.java,
* gnu/java/awt/image/AsyncImage.java,
* gnu/java/awt/image/ImageConverter.java,
* gnu/java/awt/image/ImageDecoder.java,
* gnu/java/awt/image/XBMDecoder.java,
* gnu/java/awt/java2d/AbstractGraphics2D.java,
* gnu/java/awt/java2d/AlphaCompositeContext.java,
* gnu/java/awt/java2d/CubicSegment.java,
* gnu/java/awt/java2d/LineSegment.java,
* gnu/java/awt/java2d/PixelCoverage.java,
* gnu/java/awt/java2d/QuadSegment.java,
* gnu/java/awt/java2d/RasterGraphics.java,
* gnu/java/awt/java2d/ScanlineConverter.java,
* gnu/java/awt/java2d/ScanlineCoverage.java,
* gnu/java/awt/java2d/Segment.java,
* gnu/java/awt/java2d/TexturePaintContext.java,
* gnu/java/awt/peer/ClasspathDesktopPeer.java,
* gnu/java/awt/peer/ClasspathFontPeer.java,
* gnu/java/awt/peer/GLightweightPeer.java,
* gnu/java/awt/peer/GnomeDesktopPeer.java,
* gnu/java/awt/peer/KDEDesktopPeer.java,
* gnu/java/awt/peer/gtk/AsyncImage.java,
* gnu/java/awt/peer/gtk/BufferedImageGraphics.java,
* gnu/java/awt/peer/gtk/CairoGraphics2D.java,
* gnu/java/awt/peer/gtk/CairoSurface.java,
* gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java,
* gnu/java/awt/peer/gtk/ComponentGraphics.java,
* gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java,
* gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
* gnu/java/awt/peer/gtk/GdkFontPeer.java,
* gnu/java/awt/peer/gtk/GdkGraphicsConfiguration.java,
* gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
* gnu/java/awt/peer/gtk/GdkRobotPeer.java,
* gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
* gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
* gnu/java/awt/peer/gtk/GtkChoicePeer.java,
* gnu/java/awt/peer/gtk/GtkClipboard.java,
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
* gnu/java/awt/peer/gtk/GtkContainerPeer.java,
* gnu/java/awt/peer/gtk/GtkCursor.java,
* gnu/java/awt/peer/gtk/GtkDialogPeer.java,
* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
* gnu/java/awt/peer/gtk/GtkFramePeer.java,
* gnu/java/awt/peer/gtk/GtkGenericPeer.java,
* gnu/java/awt/peer/gtk/GtkImage.java,
* gnu/java/awt/peer/gtk/GtkImageConsumer.java,
* gnu/java/awt/peer/gtk/GtkLabelPeer.java,
* gnu/java/awt/peer/gtk/GtkListPeer.java,
* gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java,
* gnu/java/awt/peer/gtk/GtkMenuPeer.java,
* gnu/java/awt/peer/gtk/GtkMouseInfoPeer.java,
* gnu/java/awt/peer/gtk/GtkPanelPeer.java,
* gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java,
* gnu/java/awt/peer/gtk/GtkScrollbarPeer.java,
* gnu/java/awt/peer/gtk/GtkSelection.java,
* gnu/java/awt/peer/gtk/GtkToolkit.java,
* gnu/java/awt/peer/gtk/GtkVolatileImage.java,
* gnu/java/awt/peer/gtk/GtkWindowPeer.java,
* gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
* gnu/java/awt/peer/headless/HeadlessGraphicsEnvironment.java,
* gnu/java/awt/peer/qt/MainQtThread.java,
* gnu/java/awt/peer/qt/QMatrix.java,
* gnu/java/awt/peer/qt/QPainterPath.java,
* gnu/java/awt/peer/qt/QPen.java,
* gnu/java/awt/peer/qt/QtAudioClip.java,
* gnu/java/awt/peer/qt/QtButtonPeer.java,
* gnu/java/awt/peer/qt/QtCheckboxPeer.java,
* gnu/java/awt/peer/qt/QtChoicePeer.java,
* gnu/java/awt/peer/qt/QtComponentGraphics.java,
* gnu/java/awt/peer/qt/QtComponentPeer.java,
* gnu/java/awt/peer/qt/QtContainerPeer.java,
* gnu/java/awt/peer/qt/QtDialogPeer.java,
* gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java,
* gnu/java/awt/peer/qt/QtFileDialogPeer.java,
* gnu/java/awt/peer/qt/QtFontMetrics.java,
* gnu/java/awt/peer/qt/QtFontPeer.java,
* gnu/java/awt/peer/qt/QtFramePeer.java,
* gnu/java/awt/peer/qt/QtGraphics.java,
* gnu/java/awt/peer/qt/QtGraphicsEnvironment.java,
* gnu/java/awt/peer/qt/QtImage.java,
* gnu/java/awt/peer/qt/QtImageConsumer.java,
* gnu/java/awt/peer/qt/QtImageDirectGraphics.java,
* gnu/java/awt/peer/qt/QtImageGraphics.java,
* gnu/java/awt/peer/qt/QtLabelPeer.java,
* gnu/java/awt/peer/qt/QtListPeer.java,
* gnu/java/awt/peer/qt/QtMenuBarPeer.java,
* gnu/java/awt/peer/qt/QtMenuComponentPeer.java,
* gnu/java/awt/peer/qt/QtMenuItemPeer.java,
* gnu/java/awt/peer/qt/QtMenuPeer.java,
* gnu/java/awt/peer/qt/QtPanelPeer.java,
* gnu/java/awt/peer/qt/QtPopupMenuPeer.java,
* gnu/java/awt/peer/qt/QtRepaintThread.java,
* gnu/java/awt/peer/qt/QtScreenDevice.java,
* gnu/java/awt/peer/qt/QtScreenDeviceConfiguration.java,
* gnu/java/awt/peer/qt/QtScrollPanePeer.java,
* gnu/java/awt/peer/qt/QtScrollbarPeer.java,
* gnu/java/awt/peer/qt/QtTextAreaPeer.java,
* gnu/java/awt/peer/qt/QtTextFieldPeer.java,
* gnu/java/awt/peer/qt/QtToolkit.java,
* gnu/java/awt/peer/qt/QtVolatileImage.java,
* gnu/java/awt/peer/qt/QtWindowPeer.java,
* gnu/java/awt/peer/swing/SwingButtonPeer.java,
* gnu/java/awt/peer/swing/SwingCheckboxPeer.java,
* gnu/java/awt/peer/swing/SwingComponent.java,
* gnu/java/awt/peer/swing/SwingComponentPeer.java,
* gnu/java/awt/peer/swing/SwingContainerPeer.java,
* gnu/java/awt/peer/swing/SwingLabelPeer.java,
* gnu/java/awt/peer/swing/SwingListPeer.java,
* gnu/java/awt/peer/swing/SwingMenuItemPeer.java,
* gnu/java/awt/peer/swing/SwingMenuPeer.java,
* gnu/java/awt/peer/swing/SwingTextAreaPeer.java,
* gnu/java/awt/peer/swing/SwingTextFieldPeer.java,
* gnu/java/awt/peer/x/GLGraphics.java,
* gnu/java/awt/peer/x/KeyboardMapping.java,
* gnu/java/awt/peer/x/XEventPump.java,
* gnu/java/awt/peer/x/XFontPeer.java,
* gnu/java/awt/peer/x/XFramePeer.java,
* gnu/java/awt/peer/x/XGraphics2D.java,
* gnu/java/awt/peer/x/XGraphicsConfiguration.java,
* gnu/java/awt/peer/x/XGraphicsDevice.java,
* gnu/java/awt/peer/x/XGraphicsEnvironment.java,
* gnu/java/awt/peer/x/XImage.java,
* gnu/java/awt/peer/x/XToolkit.java,
* gnu/java/awt/peer/x/XWindowPeer.java,
* gnu/java/awt/print/JavaPrinterGraphics.java,
* gnu/java/awt/print/JavaPrinterJob.java,
* gnu/java/awt/print/PostScriptGraphics2D.java,
* gnu/java/awt/print/SpooledDocument.java,
* gnu/java/beans/BeanInfoEmbryo.java,
* gnu/java/beans/DefaultExceptionListener.java,
* gnu/java/beans/ExplicitBeanInfo.java,
* gnu/java/beans/IntrospectionIncubator.java,
* gnu/java/beans/decoder/AbstractContext.java,
* gnu/java/beans/decoder/AbstractCreatableObjectContext.java,
* gnu/java/beans/decoder/AbstractElementHandler.java,
* gnu/java/beans/decoder/AbstractObjectContext.java,
* gnu/java/beans/decoder/ArrayContext.java,
* gnu/java/beans/decoder/ArrayHandler.java,
* gnu/java/beans/decoder/AssemblyException.java,
* gnu/java/beans/decoder/BooleanHandler.java,
* gnu/java/beans/decoder/ByteHandler.java,
* gnu/java/beans/decoder/CharHandler.java,
* gnu/java/beans/decoder/ClassHandler.java,
* gnu/java/beans/decoder/ConstructorContext.java,
* gnu/java/beans/decoder/Context.java,
* gnu/java/beans/decoder/DecoderContext.java,
* gnu/java/beans/decoder/DoubleHandler.java,
* gnu/java/beans/decoder/DummyContext.java,
* gnu/java/beans/decoder/DummyHandler.java,
* gnu/java/beans/decoder/ElementHandler.java,
* gnu/java/beans/decoder/FloatHandler.java,
* gnu/java/beans/decoder/GrowableArrayContext.java,
* gnu/java/beans/decoder/IndexContext.java,
* gnu/java/beans/decoder/IntHandler.java,
* gnu/java/beans/decoder/JavaHandler.java,
* gnu/java/beans/decoder/LongHandler.java,
* gnu/java/beans/decoder/MethodContext.java,
* gnu/java/beans/decoder/MethodFinder.java,
* gnu/java/beans/decoder/NullHandler.java,
* gnu/java/beans/decoder/ObjectContext.java,
* gnu/java/beans/decoder/ObjectHandler.java,
* gnu/java/beans/decoder/PersistenceParser.java,
* gnu/java/beans/decoder/PropertyContext.java,
* gnu/java/beans/decoder/ShortHandler.java,
* gnu/java/beans/decoder/SimpleHandler.java,
* gnu/java/beans/decoder/StaticMethodContext.java,
* gnu/java/beans/decoder/StringHandler.java,
* gnu/java/beans/decoder/VoidHandler.java,
* gnu/java/beans/editors/ColorEditor.java,
* gnu/java/beans/editors/FontEditor.java,
* gnu/java/beans/editors/NativeBooleanEditor.java,
* gnu/java/beans/editors/NativeByteEditor.java,
* gnu/java/beans/editors/NativeDoubleEditor.java,
* gnu/java/beans/editors/NativeFloatEditor.java,
* gnu/java/beans/editors/NativeIntEditor.java,
* gnu/java/beans/editors/NativeLongEditor.java,
* gnu/java/beans/editors/NativeShortEditor.java,
* gnu/java/beans/editors/StringEditor.java,
* gnu/java/beans/encoder/ArrayPersistenceDelegate.java,
* gnu/java/beans/encoder/ClassPersistenceDelegate.java,
* gnu/java/beans/encoder/CollectionPersistenceDelegate.java,
* gnu/java/beans/encoder/Context.java,
* gnu/java/beans/encoder/GenericScannerState.java,
* gnu/java/beans/encoder/IgnoringScannerState.java,
* gnu/java/beans/encoder/MapPersistenceDelegate.java,
* gnu/java/beans/encoder/ObjectId.java,
* gnu/java/beans/encoder/PrimitivePersistenceDelegate.java,
* gnu/java/beans/encoder/ReportingScannerState.java,
* gnu/java/beans/encoder/Root.java,
* gnu/java/beans/encoder/ScanEngine.java,
* gnu/java/beans/encoder/ScannerState.java,
* gnu/java/beans/encoder/StAXWriter.java,
* gnu/java/beans/encoder/Writer.java,
* gnu/java/beans/encoder/elements/ArrayInstantiation.java,
* gnu/java/beans/encoder/elements/Array_Get.java,
* gnu/java/beans/encoder/elements/ClassResolution.java,
* gnu/java/beans/encoder/elements/Element.java,
* gnu/java/beans/encoder/elements/List_Get.java,
* gnu/java/beans/encoder/elements/List_Set.java,
* gnu/java/beans/encoder/elements/MethodInvocation.java,
* gnu/java/beans/encoder/elements/NullObject.java,
* gnu/java/beans/encoder/elements/ObjectInstantiation.java,
* gnu/java/beans/encoder/elements/ObjectReference.java,
* gnu/java/beans/encoder/elements/PrimitiveInstantiation.java,
* gnu/java/beans/encoder/elements/StaticFieldAccess.java,
* gnu/java/beans/encoder/elements/StaticMethodInvocation.java,
* gnu/java/beans/encoder/elements/StringReference.java,
* gnu/java/io/ASN1ParsingException.java,
* gnu/java/io/Base64InputStream.java,
* gnu/java/io/ClassLoaderObjectInputStream.java,
* gnu/java/io/NullOutputStream.java,
* gnu/java/io/ObjectIdentityMap2Int.java,
* gnu/java/io/ObjectIdentityWrapper.java,
* gnu/java/io/PlatformHelper.java,
* gnu/java/lang/CPStringBuilder.java,
* gnu/java/lang/CharData.java,
* gnu/java/lang/InstrumentationImpl.java,
* gnu/java/lang/MainThread.java,
* gnu/java/lang/management/BeanImpl.java,
* gnu/java/lang/management/ClassLoadingMXBeanImpl.java,
* gnu/java/lang/management/CompilationMXBeanImpl.java,
* gnu/java/lang/management/GarbageCollectorMXBeanImpl.java,
* gnu/java/lang/management/MemoryMXBeanImpl.java,
* gnu/java/lang/management/MemoryManagerMXBeanImpl.java,
* gnu/java/lang/management/MemoryPoolMXBeanImpl.java,
* gnu/java/lang/management/OperatingSystemMXBeanImpl.java,
* gnu/java/lang/management/RuntimeMXBeanImpl.java,
* gnu/java/lang/management/ThreadMXBeanImpl.java,
* gnu/java/lang/reflect/TypeSignature.java,
* gnu/java/locale/LocaleHelper.java,
* gnu/java/math/Fixed.java,
* gnu/java/math/GMP.java,
* gnu/java/math/MPN.java,
* gnu/java/net/CRLFInputStream.java,
* gnu/java/net/CRLFOutputStream.java,
* gnu/java/net/DefaultContentHandlerFactory.java,
* gnu/java/net/DefaultProxySelector.java,
* gnu/java/net/EmptyX509TrustManager.java,
* gnu/java/net/GetLocalHostAction.java,
* gnu/java/net/HeaderFieldHelper.java,
* gnu/java/net/IndexListParser.java,
* gnu/java/net/LineInputStream.java,
* gnu/java/net/PlainDatagramSocketImpl.java,
* gnu/java/net/PlainSocketImpl.java,
* gnu/java/net/loader/FileResource.java,
* gnu/java/net/loader/FileURLLoader.java,
* gnu/java/net/loader/JarURLLoader.java,
* gnu/java/net/loader/JarURLResource.java,
* gnu/java/net/loader/RemoteResource.java,
* gnu/java/net/loader/RemoteURLLoader.java,
* gnu/java/net/loader/Resource.java,
* gnu/java/net/loader/URLLoader.java,
* gnu/java/net/protocol/file/Connection.java,
* gnu/java/net/protocol/file/Handler.java,
* gnu/java/net/protocol/ftp/ActiveModeDTP.java,
* gnu/java/net/protocol/ftp/BlockInputStream.java,
* gnu/java/net/protocol/ftp/BlockOutputStream.java,
* gnu/java/net/protocol/ftp/CompressedInputStream.java,
* gnu/java/net/protocol/ftp/CompressedOutputStream.java,
* gnu/java/net/protocol/ftp/DTP.java,
* gnu/java/net/protocol/ftp/DTPInputStream.java,
* gnu/java/net/protocol/ftp/DTPOutputStream.java,
* gnu/java/net/protocol/ftp/FTPConnection.java,
* gnu/java/net/protocol/ftp/FTPException.java,
* gnu/java/net/protocol/ftp/FTPResponse.java,
* gnu/java/net/protocol/ftp/FTPURLConnection.java,
* gnu/java/net/protocol/ftp/Handler.java,
* gnu/java/net/protocol/ftp/PassiveModeDTP.java,
* gnu/java/net/protocol/ftp/StreamInputStream.java,
* gnu/java/net/protocol/ftp/StreamOutputStream.java,
* gnu/java/net/protocol/http/Authenticator.java,
* gnu/java/net/protocol/http/ByteArrayRequestBodyWriter.java,
* gnu/java/net/protocol/http/ChunkedInputStream.java,
* gnu/java/net/protocol/http/Cookie.java,
* gnu/java/net/protocol/http/CookieManager.java,
* gnu/java/net/protocol/http/Credentials.java,
* gnu/java/net/protocol/http/HTTPConnection.java,
* gnu/java/net/protocol/http/HTTPDateFormat.java,
* gnu/java/net/protocol/http/HTTPURLConnection.java,
* gnu/java/net/protocol/http/Handler.java,
* gnu/java/net/protocol/http/Headers.java,
* gnu/java/net/protocol/http/Request.java,
* gnu/java/net/protocol/http/RequestBodyWriter.java,
* gnu/java/net/protocol/http/Response.java,
* gnu/java/net/protocol/http/ResponseHeaderHandler.java,
* gnu/java/net/protocol/http/SimpleCookieManager.java,
* gnu/java/net/protocol/https/Handler.java,
* gnu/java/net/protocol/jar/Connection.java,
* gnu/java/net/protocol/jar/Handler.java,
* gnu/java/nio/ChannelInputStream.java,
* gnu/java/nio/ChannelOutputStream.java,
* gnu/java/nio/ChannelReader.java,
* gnu/java/nio/ChannelWriter.java,
* gnu/java/nio/DatagramChannelImpl.java,
* gnu/java/nio/DatagramChannelSelectionKey.java,
* gnu/java/nio/EpollSelectionKeyImpl.java,
* gnu/java/nio/EpollSelectorImpl.java,
* gnu/java/nio/FileChannelImpl.java,
* gnu/java/nio/FileLockImpl.java,
* gnu/java/nio/InputStreamChannel.java,
* gnu/java/nio/KqueueSelectionKeyImpl.java,
* gnu/java/nio/KqueueSelectorImpl.java,
* gnu/java/nio/NIODatagramSocket.java,
* gnu/java/nio/NIOServerSocket.java,
* gnu/java/nio/NIOSocket.java,
* gnu/java/nio/NIOSocketImpl.java,
* gnu/java/nio/OutputStreamChannel.java,
* gnu/java/nio/PipeImpl.java,
* gnu/java/nio/SelectionKeyImpl.java,
* gnu/java/nio/SelectorImpl.java,
* gnu/java/nio/SelectorProviderImpl.java,
* gnu/java/nio/ServerSocketChannelImpl.java,
* gnu/java/nio/ServerSocketChannelSelectionKey.java,
* gnu/java/nio/SocketChannelImpl.java,
* gnu/java/nio/SocketChannelSelectionKey.java,
* gnu/java/nio/SocketChannelSelectionKeyImpl.java,
* gnu/java/nio/VMChannelOwner.java,
* gnu/java/nio/charset/ByteCharset.java,
* gnu/java/nio/charset/ByteDecodeLoopHelper.java,
* gnu/java/nio/charset/ByteEncodeLoopHelper.java,
* gnu/java/nio/charset/Cp424.java,
* gnu/java/nio/charset/Cp437.java,
* gnu/java/nio/charset/Cp737.java,
* gnu/java/nio/charset/Cp775.java,
* gnu/java/nio/charset/Cp850.java,
* gnu/java/nio/charset/Cp852.java,
* gnu/java/nio/charset/Cp855.java,
* gnu/java/nio/charset/Cp857.java,
* gnu/java/nio/charset/Cp860.java,
* gnu/java/nio/charset/Cp861.java,
* gnu/java/nio/charset/Cp862.java,
* gnu/java/nio/charset/Cp863.java,
* gnu/java/nio/charset/Cp864.java,
* gnu/java/nio/charset/Cp865.java,
* gnu/java/nio/charset/Cp866.java,
* gnu/java/nio/charset/Cp869.java,
* gnu/java/nio/charset/Cp874.java,
* gnu/java/nio/charset/EncodingHelper.java,
* gnu/java/nio/charset/ISO_8859_1.java,
* gnu/java/nio/charset/ISO_8859_13.java,
* gnu/java/nio/charset/ISO_8859_15.java,
* gnu/java/nio/charset/ISO_8859_2.java,
* gnu/java/nio/charset/ISO_8859_3.java,
* gnu/java/nio/charset/ISO_8859_4.java,
* gnu/java/nio/charset/ISO_8859_5.java,
* gnu/java/nio/charset/ISO_8859_6.java,
* gnu/java/nio/charset/ISO_8859_7.java,
* gnu/java/nio/charset/ISO_8859_8.java,
* gnu/java/nio/charset/ISO_8859_9.java,
* gnu/java/nio/charset/KOI_8.java,
* gnu/java/nio/charset/MS874.java,
* gnu/java/nio/charset/MacCentralEurope.java,
* gnu/java/nio/charset/MacCroatian.java,
* gnu/java/nio/charset/MacCyrillic.java,
* gnu/java/nio/charset/MacDingbat.java,
* gnu/java/nio/charset/MacGreek.java,
* gnu/java/nio/charset/MacIceland.java,
* gnu/java/nio/charset/MacRoman.java,
* gnu/java/nio/charset/MacRomania.java,
* gnu/java/nio/charset/MacSymbol.java,
* gnu/java/nio/charset/MacThai.java,
* gnu/java/nio/charset/MacTurkish.java,
* gnu/java/
Diffstat (limited to 'java/text/SimpleDateFormat.java')
-rw-r--r-- | java/text/SimpleDateFormat.java | 1086 |
1 files changed, 543 insertions, 543 deletions
diff --git a/java/text/SimpleDateFormat.java b/java/text/SimpleDateFormat.java index b09c7caa2..05fa4cf15 100644 --- a/java/text/SimpleDateFormat.java +++ b/java/text/SimpleDateFormat.java @@ -1,4 +1,4 @@ -/* SimpleDateFormat.java -- A class for parsing/formating simple +/* SimpleDateFormat.java -- A class for parsing/formating simple date constructs Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. @@ -9,7 +9,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath 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 @@ -62,13 +62,13 @@ import java.util.regex.Pattern; /** * SimpleDateFormat provides convenient methods for parsing and formatting - * dates using Gregorian calendars (see java.util.GregorianCalendar). + * dates using Gregorian calendars (see java.util.GregorianCalendar). * This class is not thread-safe; external synchronisation should be applied * if an instance is to be accessed from multiple threads. */ -public class SimpleDateFormat extends DateFormat +public class SimpleDateFormat extends DateFormat { - /** + /** * This class is used by <code>SimpleDateFormat</code> as a * compiled representation of a format string. The field * ID, size, and character used are stored for each sequence @@ -93,7 +93,7 @@ public class SimpleDateFormat extends DateFormat */ private char character; - /** + /** * Constructs a compiled field using the * the given field ID, size and character * values. @@ -238,12 +238,12 @@ public class SimpleDateFormat extends DateFormat // This string is specified in the root of the CLDR. private static final String standardChars = "GyMdkHmsSEDFwWahKzYeugAZvcL"; - /** + /** * Represents the position of the RFC822 timezone pattern character * in the array of localized pattern characters. In the * U.S. locale, this is 'Z'. The value is the offset of the current * time from GMT e.g. -0500 would be five hours prior to GMT. - */ + */ private static final int RFC822_TIMEZONE_FIELD = 23; /** @@ -259,7 +259,7 @@ public class SimpleDateFormat extends DateFormat * @throws ClassNotFoundException if the class of the serialized data * could not be found. * @throws InvalidObjectException if the pattern is invalid. - */ + */ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { @@ -267,7 +267,7 @@ public class SimpleDateFormat extends DateFormat if (serialVersionOnStream < 1) { computeCenturyStart (); - serialVersionOnStream = 1; + serialVersionOnStream = 1; } else // Ensure that defaultCentury gets set. @@ -277,11 +277,11 @@ public class SimpleDateFormat extends DateFormat tokens = new ArrayList<Object>(); try { - compileFormat(pattern); + compileFormat(pattern); } catch (IllegalArgumentException e) { - throw new InvalidObjectException("The stream pattern was invalid."); + throw new InvalidObjectException("The stream pattern was invalid."); } } @@ -294,7 +294,7 @@ public class SimpleDateFormat extends DateFormat * @param pattern the non-localized pattern to compile. * @throws IllegalArgumentException if the pattern is invalid. */ - private void compileFormat(String pattern) + private void compileFormat(String pattern) { // Any alphabetical characters are treated as pattern characters // unless enclosed in single quotes. @@ -306,70 +306,70 @@ public class SimpleDateFormat extends DateFormat for (int i = 0; i < pattern.length(); i++) { - thisChar = pattern.charAt(i); - field = standardChars.indexOf(thisChar); - if (field == -1) - { - current = null; - if ((thisChar >= 'A' && thisChar <= 'Z') - || (thisChar >= 'a' && thisChar <= 'z')) - { - // Not a valid letter - throw new IllegalArgumentException("Invalid letter " - + thisChar + - " encountered at character " - + i + "."); - } - else if (thisChar == '\'') - { - // Quoted text section; skip to next single quote - pos = pattern.indexOf('\'', i + 1); - // First look for '' -- meaning a single quote. - if (pos == i + 1) - tokens.add("'"); - else - { - // Look for the terminating quote. However, if we - // see a '', that represents a literal quote and - // we must iterate. - CPStringBuilder buf = new CPStringBuilder(); - int oldPos = i + 1; - do - { - if (pos == -1) - throw new IllegalArgumentException("Quotes starting at character " - + i + - " not closed."); - buf.append(pattern.substring(oldPos, pos)); - if (pos + 1 >= pattern.length() - || pattern.charAt(pos + 1) != '\'') - break; - buf.append('\''); - oldPos = pos + 2; - pos = pattern.indexOf('\'', pos + 2); - } - while (true); - tokens.add(buf.toString()); - } - i = pos; - } - else - { - // A special character - tokens.add(Character.valueOf(thisChar)); - } - } - else - { - // A valid field - if ((current != null) && (field == current.field)) - current.size++; - else - { - current = new CompiledField(field, 1, thisChar); - tokens.add(current); - } - } + thisChar = pattern.charAt(i); + field = standardChars.indexOf(thisChar); + if (field == -1) + { + current = null; + if ((thisChar >= 'A' && thisChar <= 'Z') + || (thisChar >= 'a' && thisChar <= 'z')) + { + // Not a valid letter + throw new IllegalArgumentException("Invalid letter " + + thisChar + + " encountered at character " + + i + "."); + } + else if (thisChar == '\'') + { + // Quoted text section; skip to next single quote + pos = pattern.indexOf('\'', i + 1); + // First look for '' -- meaning a single quote. + if (pos == i + 1) + tokens.add("'"); + else + { + // Look for the terminating quote. However, if we + // see a '', that represents a literal quote and + // we must iterate. + CPStringBuilder buf = new CPStringBuilder(); + int oldPos = i + 1; + do + { + if (pos == -1) + throw new IllegalArgumentException("Quotes starting at character " + + i + + " not closed."); + buf.append(pattern.substring(oldPos, pos)); + if (pos + 1 >= pattern.length() + || pattern.charAt(pos + 1) != '\'') + break; + buf.append('\''); + oldPos = pos + 2; + pos = pattern.indexOf('\'', pos + 2); + } + while (true); + tokens.add(buf.toString()); + } + i = pos; + } + else + { + // A special character + tokens.add(Character.valueOf(thisChar)); + } + } + else + { + // A valid field + if ((current != null) && (field == current.field)) + current.size++; + else + { + current = new CompiledField(field, 1, thisChar); + tokens.add(current); + } + } } } @@ -380,7 +380,7 @@ public class SimpleDateFormat extends DateFormat * @return a string representation of the <code>SimpleDateFormat</code> * instance. */ - public String toString() + public String toString() { CPStringBuilder output = new CPStringBuilder(getClass().getName()); output.append("[tokens="); @@ -405,10 +405,10 @@ public class SimpleDateFormat extends DateFormat * Constructs a SimpleDateFormat using the default pattern for * the default locale. */ - public SimpleDateFormat() + public SimpleDateFormat() { /* - * There does not appear to be a standard API for determining + * There does not appear to be a standard API for determining * what the default pattern for a locale is, so use package-scope * variables in DateFormatSymbols to encapsulate this. */ @@ -419,14 +419,14 @@ public class SimpleDateFormat extends DateFormat tokens = new ArrayList<Object>(); formatData = new DateFormatSymbols(locale); pattern = (formatData.dateFormats[DEFAULT] + ' ' - + formatData.timeFormats[DEFAULT]); + + formatData.timeFormats[DEFAULT]); compileFormat(pattern); numberFormat = NumberFormat.getInstance(locale); numberFormat.setGroupingUsed (false); numberFormat.setParseIntegerOnly (true); numberFormat.setMaximumFractionDigits (0); } - + /** * Creates a date formatter using the specified non-localized pattern, * with the default DateFormatSymbols for the default locale. @@ -435,7 +435,7 @@ public class SimpleDateFormat extends DateFormat * @throws NullPointerException if the pattern is null. * @throws IllegalArgumentException if the pattern is invalid. */ - public SimpleDateFormat(String pattern) + public SimpleDateFormat(String pattern) { this(pattern, Locale.getDefault()); } @@ -449,7 +449,7 @@ public class SimpleDateFormat extends DateFormat * @throws NullPointerException if the pattern is null. * @throws IllegalArgumentException if the pattern is invalid. */ - public SimpleDateFormat(String pattern, Locale locale) + public SimpleDateFormat(String pattern, Locale locale) { super(); calendar = new GregorianCalendar(locale); @@ -561,28 +561,28 @@ public class SimpleDateFormat extends DateFormat * <code>newChars</code>. */ private String translateLocalizedPattern(String pattern, - String oldChars, String newChars) + String oldChars, String newChars) { int len = pattern.length(); CPStringBuilder buf = new CPStringBuilder(len); boolean quoted = false; for (int i = 0; i < len; i++) { - char ch = pattern.charAt(i); - if (ch == '\'') - quoted = ! quoted; - if (! quoted) - { - int j = oldChars.indexOf(ch); - if (j >= 0) - ch = newChars.charAt(j); - } - buf.append(ch); + char ch = pattern.charAt(i); + if (ch == '\'') + quoted = ! quoted; + if (! quoted) + { + int j = oldChars.indexOf(ch); + if (j >= 0) + ch = newChars.charAt(j); + } + buf.append(ch); } return buf.toString(); } - /** + /** * Returns the start of the century used for two digit years. * * @return A <code>Date</code> representing the start of the century @@ -630,8 +630,8 @@ public class SimpleDateFormat extends DateFormat { if (formatData == null) { - throw new - NullPointerException("The supplied format data was null."); + throw new + NullPointerException("The supplied format data was null."); } this.formatData = formatData; } @@ -703,143 +703,143 @@ public class SimpleDateFormat extends DateFormat Iterator<Object> iter = tokens.iterator(); while (iter.hasNext()) { - Object o = iter.next(); - if (o instanceof CompiledField) - { - CompiledField cf = (CompiledField) o; - int beginIndex = buffer.length(); - - switch (cf.getField()) - { - case ERA_FIELD: - buffer.append (formatData.eras[calendar.get (Calendar.ERA)], DateFormat.Field.ERA); - break; - case YEAR_FIELD: - // If we have two digits, then we truncate. Otherwise, we - // use the size of the pattern, and zero pad. - buffer.setDefaultAttribute (DateFormat.Field.YEAR); - if (cf.getSize() == 2) - { - temp = "00"+String.valueOf (calendar.get (Calendar.YEAR)); - buffer.append (temp.substring (temp.length() - 2)); - } - else - withLeadingZeros (calendar.get (Calendar.YEAR), cf.getSize(), buffer); - break; - case MONTH_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.MONTH); - if (cf.getSize() < 3) - withLeadingZeros (calendar.get (Calendar.MONTH) + 1, cf.getSize(), buffer); - else if (cf.getSize() < 4) - buffer.append (formatData.shortMonths[calendar.get (Calendar.MONTH)]); - else - buffer.append (formatData.months[calendar.get (Calendar.MONTH)]); - break; - case DATE_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_MONTH); - withLeadingZeros (calendar.get (Calendar.DATE), cf.getSize(), buffer); - break; - case HOUR_OF_DAY1_FIELD: // 1-24 - buffer.setDefaultAttribute(DateFormat.Field.HOUR_OF_DAY1); - withLeadingZeros ( ((calendar.get (Calendar.HOUR_OF_DAY) + 23) % 24) + 1, - cf.getSize(), buffer); - break; - case HOUR_OF_DAY0_FIELD: // 0-23 - buffer.setDefaultAttribute (DateFormat.Field.HOUR_OF_DAY0); - withLeadingZeros (calendar.get (Calendar.HOUR_OF_DAY), cf.getSize(), buffer); - break; - case MINUTE_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.MINUTE); - withLeadingZeros (calendar.get (Calendar.MINUTE), - cf.getSize(), buffer); - break; - case SECOND_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.SECOND); - withLeadingZeros(calendar.get (Calendar.SECOND), - cf.getSize(), buffer); - break; - case MILLISECOND_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.MILLISECOND); - withLeadingZeros (calendar.get (Calendar.MILLISECOND), cf.getSize(), buffer); - break; - case DAY_OF_WEEK_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_WEEK); - if (cf.getSize() < 4) - buffer.append (formatData.shortWeekdays[calendar.get (Calendar.DAY_OF_WEEK)]); - else - buffer.append (formatData.weekdays[calendar.get (Calendar.DAY_OF_WEEK)]); - break; - case DAY_OF_YEAR_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_YEAR); - withLeadingZeros (calendar.get (Calendar.DAY_OF_YEAR), cf.getSize(), buffer); - break; - case DAY_OF_WEEK_IN_MONTH_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_WEEK_IN_MONTH); - withLeadingZeros (calendar.get (Calendar.DAY_OF_WEEK_IN_MONTH), - cf.getSize(), buffer); - break; - case WEEK_OF_YEAR_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.WEEK_OF_YEAR); - withLeadingZeros (calendar.get (Calendar.WEEK_OF_YEAR), - cf.getSize(), buffer); - break; - case WEEK_OF_MONTH_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.WEEK_OF_MONTH); - withLeadingZeros (calendar.get (Calendar.WEEK_OF_MONTH), - cf.getSize(), buffer); - break; - case AM_PM_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.AM_PM); - buffer.append (formatData.ampms[calendar.get (Calendar.AM_PM)]); - break; - case HOUR1_FIELD: // 1-12 - buffer.setDefaultAttribute (DateFormat.Field.HOUR1); - withLeadingZeros (((calendar.get (Calendar.HOUR) + 11) % 12) + 1, - cf.getSize(), buffer); - break; - case HOUR0_FIELD: // 0-11 - buffer.setDefaultAttribute (DateFormat.Field.HOUR0); - withLeadingZeros (calendar.get (Calendar.HOUR), cf.getSize(), buffer); - break; - case TIMEZONE_FIELD: - buffer.setDefaultAttribute (DateFormat.Field.TIME_ZONE); - TimeZone zone = calendar.getTimeZone(); - boolean isDST = calendar.get (Calendar.DST_OFFSET) != 0; - // FIXME: XXX: This should be a localized time zone. - String zoneID = zone.getDisplayName - (isDST, cf.getSize() > 3 ? TimeZone.LONG : TimeZone.SHORT); - buffer.append (zoneID); - break; - case RFC822_TIMEZONE_FIELD: - buffer.setDefaultAttribute(DateFormat.Field.TIME_ZONE); - int pureMinutes = (calendar.get(Calendar.ZONE_OFFSET) + - calendar.get(Calendar.DST_OFFSET)) / (1000 * 60); - String sign = (pureMinutes < 0) ? "-" : "+"; + Object o = iter.next(); + if (o instanceof CompiledField) + { + CompiledField cf = (CompiledField) o; + int beginIndex = buffer.length(); + + switch (cf.getField()) + { + case ERA_FIELD: + buffer.append (formatData.eras[calendar.get (Calendar.ERA)], DateFormat.Field.ERA); + break; + case YEAR_FIELD: + // If we have two digits, then we truncate. Otherwise, we + // use the size of the pattern, and zero pad. + buffer.setDefaultAttribute (DateFormat.Field.YEAR); + if (cf.getSize() == 2) + { + temp = "00"+String.valueOf (calendar.get (Calendar.YEAR)); + buffer.append (temp.substring (temp.length() - 2)); + } + else + withLeadingZeros (calendar.get (Calendar.YEAR), cf.getSize(), buffer); + break; + case MONTH_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.MONTH); + if (cf.getSize() < 3) + withLeadingZeros (calendar.get (Calendar.MONTH) + 1, cf.getSize(), buffer); + else if (cf.getSize() < 4) + buffer.append (formatData.shortMonths[calendar.get (Calendar.MONTH)]); + else + buffer.append (formatData.months[calendar.get (Calendar.MONTH)]); + break; + case DATE_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_MONTH); + withLeadingZeros (calendar.get (Calendar.DATE), cf.getSize(), buffer); + break; + case HOUR_OF_DAY1_FIELD: // 1-24 + buffer.setDefaultAttribute(DateFormat.Field.HOUR_OF_DAY1); + withLeadingZeros ( ((calendar.get (Calendar.HOUR_OF_DAY) + 23) % 24) + 1, + cf.getSize(), buffer); + break; + case HOUR_OF_DAY0_FIELD: // 0-23 + buffer.setDefaultAttribute (DateFormat.Field.HOUR_OF_DAY0); + withLeadingZeros (calendar.get (Calendar.HOUR_OF_DAY), cf.getSize(), buffer); + break; + case MINUTE_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.MINUTE); + withLeadingZeros (calendar.get (Calendar.MINUTE), + cf.getSize(), buffer); + break; + case SECOND_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.SECOND); + withLeadingZeros(calendar.get (Calendar.SECOND), + cf.getSize(), buffer); + break; + case MILLISECOND_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.MILLISECOND); + withLeadingZeros (calendar.get (Calendar.MILLISECOND), cf.getSize(), buffer); + break; + case DAY_OF_WEEK_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_WEEK); + if (cf.getSize() < 4) + buffer.append (formatData.shortWeekdays[calendar.get (Calendar.DAY_OF_WEEK)]); + else + buffer.append (formatData.weekdays[calendar.get (Calendar.DAY_OF_WEEK)]); + break; + case DAY_OF_YEAR_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_YEAR); + withLeadingZeros (calendar.get (Calendar.DAY_OF_YEAR), cf.getSize(), buffer); + break; + case DAY_OF_WEEK_IN_MONTH_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.DAY_OF_WEEK_IN_MONTH); + withLeadingZeros (calendar.get (Calendar.DAY_OF_WEEK_IN_MONTH), + cf.getSize(), buffer); + break; + case WEEK_OF_YEAR_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.WEEK_OF_YEAR); + withLeadingZeros (calendar.get (Calendar.WEEK_OF_YEAR), + cf.getSize(), buffer); + break; + case WEEK_OF_MONTH_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.WEEK_OF_MONTH); + withLeadingZeros (calendar.get (Calendar.WEEK_OF_MONTH), + cf.getSize(), buffer); + break; + case AM_PM_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.AM_PM); + buffer.append (formatData.ampms[calendar.get (Calendar.AM_PM)]); + break; + case HOUR1_FIELD: // 1-12 + buffer.setDefaultAttribute (DateFormat.Field.HOUR1); + withLeadingZeros (((calendar.get (Calendar.HOUR) + 11) % 12) + 1, + cf.getSize(), buffer); + break; + case HOUR0_FIELD: // 0-11 + buffer.setDefaultAttribute (DateFormat.Field.HOUR0); + withLeadingZeros (calendar.get (Calendar.HOUR), cf.getSize(), buffer); + break; + case TIMEZONE_FIELD: + buffer.setDefaultAttribute (DateFormat.Field.TIME_ZONE); + TimeZone zone = calendar.getTimeZone(); + boolean isDST = calendar.get (Calendar.DST_OFFSET) != 0; + // FIXME: XXX: This should be a localized time zone. + String zoneID = zone.getDisplayName + (isDST, cf.getSize() > 3 ? TimeZone.LONG : TimeZone.SHORT); + buffer.append (zoneID); + break; + case RFC822_TIMEZONE_FIELD: + buffer.setDefaultAttribute(DateFormat.Field.TIME_ZONE); + int pureMinutes = (calendar.get(Calendar.ZONE_OFFSET) + + calendar.get(Calendar.DST_OFFSET)) / (1000 * 60); + String sign = (pureMinutes < 0) ? "-" : "+"; pureMinutes = Math.abs(pureMinutes); - int hours = pureMinutes / 60; - int minutes = pureMinutes % 60; - buffer.append(sign); - withLeadingZeros(hours, 2, buffer); - withLeadingZeros(minutes, 2, buffer); - break; - default: - throw new IllegalArgumentException ("Illegal pattern character " + - cf.getCharacter()); - } - if (pos != null && (buffer.getDefaultAttribute() == pos.getFieldAttribute() - || cf.getField() == pos.getField())) - { - pos.setBeginIndex(beginIndex); - pos.setEndIndex(buffer.length()); - } - } + int hours = pureMinutes / 60; + int minutes = pureMinutes % 60; + buffer.append(sign); + withLeadingZeros(hours, 2, buffer); + withLeadingZeros(minutes, 2, buffer); + break; + default: + throw new IllegalArgumentException ("Illegal pattern character " + + cf.getCharacter()); + } + if (pos != null && (buffer.getDefaultAttribute() == pos.getFieldAttribute() + || cf.getField() == pos.getField())) + { + pos.setBeginIndex(beginIndex); + pos.setEndIndex(buffer.length()); + } + } else - { - buffer.append(o.toString(), null); - } + { + buffer.append(o.toString(), null); + } } } - + public StringBuffer format(Date date, StringBuffer buffer, FieldPosition pos) { formatWithAttribute(date, new StringFormatBuffer (buffer), pos); @@ -857,15 +857,15 @@ public class SimpleDateFormat extends DateFormat AttributedFormatBuffer buf = new AttributedFormatBuffer(); formatWithAttribute((Date)date, buf, - null); + null); buf.sync(); - + return new FormatCharacterIterator(buf.getBuffer().toString(), - buf.getRanges(), - buf.getAttributes()); + buf.getRanges(), + buf.getAttributes()); } - private void withLeadingZeros(int value, int length, FormatBuffer buffer) + private void withLeadingZeros(int value, int length, FormatBuffer buffer) { String valStr = String.valueOf(value); for (length -= valStr.length(); length > 0; length--) @@ -886,7 +886,7 @@ public class SimpleDateFormat extends DateFormat /** * This method parses the specified string into a date. - * + * * @param dateStr The date string to parse. * @param pos The input and output parse position * @@ -904,27 +904,27 @@ public class SimpleDateFormat extends DateFormat boolean is2DigitYear = false; try { - for (; fmt_index < fmt_max; ++fmt_index) - { - char ch = pattern.charAt(fmt_index); - if (ch == '\'') - { - if (fmt_index < fmt_max - 1 - && pattern.charAt(fmt_index + 1) == '\'') - { - if (! expect (dateStr, pos, ch)) - return null; - ++fmt_index; - } - else - quote_start = quote_start < 0 ? fmt_index : -1; - continue; - } - - if (quote_start != -1 - || ((ch < 'a' || ch > 'z') - && (ch < 'A' || ch > 'Z'))) - { + for (; fmt_index < fmt_max; ++fmt_index) + { + char ch = pattern.charAt(fmt_index); + if (ch == '\'') + { + if (fmt_index < fmt_max - 1 + && pattern.charAt(fmt_index + 1) == '\'') + { + if (! expect (dateStr, pos, ch)) + return null; + ++fmt_index; + } + else + quote_start = quote_start < 0 ? fmt_index : -1; + continue; + } + + if (quote_start != -1 + || ((ch < 'a' || ch > 'z') + && (ch < 'A' || ch > 'Z'))) + { if (quote_start == -1 && ch == ' ') { // A single unquoted space in the pattern may match @@ -944,275 +944,275 @@ public class SimpleDateFormat extends DateFormat } } else if (! expect (dateStr, pos, ch)) - return null; - continue; - } - - // We've arrived at a potential pattern character in the - // pattern. - int fmt_count = 1; - while (++fmt_index < fmt_max && pattern.charAt(fmt_index) == ch) - { - ++fmt_count; - } - - // We might need to limit the number of digits to parse in - // some cases. We look to the next pattern character to - // decide. - boolean limit_digits = false; - if (fmt_index < fmt_max - && standardChars.indexOf(pattern.charAt(fmt_index)) >= 0) - limit_digits = true; - --fmt_index; - - // We can handle most fields automatically: most either are - // numeric or are looked up in a string vector. In some cases - // we need an offset. When numeric, `offset' is added to the - // resulting value. When doing a string lookup, offset is the - // initial index into the string array. - int calendar_field; - boolean is_numeric = true; - int offset = 0; - boolean maybe2DigitYear = false; - boolean oneBasedHour = false; - boolean oneBasedHourOfDay = false; - Integer simpleOffset; - String[] set1 = null; - String[] set2 = null; - switch (ch) - { - case 'd': - calendar_field = Calendar.DATE; - break; - case 'D': - calendar_field = Calendar.DAY_OF_YEAR; - break; - case 'F': - calendar_field = Calendar.DAY_OF_WEEK_IN_MONTH; - break; - case 'E': - is_numeric = false; - offset = 1; - calendar_field = Calendar.DAY_OF_WEEK; - set1 = formatData.getWeekdays(); - set2 = formatData.getShortWeekdays(); - break; - case 'w': - calendar_field = Calendar.WEEK_OF_YEAR; - break; - case 'W': - calendar_field = Calendar.WEEK_OF_MONTH; - break; - case 'M': - calendar_field = Calendar.MONTH; - if (fmt_count <= 2) - offset = -1; - else - { - is_numeric = false; - set1 = formatData.getMonths(); - set2 = formatData.getShortMonths(); - } - break; - case 'y': - calendar_field = Calendar.YEAR; - if (fmt_count <= 2) - maybe2DigitYear = true; - break; - case 'K': - calendar_field = Calendar.HOUR; - break; - case 'h': - calendar_field = Calendar.HOUR; - oneBasedHour = true; - break; - case 'H': - calendar_field = Calendar.HOUR_OF_DAY; - break; - case 'k': - calendar_field = Calendar.HOUR_OF_DAY; - oneBasedHourOfDay = true; - break; - case 'm': - calendar_field = Calendar.MINUTE; - break; - case 's': - calendar_field = Calendar.SECOND; - break; - case 'S': - calendar_field = Calendar.MILLISECOND; - break; - case 'a': - is_numeric = false; - calendar_field = Calendar.AM_PM; - set1 = formatData.getAmPmStrings(); - break; - case 'z': - case 'Z': - // We need a special case for the timezone, because it - // uses a different data structure than the other cases. - is_numeric = false; - calendar_field = Calendar.ZONE_OFFSET; - String[][] zoneStrings = formatData.getZoneStrings(); - int zoneCount = zoneStrings.length; - int index = pos.getIndex(); - boolean found_zone = false; - simpleOffset = computeOffset(dateStr.substring(index), pos); - if (simpleOffset != null) - { - found_zone = true; - saw_timezone = true; - calendar.set(Calendar.DST_OFFSET, 0); - offset = simpleOffset.intValue(); - } - else - { - for (int j = 0; j < zoneCount; j++) - { - String[] strings = zoneStrings[j]; - int k; - for (k = 0; k < strings.length; ++k) - { - if (dateStr.startsWith(strings[k], index)) - break; - } - if (k != strings.length) - { - found_zone = true; - saw_timezone = true; - TimeZone tz = TimeZone.getTimeZone (strings[0]); - // Check if it's a DST zone or ordinary - if(k == 3 || k == 4) - calendar.set (Calendar.DST_OFFSET, tz.getDSTSavings()); - else - calendar.set (Calendar.DST_OFFSET, 0); + return null; + continue; + } + + // We've arrived at a potential pattern character in the + // pattern. + int fmt_count = 1; + while (++fmt_index < fmt_max && pattern.charAt(fmt_index) == ch) + { + ++fmt_count; + } + + // We might need to limit the number of digits to parse in + // some cases. We look to the next pattern character to + // decide. + boolean limit_digits = false; + if (fmt_index < fmt_max + && standardChars.indexOf(pattern.charAt(fmt_index)) >= 0) + limit_digits = true; + --fmt_index; + + // We can handle most fields automatically: most either are + // numeric or are looked up in a string vector. In some cases + // we need an offset. When numeric, `offset' is added to the + // resulting value. When doing a string lookup, offset is the + // initial index into the string array. + int calendar_field; + boolean is_numeric = true; + int offset = 0; + boolean maybe2DigitYear = false; + boolean oneBasedHour = false; + boolean oneBasedHourOfDay = false; + Integer simpleOffset; + String[] set1 = null; + String[] set2 = null; + switch (ch) + { + case 'd': + calendar_field = Calendar.DATE; + break; + case 'D': + calendar_field = Calendar.DAY_OF_YEAR; + break; + case 'F': + calendar_field = Calendar.DAY_OF_WEEK_IN_MONTH; + break; + case 'E': + is_numeric = false; + offset = 1; + calendar_field = Calendar.DAY_OF_WEEK; + set1 = formatData.getWeekdays(); + set2 = formatData.getShortWeekdays(); + break; + case 'w': + calendar_field = Calendar.WEEK_OF_YEAR; + break; + case 'W': + calendar_field = Calendar.WEEK_OF_MONTH; + break; + case 'M': + calendar_field = Calendar.MONTH; + if (fmt_count <= 2) + offset = -1; + else + { + is_numeric = false; + set1 = formatData.getMonths(); + set2 = formatData.getShortMonths(); + } + break; + case 'y': + calendar_field = Calendar.YEAR; + if (fmt_count <= 2) + maybe2DigitYear = true; + break; + case 'K': + calendar_field = Calendar.HOUR; + break; + case 'h': + calendar_field = Calendar.HOUR; + oneBasedHour = true; + break; + case 'H': + calendar_field = Calendar.HOUR_OF_DAY; + break; + case 'k': + calendar_field = Calendar.HOUR_OF_DAY; + oneBasedHourOfDay = true; + break; + case 'm': + calendar_field = Calendar.MINUTE; + break; + case 's': + calendar_field = Calendar.SECOND; + break; + case 'S': + calendar_field = Calendar.MILLISECOND; + break; + case 'a': + is_numeric = false; + calendar_field = Calendar.AM_PM; + set1 = formatData.getAmPmStrings(); + break; + case 'z': + case 'Z': + // We need a special case for the timezone, because it + // uses a different data structure than the other cases. + is_numeric = false; + calendar_field = Calendar.ZONE_OFFSET; + String[][] zoneStrings = formatData.getZoneStrings(); + int zoneCount = zoneStrings.length; + int index = pos.getIndex(); + boolean found_zone = false; + simpleOffset = computeOffset(dateStr.substring(index), pos); + if (simpleOffset != null) + { + found_zone = true; + saw_timezone = true; + calendar.set(Calendar.DST_OFFSET, 0); + offset = simpleOffset.intValue(); + } + else + { + for (int j = 0; j < zoneCount; j++) + { + String[] strings = zoneStrings[j]; + int k; + for (k = 0; k < strings.length; ++k) + { + if (dateStr.startsWith(strings[k], index)) + break; + } + if (k != strings.length) + { + found_zone = true; + saw_timezone = true; + TimeZone tz = TimeZone.getTimeZone (strings[0]); + // Check if it's a DST zone or ordinary + if(k == 3 || k == 4) + calendar.set (Calendar.DST_OFFSET, tz.getDSTSavings()); + else + calendar.set (Calendar.DST_OFFSET, 0); offset = tz.getRawOffset (); - pos.setIndex(index + strings[k].length()); - break; - } - } - } - if (! found_zone) - { - pos.setErrorIndex(pos.getIndex()); - return null; - } - break; - default: - pos.setErrorIndex(pos.getIndex()); - return null; - } - - // Compute the value we should assign to the field. - int value; - int index = -1; - if (is_numeric) - { - numberFormat.setMinimumIntegerDigits(fmt_count); - if (maybe2DigitYear) - index = pos.getIndex(); - Number n = null; - if (limit_digits) - { - // numberFormat.setMaximumIntegerDigits(fmt_count) may - // not work as expected. So we explicitly use substring - // of dateStr. - int origPos = pos.getIndex(); - pos.setIndex(0); - n = numberFormat.parse(dateStr.substring(origPos, origPos + fmt_count), pos); - pos.setIndex(origPos + pos.getIndex()); - } - else - n = numberFormat.parse(dateStr, pos); - if (pos == null || ! (n instanceof Long)) - return null; - value = n.intValue() + offset; - } - else if (set1 != null) - { - index = pos.getIndex(); - int i; - boolean found = false; - for (i = offset; i < set1.length; ++i) - { - if (set1[i] != null) - if (dateStr.toUpperCase().startsWith(set1[i].toUpperCase(), - index)) - { - found = true; - pos.setIndex(index + set1[i].length()); - break; - } - } - if (!found && set2 != null) - { - for (i = offset; i < set2.length; ++i) - { - if (set2[i] != null) - if (dateStr.toUpperCase().startsWith(set2[i].toUpperCase(), - index)) - { - found = true; - pos.setIndex(index + set2[i].length()); - break; - } - } - } - if (!found) - { - pos.setErrorIndex(index); - return null; - } - value = i; - } - else - value = offset; - - if (maybe2DigitYear) - { - // Parse into default century if the numeric year string has - // exactly 2 digits. - int digit_count = pos.getIndex() - index; - if (digit_count == 2) - { - is2DigitYear = true; - value += defaultCentury; - } - } - - // Calendar uses 0-based hours. - // I.e. 00:00 AM is midnight, not 12 AM or 24:00 - if (oneBasedHour && value == 12) - value = 0; - - if (oneBasedHourOfDay && value == 24) - value = 0; - - // Assign the value and move on. - calendar.set(calendar_field, value); - } - - if (is2DigitYear) - { - // Apply the 80-20 heuristic to dermine the full year based on - // defaultCenturyStart. - int year = calendar.get(Calendar.YEAR); - if (calendar.getTime().compareTo(defaultCenturyStart) < 0) - calendar.set(Calendar.YEAR, year + 100); - } - if (! saw_timezone) - { - // Use the real rules to determine whether or not this - // particular time is in daylight savings. - calendar.clear (Calendar.DST_OFFSET); - calendar.clear (Calendar.ZONE_OFFSET); - } + pos.setIndex(index + strings[k].length()); + break; + } + } + } + if (! found_zone) + { + pos.setErrorIndex(pos.getIndex()); + return null; + } + break; + default: + pos.setErrorIndex(pos.getIndex()); + return null; + } + + // Compute the value we should assign to the field. + int value; + int index = -1; + if (is_numeric) + { + numberFormat.setMinimumIntegerDigits(fmt_count); + if (maybe2DigitYear) + index = pos.getIndex(); + Number n = null; + if (limit_digits) + { + // numberFormat.setMaximumIntegerDigits(fmt_count) may + // not work as expected. So we explicitly use substring + // of dateStr. + int origPos = pos.getIndex(); + pos.setIndex(0); + n = numberFormat.parse(dateStr.substring(origPos, origPos + fmt_count), pos); + pos.setIndex(origPos + pos.getIndex()); + } + else + n = numberFormat.parse(dateStr, pos); + if (pos == null || ! (n instanceof Long)) + return null; + value = n.intValue() + offset; + } + else if (set1 != null) + { + index = pos.getIndex(); + int i; + boolean found = false; + for (i = offset; i < set1.length; ++i) + { + if (set1[i] != null) + if (dateStr.toUpperCase().startsWith(set1[i].toUpperCase(), + index)) + { + found = true; + pos.setIndex(index + set1[i].length()); + break; + } + } + if (!found && set2 != null) + { + for (i = offset; i < set2.length; ++i) + { + if (set2[i] != null) + if (dateStr.toUpperCase().startsWith(set2[i].toUpperCase(), + index)) + { + found = true; + pos.setIndex(index + set2[i].length()); + break; + } + } + } + if (!found) + { + pos.setErrorIndex(index); + return null; + } + value = i; + } + else + value = offset; + + if (maybe2DigitYear) + { + // Parse into default century if the numeric year string has + // exactly 2 digits. + int digit_count = pos.getIndex() - index; + if (digit_count == 2) + { + is2DigitYear = true; + value += defaultCentury; + } + } + + // Calendar uses 0-based hours. + // I.e. 00:00 AM is midnight, not 12 AM or 24:00 + if (oneBasedHour && value == 12) + value = 0; + + if (oneBasedHourOfDay && value == 24) + value = 0; + + // Assign the value and move on. + calendar.set(calendar_field, value); + } + + if (is2DigitYear) + { + // Apply the 80-20 heuristic to dermine the full year based on + // defaultCenturyStart. + int year = calendar.get(Calendar.YEAR); + if (calendar.getTime().compareTo(defaultCenturyStart) < 0) + calendar.set(Calendar.YEAR, year + 100); + } + if (! saw_timezone) + { + // Use the real rules to determine whether or not this + // particular time is in daylight savings. + calendar.clear (Calendar.DST_OFFSET); + calendar.clear (Calendar.ZONE_OFFSET); + } return calendar.getTime(); } catch (IllegalArgumentException x) { pos.setErrorIndex(pos.getIndex()); - return null; + return null; } } @@ -1244,7 +1244,7 @@ public class SimpleDateFormat extends DateFormat * order to allow such failure to be represented. * </p> * - * @param zoneString a string in the form + * @param zoneString a string in the form * (GMT)? sign hours : minutes * where sign = '+' or '-', hours * is a one or two digits representing @@ -1256,7 +1256,7 @@ public class SimpleDateFormat extends DateFormat */ private Integer computeOffset(String zoneString, ParsePosition pos) { - Pattern pattern = + Pattern pattern = Pattern.compile("(GMT)?([+-])([012])?([0-9]):?([0-9]{2})"); Matcher matcher = pattern.matcher(zoneString); @@ -1264,35 +1264,35 @@ public class SimpleDateFormat extends DateFormat boolean hasAll = matcher.lookingAt(); try { - // Do we have at least the sign, hour and minute? - matcher.group(2); - matcher.group(4); - matcher.group(5); + // Do we have at least the sign, hour and minute? + matcher.group(2); + matcher.group(4); + matcher.group(5); } catch (IllegalStateException ise) { - hasAll = false; + hasAll = false; } if (hasAll) { - int sign = matcher.group(2).equals("+") ? 1 : -1; - int hour = Integer.parseInt(matcher.group(4)); - if (!matcher.group(3).equals("")) - hour += (Integer.parseInt(matcher.group(3)) * 10); - int minutes = Integer.parseInt(matcher.group(5)); - - if (hour > 23) - return null; - int offset = sign * ((hour * 60) + minutes) * 60000; - - // advance the index - pos.setIndex(pos.getIndex() + matcher.end()); - return Integer.valueOf(offset); + int sign = matcher.group(2).equals("+") ? 1 : -1; + int hour = Integer.parseInt(matcher.group(4)); + if (!matcher.group(3).equals("")) + hour += (Integer.parseInt(matcher.group(3)) * 10); + int minutes = Integer.parseInt(matcher.group(5)); + + if (hour > 23) + return null; + int offset = sign * ((hour * 60) + minutes) * 60000; + + // advance the index + pos.setIndex(pos.getIndex() + matcher.end()); + return Integer.valueOf(offset); } else if (zoneString.startsWith("GMT")) { - pos.setIndex(pos.getIndex() + 3); - return Integer.valueOf(0); + pos.setIndex(pos.getIndex() + 3); + return Integer.valueOf(0); } return null; } |