This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-2050 in repository https://gitbox.apache.org/repos/asf/isis.git
commit 3c242398f1cf78f221e223ee816f7faabe23f0a4 Author: danhaywood <d...@haywood-associates.co.uk> AuthorDate: Thu Dec 13 23:27:46 2018 +0000 ISIS-2050: adds ValueFacet for Joda LocalTime Uses a very simple implementation, because I suspect that the other capabilities of ValueFacet simply aren't needed anymore... --- .../facets/object/value/ValueFacetSimple.java | 50 ++++++++++++++++++++++ .../JodaLocalTimeValueFacetSimpleFactory.java | 47 ++++++++++++++++++++ .../dflt/ProgrammingModelFacetsJava5.java | 2 + 3 files changed, 99 insertions(+) diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java new file mode 100644 index 0000000..5b50363 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java @@ -0,0 +1,50 @@ +/* + * 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.isis.core.metamodel.facets.object.value; + +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetAbstract; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; + +public class ValueFacetSimple extends FacetAbstract implements ValueFacet { + + public static Class<? extends Facet> type() { + return ValueFacet.class; + } + + public ValueFacetSimple(final FacetHolder holder) { + super(type(), holder, Derivation.NOT_DERIVED); + } + + @Override + public Class<? extends Facet>[] facetTypes() { + return new Class[]{ValueFacet.class}; + } + + @Override + public <T extends Facet> T getFacet(final Class<T> facet) { + return (T)this; + } + + @Override + public boolean containsFacetTypeOf(final Class<? extends Facet> facetType) { + return facetType == ValueFacet.class; + } +} diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java new file mode 100644 index 0000000..31ce6e3 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timejodalocal/JodaLocalTimeValueFacetSimpleFactory.java @@ -0,0 +1,47 @@ +/* + * 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.isis.core.metamodel.facets.value.timejodalocal; + +import org.joda.time.LocalDate; +import org.joda.time.LocalTime; + +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facetapi.FacetUtil; +import org.apache.isis.core.metamodel.facets.object.value.ValueFacetSimple; +import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory; + +public class JodaLocalTimeValueFacetSimpleFactory extends ValueFacetUsingSemanticsProviderFactory<LocalDate> { + + public JodaLocalTimeValueFacetSimpleFactory() { + super(); + } + + @Override + public void process(final ProcessClassContext processClassContext) { + final Class<?> type = processClassContext.getCls(); + final FacetHolder holder = processClassContext.getFacetHolder(); + + if (type != LocalTime.class) { + return; + } + FacetUtil.addFacet(new ValueFacetSimple(holder)); + } + +} diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java index ee5c697..d097e30 100644 --- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java +++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java @@ -192,6 +192,7 @@ import org.apache.isis.core.metamodel.facets.value.shortint.ShortPrimitiveValueF import org.apache.isis.core.metamodel.facets.value.shortint.ShortWrapperValueFacetUsingSemanticsProviderFactory; import org.apache.isis.core.metamodel.facets.value.string.StringValueFacetUsingSemanticsProviderFactory; import org.apache.isis.core.metamodel.facets.value.time.TimeValueFacetUsingSemanticsProviderFactory; +import org.apache.isis.core.metamodel.facets.value.timejodalocal.JodaLocalTimeValueFacetSimpleFactory; import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueFacetUsingSemanticsProviderFactory; import org.apache.isis.core.metamodel.facets.value.timestamp.TimeStampValueFacetUsingSemanticsProviderFactory; import org.apache.isis.core.metamodel.facets.value.timestampsql.JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory; @@ -508,6 +509,7 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract addFactory(new JodaLocalDateValueFacetUsingSemanticsProviderFactory()); addFactory(new JodaLocalDateTimeValueFacetUsingSemanticsProviderFactory()); addFactory(new JodaDateTimeValueFacetUsingSemanticsProviderFactory()); + addFactory(new JodaLocalTimeValueFacetSimpleFactory()); // written to not trample over TypeOf if already installed addFactory(new CollectionFacetFactory());