You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/09/30 08:37:33 UTC
[isis] branch v2 updated: ISIS-2158: moves programming model
extension @Model -> 'incubator'
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new cfedfa9 ISIS-2158: moves programming model extension @Model -> 'incubator'
cfedfa9 is described below
commit cfedfa988ca6b811173d9857312c1f42248179cb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 30 10:37:25 2019 +0200
ISIS-2158: moves programming model extension @Model -> 'incubator'
---
.../progmodel/ProgrammingModelPlugin.java | 14 ++++--
.../dflt/ProgrammingModelFacetsJava8.java | 14 +++---
examples/smoketests/pom.xml | 54 +++-------------------
.../org/apache/isis/applib/annotation/Model.java | 0
.../incubator/SupportingMethodPlugin.java | 27 ++++-------
.../SupportingMethodValidatorRefinerFactory.java | 0
...isis.metamodel.progmodel.ProgrammingModelPlugin | 1 +
extensions/pom.xml | 1 +
8 files changed, 34 insertions(+), 77 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodel/ProgrammingModelPlugin.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodel/ProgrammingModelPlugin.java
index 544a7d8..e95f08f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodel/ProgrammingModelPlugin.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodel/ProgrammingModelPlugin.java
@@ -33,10 +33,18 @@ public interface ProgrammingModelPlugin {
/**
* Guides the priority at which facet factories are registered.
* There is no other use.
+ * @apiNote extend as needed
*/
public static enum FacetFactoryCategory {
- // extend as needed ...
- VALUE
+ /**
+ * registers the provided factory after built-in value factory providers
+ */
+ VALUE,
+
+ /**
+ * registers the provided factory after all built-in factories
+ */
+ VALIDATION,
;
}
@@ -58,7 +66,7 @@ public interface ProgrammingModelPlugin {
}
- public static FactoryCollector collector() {
+ public static FactoryCollector newCollector() {
return new FactoryCollector() {
final SetMultimap<FacetFactoryCategory, FacetFactory> factoriesByCategory =
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
index 4940402..432bd4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
@@ -18,7 +18,6 @@
package org.apache.isis.metamodel.progmodels.dflt;
import java.util.List;
-import java.util.Set;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.context._Plugin;
@@ -30,7 +29,6 @@ import org.apache.isis.metamodel.facets.actions.layout.ActionLayoutFacetFactory;
import org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacetFactory;
import org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacetFactory;
import org.apache.isis.metamodel.facets.actions.notinservicemenu.derived.NotInServiceMenuFacetDerivedFromDomainServiceFacetFactory;
-import org.apache.isis.metamodel.facets.actions.support.SupportingMethodValidatorRefinerFactory;
import org.apache.isis.metamodel.facets.actions.validate.method.ActionValidationFacetViaMethodFactory;
import org.apache.isis.metamodel.facets.all.i18n.TranslationFacetFactory;
import org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessorFactory;
@@ -162,6 +160,8 @@ import org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin;
import org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin.FacetFactoryCategory;
import org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin.FactoryCollector;
+import lombok.val;
+
public final class ProgrammingModelFacetsJava8 extends ProgrammingModelAbstract {
public ProgrammingModelFacetsJava8(final DeprecatedPolicy deprecatedPolicy) {
@@ -384,7 +384,7 @@ public final class ProgrammingModelFacetsJava8 extends ProgrammingModelAbstract
addFactory(new Jdk8OffsetDateTimeValueFacetUsingSemanticsProviderFactory());
addFactory(new Jdk8LocalDateTimeValueFacetUsingSemanticsProviderFactory());
- // plugin value factories
+ // plugin factories that contribute values
factoriesFromPlugins.getFactories(FacetFactoryCategory.VALUE).forEach(this::addFactory);
// written to not trample over TypeOf if already installed
@@ -411,8 +411,8 @@ public final class ProgrammingModelFacetsJava8 extends ProgrammingModelAbstract
addFactory(new ViewModelSemanticCheckingFacetFactory());
- // possibly required at the very end
- addFactory(new SupportingMethodValidatorRefinerFactory());
+ // plugin value factories
+ factoriesFromPlugins.getFactories(FacetFactoryCategory.VALIDATION).forEach(this::addFactory);
}
@@ -426,8 +426,8 @@ public final class ProgrammingModelFacetsJava8 extends ProgrammingModelAbstract
// -- HELPER
private static FactoryCollector discoverFactories() {
- final Set<ProgrammingModelPlugin> plugins = _Plugin.loadAll(ProgrammingModelPlugin.class);
- final FactoryCollector collector = ProgrammingModelPlugin.collector();
+ val plugins = _Plugin.loadAll(ProgrammingModelPlugin.class);
+ val collector = ProgrammingModelPlugin.newCollector();
plugins.forEach(plugin->{
plugin.plugin(collector);
});
diff --git a/examples/smoketests/pom.xml b/examples/smoketests/pom.xml
index 0e939cd..56ced4d 100644
--- a/examples/smoketests/pom.xml
+++ b/examples/smoketests/pom.xml
@@ -66,58 +66,16 @@
<artifactId>isis-plugins-jaxrs-resteasy-4</artifactId>
</dependency>
- <!-- SPRING -->
-
-<!-- <dependency> -->
-<!-- <groupId>org.springframework.boot</groupId> -->
-<!-- <artifactId>spring-boot-starter-tomcat</artifactId> -->
-<!-- <version>${spring-boot.version}</version> -->
-<!-- <scope>provided</scope> -->
-<!-- </dependency> -->
-
- <!-- ISIS API -->
-<!-- <dependency> -->
-<!-- <groupId>org.apache.isis.core</groupId> -->
-<!-- <artifactId>isis-applib</artifactId> -->
-<!-- </dependency> -->
-
- <!-- ISIS CORE PLUGINS -->
-<!-- <dependency> -->
-<!-- <groupId>org.apache.isis.core</groupId> -->
-<!-- <artifactId>isis-plugins-codegen-bytebuddy</artifactId> -->
-<!-- </dependency> -->
-
-<!-- <dependency> -->
-<!-- <groupId>org.apache.isis.core</groupId> -->
-<!-- <artifactId>isis-plugins-jdo-datanucleus-5</artifactId> -->
-<!-- <exclusions> -->
-<!-- <exclusion> -->
-<!-- <groupId>org.slf4j</groupId> -->
-<!-- <artifactId>slf4j-api</artifactId> -->
-<!-- </exclusion> -->
-<!-- </exclusions> -->
-<!-- </dependency> -->
-
-<!-- <dependency> -->
-<!-- <groupId>org.apache.isis.core</groupId> -->
-<!-- <artifactId>isis-plugins-jaxrs-resteasy-4</artifactId> -->
-<!-- </dependency> -->
-
-<!-- <dependency> -->
-<!-- <groupId>org.apache.isis.core</groupId> -->
-<!-- <artifactId>isis-plugins-security-shiro</artifactId> -->
-<!-- <exclusions> -->
-<!-- <exclusion> -->
-<!-- <groupId>org.slf4j</groupId> -->
-<!-- <artifactId>slf4j-api</artifactId> -->
-<!-- </exclusion> -->
-<!-- </exclusions> -->
-<!-- </dependency> -->
-
<!-- ISIS EXTENSIONS -->
<dependency>
<groupId>org.apache.isis.extensions</groupId>
+ <artifactId>isis-extensions-incubator</artifactId>
+ <version>${isis.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.extensions</groupId>
<artifactId>isis-extensions-fixtures</artifactId>
<version>${isis.version}</version>
</dependency>
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Model.java b/extensions/incubator/src/main/java/org/apache/isis/applib/annotation/Model.java
similarity index 100%
copy from core/applib/src/main/java/org/apache/isis/applib/annotation/Model.java
copy to extensions/incubator/src/main/java/org/apache/isis/applib/annotation/Model.java
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Model.java b/extensions/incubator/src/main/java/org/apache/isis/extensions/incubator/SupportingMethodPlugin.java
similarity index 55%
rename from core/applib/src/main/java/org/apache/isis/applib/annotation/Model.java
rename to extensions/incubator/src/main/java/org/apache/isis/extensions/incubator/SupportingMethodPlugin.java
index 1cdcd75..20cde3b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Model.java
+++ b/extensions/incubator/src/main/java/org/apache/isis/extensions/incubator/SupportingMethodPlugin.java
@@ -16,27 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.isis.extensions.incubator;
-package org.apache.isis.applib.annotation;
+import org.apache.isis.metamodel.facets.actions.support.SupportingMethodValidatorRefinerFactory;
+import org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+public class SupportingMethodPlugin implements ProgrammingModelPlugin {
-/**
- * Indicates that a method is a supporting-method, one that contributes (hide, validate, ...)
- * to an <em>Action/</em>.
- * <p>
- * By placing the {@link Model} annotation on a method, a contract with the metamodel is enforced,
- * such that this method must be recognized and can not be be ignored.
- *
- * @since 2.0
- */
-@Inherited
-@Target({ ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Model {
+ @Override
+ public void plugin(FactoryCollector collector) {
+ collector.addFactory(new SupportingMethodValidatorRefinerFactory(), FacetFactoryCategory.VALIDATION);
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/support/SupportingMethodValidatorRefinerFactory.java b/extensions/incubator/src/main/java/org/apache/isis/metamodel/facets/actions/support/SupportingMethodValidatorRefinerFactory.java
similarity index 100%
rename from core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/support/SupportingMethodValidatorRefinerFactory.java
rename to extensions/incubator/src/main/java/org/apache/isis/metamodel/facets/actions/support/SupportingMethodValidatorRefinerFactory.java
diff --git a/extensions/incubator/src/main/resources/META-INF/services/org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin b/extensions/incubator/src/main/resources/META-INF/services/org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin
new file mode 100644
index 0000000..a38e67a
--- /dev/null
+++ b/extensions/incubator/src/main/resources/META-INF/services/org.apache.isis.metamodel.progmodel.ProgrammingModelPlugin
@@ -0,0 +1 @@
+org.apache.isis.extensions.incubator.SupportingMethodPlugin
\ No newline at end of file
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 155a066..5b921c5 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -219,6 +219,7 @@
<module>markdown</module>
<module>fixtures</module>
<module>specsupport</module>
+ <module>incubator</module>
<module>legacy</module>
<module>viewer-wicket-excel</module>
<module>secman</module>