You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/01/22 17:53:28 UTC
[13/52] [abbrv] isis git commit: ISIS-970: updated
ActionLayoutFacetFactory to support @ActionLayout(bookmarking=...),
plus also reading from xxx.layout.json.
ISIS-970: updated ActionLayoutFacetFactory to support @ActionLayout(bookmarking=...), plus also reading from xxx.layout.json.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/77da1846
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/77da1846
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/77da1846
Branch: refs/heads/ISIS-970
Commit: 77da1846d18492f1201df6937e5b535299f7b150
Parents: 525c0c4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Dec 30 14:27:23 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jan 22 16:32:26 2015 +0000
----------------------------------------------------------------------
.../isis/applib/annotation/ActionLayout.java | 20 +++++---
.../layout/ActionLayoutFacetFactory.java | 9 ++++
...arkPolicyFacetForActionLayoutAnnotation.java | 42 ++++++++++++++++
...PolicyFacetOnActionFromLayoutProperties.java | 52 ++++++++++++++++++++
...cyFacetViaBookmarkableAnnotationFactory.java | 3 +-
.../layoutmetadata/ActionLayoutFacetRepr.java | 2 +
6 files changed, 121 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index 7d896db..6bdb007 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -33,6 +33,20 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
public @interface ActionLayout {
+
+ /**
+ * Whether (and how) this action can be bookmarked in the UI.
+ *
+ * <p>
+ * For bookmarkable actions, either {@link org.apache.isis.applib.annotation.BookmarkPolicy#AS_ROOT}
+ * and {@link org.apache.isis.applib.annotation.BookmarkPolicy#AS_CHILD} can be used (they are treated
+ * identically).
+ * </p>
+ */
+ BookmarkPolicy bookmarking() default BookmarkPolicy.NEVER;
+
+ // //////////////////////////////////////
+
/**
* Indicates the css class that an action should have.
*
@@ -108,11 +122,5 @@ public @interface ActionLayout {
boolean prototype() default false;
- // //////////////////////////////////////
-
- /**
- * Whether (and how) this domain object can be bookmarked in the UI.
- */
- BookmarkPolicy bookmarking() default BookmarkPolicy.NEVER;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
index d9132c9..e80b54b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
public class ActionLayoutFacetFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
@@ -56,6 +57,14 @@ public class ActionLayoutFacetFactory extends FacetFactoryAbstract implements Co
final ActionLayout actionLayout = Annotations.getAnnotation(processMethodContext.getMethod(), ActionLayout.class);
+ // bookmarkable
+ BookmarkPolicyFacet bookmarkableFacet = BookmarkPolicyFacetOnActionFromLayoutProperties.create(properties, holder);
+ if(bookmarkableFacet == null) {
+ bookmarkableFacet = BookmarkPolicyFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ }
+ FacetUtil.addFacet(bookmarkableFacet);
+
+
// cssClass
CssClassFacet cssClassFacet = CssClassFacetOnActionFromLayoutProperties.create(properties, holder);
if(cssClassFacet == null) {
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
new file mode 100644
index 0000000..1a9f573
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
@@ -0,0 +1,42 @@
+/*
+ * 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.actions.layout;
+
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetAbstract;
+
+public class BookmarkPolicyFacetForActionLayoutAnnotation extends BookmarkPolicyFacetAbstract {
+
+ public static BookmarkPolicyFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
+ if (actionLayout == null) {
+ return null;
+ }
+ final BookmarkPolicy bookmarkPolicy = actionLayout.bookmarking();
+ return bookmarkPolicy != null && bookmarkPolicy != BookmarkPolicy.NEVER ? new BookmarkPolicyFacetForActionLayoutAnnotation(bookmarkPolicy, holder) : null;
+ }
+
+ private BookmarkPolicyFacetForActionLayoutAnnotation(final BookmarkPolicy bookmarkPolicy, final FacetHolder holder) {
+ super(bookmarkPolicy, holder);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetOnActionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetOnActionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetOnActionFromLayoutProperties.java
new file mode 100644
index 0000000..dc4dd6f
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetOnActionFromLayoutProperties.java
@@ -0,0 +1,52 @@
+/*
+ * 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.actions.layout;
+
+import java.util.Properties;
+import com.google.common.base.Strings;
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetAbstract;
+
+public class BookmarkPolicyFacetOnActionFromLayoutProperties extends BookmarkPolicyFacetAbstract {
+
+ public static BookmarkPolicyFacet create(Properties properties, FacetHolder holder) {
+ final BookmarkPolicy bookmarkPolicy = hidden(properties);
+ return bookmarkPolicy != null && bookmarkPolicy != BookmarkPolicy.NEVER ? new BookmarkPolicyFacetOnActionFromLayoutProperties(bookmarkPolicy, holder): null;
+ }
+
+ private static BookmarkPolicy hidden(Properties properties) {
+ if(properties == null) {
+ return null;
+ }
+ String bookmarking = Strings.emptyToNull(properties.getProperty("bookmarking"));
+ if(bookmarking == null) {
+ // alternate key
+ bookmarking = Strings.emptyToNull(properties.getProperty("bookmarkable"));
+ return null;
+ }
+ return BookmarkPolicy.valueOf(bookmarking);
+ }
+
+ private BookmarkPolicyFacetOnActionFromLayoutProperties(BookmarkPolicy bookmarkPolicy, FacetHolder holder) {
+ super(bookmarkPolicy, holder);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
index f28e94a..0a81675 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bookmarkpolicy/bookmarkable/BookmarkPolicyFacetViaBookmarkableAnnotationFactory.java
@@ -84,7 +84,8 @@ public class BookmarkPolicyFacetViaBookmarkableAnnotationFactory extends FacetFa
final ActionSemanticsFacet semanticsFacet = objectAction.getFacet(ActionSemanticsFacet.class);
if(semanticsFacet == null || semanticsFacet.isNoop() || semanticsFacet.value() != Of.SAFE) {
validationFailures.add(
- "Action %s is bookmarkable but action semantics are not explicitly indicated as being safe. Either add @ActionSemantics(Of.Safe), or remove @Bookmarkable.",
+ "Action %s is bookmarkable but action semantics are not explicitly indicated as being safe. " +
+ "Either add @Action(semantics=SemanticsOf.SAFE), or remove @ActionLayout(bookmarking=...).",
objectAction.getIdentifier().toClassAndNameIdentityString());
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/77da1846/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
index d5a9123..4fb113c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
@@ -18,9 +18,11 @@ package org.apache.isis.core.metamodel.layoutmetadata;
import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.Where;
public class ActionLayoutFacetRepr {
+ public BookmarkPolicy bookmarking;
public String cssClass;
public String cssClassFa;
public String cssClassFaPosition;