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