You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by pl...@apache.org on 2016/09/06 17:18:30 UTC
[34/50] [abbrv] incubator-tamaya-sandbox git commit: TAMAYA-91
Implemented converter for periods.
TAMAYA-91 Implemented converter for periods.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/ea500630
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/ea500630
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/ea500630
Branch: refs/heads/master
Commit: ea5006302eb1080b568591bd37dd70a9bd56d9ed
Parents: c005f28
Author: Oliver B. Fischer <pl...@apache.org>
Authored: Thu Mar 10 22:11:31 2016 +0100
Committer: Oliver B. Fischer <pl...@apache.org>
Committed: Thu Mar 10 22:11:44 2016 +0100
----------------------------------------------------------------------
.../apache/tamaya/jodatime/PeriodConverter.java | 15 +++---
.../org.apache.tamaya.spi.PropertyConverter | 3 +-
.../tamaya/jodatime/PeriodConverterIT.java | 51 ++++++++++++++++++++
.../tamaya/jodatime/PeriodConverterTest.java | 40 ++++++++++++---
4 files changed, 94 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/ea500630/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
index 6aca863..a350d58 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
@@ -37,11 +37,9 @@ import java.util.regex.Pattern;
* period:</p>
*
* <ol>
- * <li>Alternatice format ({@code Pyyyy-mm-ddThh:mm:ss})</li>
+ * <li>Alternative format ({@code Pyyyy-mm-ddThh:mm:ss})</li>
* <li>ISO format ({@code PyYmMwWdDThHmMsS})</li>
* </ol>
- *
- *
*/
public class PeriodConverter implements PropertyConverter<org.joda.time.Period> {
@@ -60,11 +58,11 @@ public class PeriodConverter implements PropertyConverter<org.joda.time.Period>
@Override
public Period convert(String value, ConversionContext context) {
- if (true == true) throw new RuntimeException("Method must catch up with the current API!");
-
String trimmed = Objects.requireNonNull(value).trim();
- MutablePeriod result = null;
+ addSupportedFormats(context);
+
+ MutablePeriod result = null;
PeriodParser format = null;
if (isISOFormat(trimmed)) {
@@ -85,6 +83,11 @@ public class PeriodConverter implements PropertyConverter<org.joda.time.Period>
return result != null ? result.toPeriod() : null;
}
+ private void addSupportedFormats(ConversionContext context) {
+ context.addSupportedFormats(PeriodConverter.class, "PyYmMwWdDThHmMsS");
+ context.addSupportedFormats(PeriodConverter.class, "Pyyyy-mm-ddThh:mm:ss");
+ }
+
private boolean isISOFormat(String value) {
return ISO_PATTERN.matcher(value).matches();
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/ea500630/jodatime/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git a/jodatime/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter b/jodatime/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
index e182a4c..f312e9d 100644
--- a/jodatime/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
+++ b/jodatime/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
@@ -17,4 +17,5 @@
# under the License.
#
org.apache.tamaya.jodatime.DateTimeConverter
-org.apache.tamaya.jodatime.DateTimeZoneConverter
\ No newline at end of file
+org.apache.tamaya.jodatime.DateTimeZoneConverter
+org.apache.tamaya.jodatime.PeriodConverter
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/ea500630/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterIT.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterIT.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterIT.java
new file mode 100644
index 0000000..f110754
--- /dev/null
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterIT.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.jodatime;
+
+
+import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ServiceContextManager;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.notNullValue;
+
+public class PeriodConverterIT {
+ @Test
+ public void periodConverterCanBeFoundAsServiceProvider() {
+ List<PropertyConverter> formats = ServiceContextManager.getServiceContext()
+ .getServices(PropertyConverter.class);
+
+ PropertyConverter<?> converter = null;
+
+ for (PropertyConverter format : formats) {
+ if (format instanceof PeriodConverter) {
+ converter = format;
+ break;
+ }
+ }
+
+ assertThat("Converter not found via service context.", converter, notNullValue());
+ assertThat(converter, instanceOf(PeriodConverter.class));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/ea500630/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
index 23689cd..0affb2c 100644
--- a/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
@@ -18,7 +18,9 @@
*/
package org.apache.tamaya.jodatime;
+import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.spi.ConversionContext;
+import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.ISOPeriodFormat;
import org.joda.time.format.PeriodFormatter;
@@ -28,7 +30,10 @@ import org.mockito.Mockito;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.hasSize;
public class PeriodConverterTest {
/*
@@ -40,7 +45,6 @@ public class PeriodConverterTest {
private static PeriodFormatter FORMATTER = ISOPeriodFormat.standard();
- @Ignore
@Test
public void canConvertPropertiesInAllSupportedFormats() {
Object[][] inputResultPairs = {
@@ -57,11 +61,7 @@ public class PeriodConverterTest {
{"P1YT1S", FORMATTER.parsePeriod("P1Y0M0W0DT0H0M1S")},
// Alternative format
- {"P0002-03-00T00:00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")},
- {"P0002-03T00:00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")},
- {"P0002T00:00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")},
- {"P0002T00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")}
-
+ {"P0002-03-00T00:00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")}
};
ConversionContext context = Mockito.mock(ConversionContext.class);
@@ -74,9 +74,33 @@ public class PeriodConverterTest {
}
}
- @Ignore
+ @Test
+ public void invalidInputValuesResultInReturningNull() {
+ String[] inputValues = {
+ "P0002-03T00:00:05",
+ "P0002T00:00:05",
+ "P0002T00:05"
+ };
+
+ ConversionContext context = Mockito.mock(ConversionContext.class);
+
+ for (String input : inputValues) {
+ Period period = converter.convert(input, context);
+
+ assertThat(period, nullValue());
+ }
+ }
+
@Test
public void allSupportedFormatsAreAddedToTheConversionContext() {
- if (true == true) throw new RuntimeException("Method must catch up with the current API!");
+ String name = PeriodConverter.class.getSimpleName();
+
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Period.class)).build();
+
+ converter.convert("P7Y0M0W0DT0H0M0S", context);
+
+ assertThat(context.getSupportedFormats(), hasSize(2));
+ assertThat(context.getSupportedFormats(), hasItem("PyYmMwWdDThHmMsS (" + name + ")"));
+ assertThat(context.getSupportedFormats(), hasItem("Pyyyy-mm-ddThh:mm:ss (" + name + ")"));
}
}