1 /*
2 * Copyright 2001-2009 Stephen Colebourne
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.joda.time.convert;
17
18 import org.joda.time.Chronology;
19 import org.joda.time.DateTimeUtils;
20 import org.joda.time.Period;
21 import org.joda.time.ReadWritableInterval;
22 import org.joda.time.ReadWritablePeriod;
23
24 /**
25 * NullConverter converts null to an instant, partial, duration, period
26 * or interval. Null means now for instant/partial, zero for duration/period
27 * and from now to now for interval.
28 *
29 * @author Stephen Colebourne
30 * @author Brian S O'Neill
31 * @since 1.0
32 */
33 class NullConverter extends AbstractConverter
34 implements InstantConverter, PartialConverter, DurationConverter, PeriodConverter, IntervalConverter {
35
36 /**
37 * Singleton instance.
38 */
39 static final NullConverter INSTANCE = new NullConverter();
40
41 /**
42 * Restricted constructor.
43 */
44 protected NullConverter() {
45 super();
46 }
47
48 //-----------------------------------------------------------------------
49 /**
50 * Gets the millisecond duration, which is zero.
51 *
52 * @param object the object to convert, which is null
53 * @return the millisecond duration
54 */
55 public long getDurationMillis(Object object) {
56 return 0L;
57 }
58
59 //-----------------------------------------------------------------------
60 /**
61 * Sets the given ReadWritableDuration to zero milliseconds.
62 *
63 * @param duration duration to get modified
64 * @param object the object to convert, which is null
65 * @param chrono the chronology to use
66 * @throws NullPointerException if the duration is null
67 */
68 public void setInto(ReadWritablePeriod duration, Object object, Chronology chrono) {
69 duration.setPeriod((Period) null);
70 }
71
72 //-----------------------------------------------------------------------
73 /**
74 * Extracts interval endpoint values from an object of this converter's
75 * type, and sets them into the given ReadWritableInterval.
76 *
77 * @param writableInterval interval to get modified, not null
78 * @param object the object to convert, which is null
79 * @param chrono the chronology to use, may be null
80 * @throws NullPointerException if the interval is null
81 */
82 public void setInto(ReadWritableInterval writableInterval, Object object, Chronology chrono) {
83 writableInterval.setChronology(chrono);
84 long now = DateTimeUtils.currentTimeMillis();
85 writableInterval.setInterval(now, now);
86 }
87
88 //-----------------------------------------------------------------------
89 /**
90 * Returns null.
91 *
92 * @return null
93 */
94 public Class<?> getSupportedType() {
95 return null;
96 }
97
98 }