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 2020/05/05 08:08:01 UTC
[isis] branch master updated: ISIS-2340: fixes Password marshaling
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 618d2e2 ISIS-2340: fixes Password marshaling
618d2e2 is described below
commit 618d2e2c02f0d0da3fcf342f29257cd200967525
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 5 10:07:47 2020 +0200
ISIS-2340: fixes Password marshaling
---
.../org/apache/isis/applib/value/Password.java | 20 ++++++++++++++++++
.../password/PasswordValueSemanticsProvider.java | 5 +++--
.../isis/core/metamodel/spec/ManagedObjects.java | 24 ++++++++++++++++++++++
.../wicket/model/models/ScalarPropertyModel.java | 13 ++----------
4 files changed, 49 insertions(+), 13 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/value/Password.java b/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
index fe536dd..81ff445 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/value/Password.java
@@ -22,11 +22,15 @@ package org.apache.isis.applib.value;
import java.io.Serializable;
import java.util.Objects;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+
import org.apache.isis.applib.annotation.Value;
// tag::refguide[]
// end::refguide[]
@Value(semanticsProviderName = "org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider")
+@XmlAccessorType(XmlAccessType.FIELD)
@lombok.Value
public class Password implements Serializable {
@@ -36,6 +40,16 @@ public class Password implements Serializable {
private final String password;
+ // in support of XML un-marshaling
+ @SuppressWarnings("unused")
+ private Password() {
+ this("");
+ }
+
+ public Password(String password) {
+ this.password = password;
+ }
+
public boolean checkPassword(final String password) {
return Objects.equals(this.password, password);
}
@@ -47,4 +61,10 @@ public class Password implements Serializable {
}
return STARS;
}
+
+
+
+
+
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
index 448aab5..5f16e75 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
@@ -28,8 +28,9 @@ import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProv
import org.apache.isis.core.metamodel.spec.ManagedObject;
-public class PasswordValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<Password> implements
-PasswordValueFacet {
+public class PasswordValueSemanticsProvider
+extends ValueSemanticsProviderAndFacetAbstract<Password>
+implements PasswordValueFacet {
public static Class<? extends Facet> type() {
return PasswordValueFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index b0bd1e5..80b5604 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
import org.apache.isis.core.commons.internal.base._NullSafe;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import lombok.val;
@@ -82,6 +83,29 @@ public final class ManagedObjects {
}
};
+
+ // -- COPY UTILITIES
+
+ @Nullable
+ public static ManagedObject copyOfIfClonable(@Nullable ManagedObject adapter) {
+
+ if(adapter==null) {
+ return null;
+ }
+
+ val viewModelFacet = adapter.getSpecification().getFacet(ViewModelFacet.class);
+ if(viewModelFacet != null) {
+ val viewModelPojo = adapter.getPojo();
+ if(viewModelFacet.isCloneable(viewModelPojo)) {
+ return ManagedObject.of(
+ adapter.getSpecification(),
+ viewModelFacet.clone(viewModelPojo));
+ }
+ }
+
+ return adapter;
+
+ }
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index cc42369..81e519a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengt
import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacet;
import org.apache.isis.core.metamodel.facets.value.string.StringValueSemanticsProvider;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -349,18 +350,8 @@ public class ScalarPropertyModel extends ScalarModel {
val associate = getObject();
property.set(adapter, associate, InteractionInitiatedBy.USER);
- final ViewModelFacet recreatableObjectFacet = adapter.getSpecification().getFacet(ViewModelFacet.class);
- if(recreatableObjectFacet != null) {
- final Object viewModel = adapter.getPojo();
- final boolean cloneable = recreatableObjectFacet.isCloneable(viewModel);
- if(cloneable) {
- //XXX lombok issue, no val
- Object newViewModelPojo = recreatableObjectFacet.clone(viewModel);
- adapter = super.getPojoToAdapter().apply(newViewModelPojo);
- }
- }
+ return ManagedObjects.copyOfIfClonable(adapter);
- return adapter;
}
@Override