Skip to content

Commit ee53d5f

Browse files
committed
CAUSEWAY-3859: flattens PromptStyleFacet
1 parent fe4b8fd commit ee53d5f

19 files changed

+765
-1052
lines changed

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java

+36-2
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,22 @@
1818
*/
1919
package org.apache.causeway.core.metamodel.facets.actions.layout;
2020

21+
import java.util.Optional;
22+
2123
import jakarta.inject.Inject;
2224

2325
import org.apache.causeway.applib.annotation.ActionLayout;
26+
import org.apache.causeway.applib.annotation.PromptStyle;
27+
import org.apache.causeway.core.config.CausewayConfiguration;
2428
import org.apache.causeway.core.metamodel.context.MetaModelContext;
29+
import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
2530
import org.apache.causeway.core.metamodel.facetapi.FeatureType;
2631
import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract;
2732
import org.apache.causeway.core.metamodel.facets.actions.position.ActionPositionFacetFallback;
2833
import org.apache.causeway.core.metamodel.facets.actions.redirect.RedirectFacetFallback;
2934
import org.apache.causeway.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation;
3035
import org.apache.causeway.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromActionLayoutAnnotation;
36+
import org.apache.causeway.core.metamodel.facets.object.promptStyle.PromptStyleFacet;
3137
import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailureUtils;
3238

3339
public class ActionLayoutFacetFactory
@@ -79,8 +85,8 @@ public void process(final ProcessMethodContext processMethodContext) {
7985
.create(actionLayoutIfAny, facetHolder));
8086

8187
// promptStyle
82-
addFacetIfPresent(PromptStyleFacetForActionLayoutAnnotation
83-
.create(actionLayoutIfAny, getConfiguration(), facetHolder));
88+
addFacetIfPresent(
89+
createPromptStyleFacetForActionLayoutAnnotation(actionLayoutIfAny, getConfiguration(), facetHolder));
8490

8591
// position
8692
var actionPositionFacet = ActionPositionFacetForActionLayoutAnnotation
@@ -102,4 +108,32 @@ public void process(final ProcessMethodContext processMethodContext) {
102108

103109
}
104110

111+
// -- HELPER
112+
113+
private static Optional<PromptStyleFacet> createPromptStyleFacetForActionLayoutAnnotation(
114+
final Optional<ActionLayout> actionLayoutIfAny,
115+
final CausewayConfiguration configuration,
116+
final FacetHolder holder) {
117+
118+
return Optional.ofNullable(
119+
actionLayoutIfAny
120+
.map(ActionLayout::promptStyle)
121+
.filter(promptStyle -> promptStyle != PromptStyle.NOT_SPECIFIED)
122+
.map(promptStyle -> switch (promptStyle) {
123+
case DIALOG, DIALOG_MODAL, DIALOG_SIDEBAR, INLINE, INLINE_AS_IF_EDIT->
124+
new PromptStyleFacet("ActionLayoutAnnotation", promptStyle, holder);
125+
case AS_CONFIGURED->
126+
holder.containsNonFallbackFacet(PromptStyleFacet.class)
127+
? null // do not replace
128+
: PromptStyleFacet.asConfgured(configuration, holder);
129+
case NOT_SPECIFIED -> null; // unexpected code reach
130+
})
131+
.orElseGet(() ->
132+
// do not replace
133+
holder.containsNonFallbackFacet(PromptStyleFacet.class)
134+
? null
135+
: PromptStyleFacet.asConfgured(configuration, holder))
136+
);
137+
}
138+
105139
}

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutAnnotation.java

-72
This file was deleted.

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutXml.java

-59
This file was deleted.

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/semantics/ActionSemanticsFacet.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public ActionSemanticsFacet(final String origin, final SemanticsOf of, final Fac
4949
@Override
5050
public void visitAttributes(final BiConsumer<String, Object> visitor) {
5151
visitor.accept("origin", origin());
52-
visitor.accept("precedence", getPrecedence().name());
52+
visitor.accept("precedence", precedence().name());
5353
visitor.accept("value", value);
5454
}
5555

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/promptStyle/PromptStyleFacet.java

+40-5
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,50 @@
1818
*/
1919
package org.apache.causeway.core.metamodel.facets.object.promptStyle;
2020

21+
import java.util.function.BiConsumer;
22+
23+
import org.jspecify.annotations.NonNull;
24+
2125
import org.apache.causeway.applib.annotation.PromptStyle;
22-
import org.apache.causeway.core.metamodel.facets.SingleValueFacet;
26+
import org.apache.causeway.core.config.CausewayConfiguration;
27+
import org.apache.causeway.core.metamodel.facetapi.Facet;
28+
import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
2329

2430
/**
25-
* Indicates that the editing of the property should be published.
31+
* Provides the prompt style for editing of a property.
2632
*/
27-
public interface PromptStyleFacet extends SingleValueFacet<PromptStyle> {
33+
public record PromptStyleFacet(
34+
@NonNull String origin,
35+
@NonNull PromptStyle value,
36+
@NonNull FacetHolder facetHolder,
37+
Facet.@NonNull Precedence precedence,
38+
boolean isObjectTypeSpecific
39+
) implements Facet {
40+
41+
public static PromptStyleFacet compositeValueEdit(final FacetHolder facetHolder) {
42+
return new PromptStyleFacet("CompositeValueEdit", PromptStyle.INLINE_AS_IF_EDIT, facetHolder, Precedence.SYNTHESIZED, false);
43+
}
44+
public static PromptStyleFacet asConfgured(final CausewayConfiguration configuration, final FacetHolder facetHolder) {
45+
return new PromptStyleFacet("Configuration", configuration.getViewer().getWicket().getPromptStyle(), facetHolder, Precedence.DEFAULT, false);
46+
}
47+
48+
@Override public Class<? extends Facet> facetType() { return getClass(); }
49+
@Override public Precedence getPrecedence() { return precedence(); }
50+
@Override public FacetHolder getFacetHolder() { return facetHolder(); }
51+
52+
public PromptStyleFacet(final String origin, final PromptStyle of, final FacetHolder holder) {
53+
this(origin, of, holder, Precedence.DEFAULT, false);
54+
}
55+
56+
public PromptStyleFacet(final String origin, final PromptStyle of, final FacetHolder holder, final boolean isObjectTypeSpecific) {
57+
this(origin, of, holder, Precedence.DEFAULT, isObjectTypeSpecific);
58+
}
2859

29-
@Override
30-
PromptStyle value();
60+
@Override
61+
public void visitAttributes(final BiConsumer<String, Object> visitor) {
62+
visitor.accept("origin", origin());
63+
visitor.accept("precedence", getPrecedence().name());
64+
visitor.accept("promptStyle", value);
65+
}
3166

3267
}

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/promptStyle/PromptStyleFacetAbstract.java

-48
This file was deleted.

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/promptStyle/PromptStyleFacetAsConfigured.java

-43
This file was deleted.

core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/promptStyle/PromptStyleFacetForCompositeValueEdit.java

-36
This file was deleted.

0 commit comments

Comments
 (0)