TAMAYA-274: Moved to Java 8, added missing converters.

Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/c4285641
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/c4285641
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/c4285641

Branch: refs/heads/java8
Commit: c4285641af328fe7c3a0ee4522eca73c27f4fbdb
Parents: c32b45f
Author: anatole <anat...@apache.org>
Authored: Wed Aug 9 00:22:59 2017 +0200
Committer: anatole <anat...@apache.org>
Committed: Wed Aug 9 00:22:59 2017 +0200

----------------------------------------------------------------------
 .../internal/converters/BooleanConverter.java   |  4 +-
 .../internal/converters/InstantConverter.java   | 49 ++++++++++++++++
 .../internal/converters/OptionalConverter.java  | 61 ++++++++++++++++++++
 .../org.apache.tamaya.spi.PropertyConverter     |  2 +
 4 files changed, 115 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c4285641/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
index d926b14..61c182b 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
@@ -34,11 +34,12 @@ public class BooleanConverter implements 
PropertyConverter<Boolean> {
 
     @Override
     public Boolean convert(String value, ConversionContext context) {
-        context.addSupportedFormats(getClass(), "yes (ignore case)", "y 
(ignore case)", "true (ignore case)", "t (ignore case)", "no (ignore case)", "n 
(ignore case)", "false (ignore case)", "f (ignore case)");
+        context.addSupportedFormats(getClass(), "yes (ignore case)", "y 
(ignore case)", "true (ignore case)", "t (ignore case)", "1", "no (ignore 
case)", "n (ignore case)", "false (ignore case)", "f (ignore case)", "0");
         String ignoreCaseValue = Objects.requireNonNull(value)
                                         .trim()
                                         .toLowerCase(Locale.ENGLISH);
         switch(ignoreCaseValue) {
+            case "1":
             case "yes":
             case "y":
             case "true":
@@ -48,6 +49,7 @@ public class BooleanConverter implements 
PropertyConverter<Boolean> {
             case "n":
             case "false":
             case "f":
+            case "0":
                 return Boolean.FALSE;
             default:
                 LOG.finest("Unknown boolean value encountered: " + value);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c4285641/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
new file mode 100644
index 0000000..c0f2bf0
--- /dev/null
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
@@ -0,0 +1,49 @@
+/*
+ * 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.core.internal.converters;
+
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+import java.time.Instant;
+import java.util.logging.Logger;
+
+/**
+ * Converter, converting from String to Boolean.
+ */
+public class InstantConverter implements PropertyConverter<Instant> {
+
+    private final Logger LOG = Logger.getLogger(getClass().getName());
+
+    @Override
+    public Instant convert(String value, ConversionContext context) {
+        context.addSupportedFormats(getClass(), Instant.now().toString());
+        return Instant.parse(value);
+    }
+
+    @Override
+    public boolean equals(Object o){
+        return getClass().equals(o.getClass());
+    }
+
+    @Override
+    public int hashCode(){
+        return getClass().hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c4285641/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
new file mode 100644
index 0000000..69595ac
--- /dev/null
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
@@ -0,0 +1,61 @@
+/*
+ * 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.core.internal.converters;
+
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.core.internal.PropertyConverterManager;
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+import java.util.Locale;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.logging.Logger;
+
+/**
+ * Converter, converting from String to Boolean.
+ */
+public class OptionalConverter implements PropertyConverter<Optional> {
+
+    private final Logger LOG = Logger.getLogger(getClass().getName());
+
+    @Override
+    public Optional<?> convert(String value, ConversionContext context) {
+        TypeLiteral<Optional> target = 
(TypeLiteral<Optional>)context.getTargetType();
+        Object result = null;
+        for(PropertyConverter 
pv:context.getConfigurationContext().getPropertyConverters(
+                TypeLiteral.of(target.getType()))){
+            result = pv.convert(value, context);
+            if(result!=null){
+                return Optional.of(result);
+            }
+        }
+        return Optional.ofNullable(result);
+    }
+
+    @Override
+    public boolean equals(Object o){
+        return getClass().equals(o.getClass());
+    }
+
+    @Override
+    public int hashCode(){
+        return getClass().hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c4285641/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
 
b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
index a53d80d..f934197 100644
--- 
a/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
+++ 
b/code/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
@@ -39,3 +39,5 @@ 
org.apache.tamaya.core.internal.converters.LocalDateTimeConverter
 org.apache.tamaya.core.internal.converters.LocalTimeConverter
 org.apache.tamaya.core.internal.converters.OffsetDateTimeConverter
 org.apache.tamaya.core.internal.converters.OffsetTimeConverter
+org.apache.tamaya.core.internal.converters.InstantConverter
+org.apache.tamaya.core.internal.converters.OptionalConverter

Reply via email to