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 2021/09/16 11:02:58 UTC
[isis] branch master updated: ISIS-2871: Spring managed value
semantics for Password
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 3b21673 ISIS-2871: Spring managed value semantics for Password
3b21673 is described below
commit 3b216734ac7b25d19921d48429a4fb35e0a5b133
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 13:02:48 2021 +0200
ISIS-2871: Spring managed value semantics for Password
---
.../org/apache/isis/applib/value/Password.java | 11 +--
.../core/metamodel/IsisModuleCoreMetamodel.java | 6 +-
.../facets/value/password/PasswordValueFacet.java | 32 -------
...ordValueFacetUsingSemanticsProviderFactory.java | 47 ---------
.../value/password/PasswordValueSemantics.java | 83 ++++++++++++++++
.../password/PasswordValueSemanticsProvider.java | 105 ---------------------
.../dflt/ProgrammingModelFacetsJava11.java | 4 -
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
.../value/PasswordValueSemanticsProviderTest.java | 14 +--
.../java/demoapp/dom/types/isis/IsisTypesMenu.java | 2 +-
.../passwords/persistence/IsisPasswordEntity.java | 34 +++++++
.../passwords/samples/IsisPasswordsSamples.java | 5 +-
.../types/isis/passwords/vm/IsisPasswordVm.java | 3 +-
.../scalars/ScalarPanelTextFieldAbstract.html | 2 -
14 files changed, 135 insertions(+), 215 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 06edf91..f9f2fd7 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
@@ -40,8 +40,6 @@ public class Password implements Serializable {
private static final long serialVersionUID = 1L;
- private static final String STARS = "********************";
-
private final String password;
public static Password of(final String password) {
@@ -64,14 +62,11 @@ public class Password implements Serializable {
@Override
public String toString() {
- if (password == null) {
- return "";
- }
- return STARS;
+ return "*";
}
-
- public static class JaxbToStringAdapter extends javax.xml.bind.annotation.adapters.XmlAdapter<String, Password> {
+ public static class JaxbToStringAdapter
+ extends javax.xml.bind.annotation.adapters.XmlAdapter<String, Password> {
@Override
public Password unmarshal(final String str) throws Exception {
return str != null
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 33fd1e9..9f58ce4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemantic
import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
import org.apache.isis.core.metamodel.facets.value.localrespath.LocalResourcePathValueSemantics;
import org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemantics;
-import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemantics;
import org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemantics;
import org.apache.isis.core.metamodel.facets.value.url.URLValueSemantics;
import org.apache.isis.core.metamodel.facets.value.uuid.UUIDValueSemantics;
@@ -91,6 +91,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
// Value Semantics (built-in defaults)
BooleanValueSemantics.class,
BigDecimalValueSemantics.class,
+ PasswordValueSemantics.class,
BlobValueSemantics.class,
ClobValueSemantics.class,
MarkupValueSemantics.class,
@@ -98,9 +99,6 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
LocalResourcePathValueSemantics.class,
UUIDValueSemantics.class,
TreeNodeValueSemantics.class,
- //TODO convert to non-facets ...
- PasswordValueSemanticsProvider.class,
-
// @Service's
ObjectManagerDefault.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacet.java
deleted file mode 100644
index ee4d5ef..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.password;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public interface PasswordValueFacet extends Facet {
-
- boolean checkPassword(ManagedObject object, String password);
-
- String getEditText(ManagedObject object);
-
- ManagedObject createValue(String value);
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index c166448..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.password;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.value.Password;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
-
-public class PasswordValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Password> {
-
- @Inject
- public PasswordValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
-
- if (type != org.apache.isis.applib.value.Password.class) {
- return;
- }
- addValueFacet(new PasswordValueSemanticsProvider(holder));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemantics.java
new file mode 100644
index 0000000..20deead
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemantics.java
@@ -0,0 +1,83 @@
+/*
+ * 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.password;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.value.Password;
+import org.apache.isis.commons.internal.base._Strings;
+
+@Component
+public class PasswordValueSemantics
+extends AbstractValueSemanticsProvider<Password>
+implements
+ EncoderDecoder<Password>,
+ Parser<Password>,
+ Renderer<Password> {
+
+ // -- ENCODER DECODER
+
+ @Override
+ public String toEncodedString(final Password value) {
+ if(value==null) {
+ return null;
+ }
+ return value.getPassword();
+ }
+
+ @Override
+ public Password fromEncodedString(final String data) {
+ if(data==null) {
+ return null;
+ }
+ return new Password(data);
+ }
+
+ // -- RENDERER
+
+ @Override
+ public String presentationValue(final Context context, final Password value) {
+ return render(value, v->"*");
+ }
+
+ // -- PARSER
+
+ @Override
+ public String parseableTextRepresentation(final Context context, final Password value) {
+ return render(value, v->"*");
+ }
+
+ @Override
+ public Password parseTextRepresentation(final Context context, final String text) {
+ if(_Strings.isEmpty(text)) {
+ return null;
+ }
+ return new Password(text);
+ }
+
+ @Override
+ public int typicalLength() {
+ return 12;
+ }
+
+}
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
deleted file mode 100644
index 52ae32c..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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.password;
-
-import org.springframework.stereotype.Component;
-
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.applib.value.Password;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-@Component
-public class PasswordValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<Password>
-implements PasswordValueFacet {
-
- private static final Class<? extends Facet> type() {
- return PasswordValueFacet.class;
- }
-
- private static final Password DEFAULT_VALUE = null; // no default
- private static final int TYPICAL_LENGTH = 12;
-
- public PasswordValueSemanticsProvider() {
- this(null);
- }
-
- public PasswordValueSemanticsProvider(final FacetHolder holder) {
- super(type(), holder, Password.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
- }
-
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- protected Password doParse(final ValueSemanticsProvider.Context context, final String text) {
- return new Password(text);
- }
-
- @Override
- public String titleString(final Object object) {
- return object == null ? "" : password(object).toString();
- }
-
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public String toEncodedString(final Password object) {
- return password(object).getPassword();
- }
-
- @Override
- public Password fromEncodedString(final String data) {
- return new Password(data);
- }
-
- // //////////////////////////////////////////////////////////////////
- // PasswordValueFacet
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public boolean checkPassword(final ManagedObject object, final String password) {
- return password(object.getPojo()).checkPassword(password);
- }
-
- @Override
- public String getEditText(final ManagedObject object) {
- return object == null ? "" : password(object).getPassword();
- }
-
- @Override
- public ManagedObject createValue(final String password) {
- return getObjectManager().adapt(new Password(password));
- }
-
- private Password password(final Object object) {
- if (object instanceof ManagedObject) {
- return (Password) ((ManagedObject) object).getPojo();
- } else {
- return (Password) object;
- }
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index ffca799..ffb93ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -103,7 +103,6 @@ import org.apache.isis.core.metamodel.facets.value.integer.IntPrimitiveValueFace
import org.apache.isis.core.metamodel.facets.value.integer.IntWrapperValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.longs.LongPrimitiveValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.longs.LongWrapperValueFacetUsingSemanticsProviderFactory;
-import org.apache.isis.core.metamodel.facets.value.password.PasswordValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.shortint.ShortPrimitiveValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.shortint.ShortWrapperValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.string.StringValueFacetUsingSemanticsProviderFactory;
@@ -291,9 +290,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaAwtImageValueFacetUsingSemanticsProviderFactory(mmc));
- // applib values
- addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new PasswordValueFacetUsingSemanticsProviderFactory(mmc));
-
// jodatime values
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JodaLocalDateValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JodaLocalDateTimeValueFacetUsingSemanticsProviderFactory(mmc));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index d9f9e1b..1b4fbe6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void verifyProgrammingModelNumberOfFactories() {
- assertEquals(97, programmingModel.streamFactories().count());
+ assertEquals(96, programmingModel.streamFactories().count());
}
@Test //verify we have the javac -parameter flag set when compiling this class
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PasswordValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PasswordValueSemanticsProviderTest.java
index 38ee74b..459d596 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PasswordValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/PasswordValueSemanticsProviderTest.java
@@ -24,21 +24,17 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.apache.isis.applib.value.Password;
-import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
-import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemantics;
-public class PasswordValueSemanticsProviderTest extends ValueSemanticsProviderAbstractTestCase {
+public class PasswordValueSemanticsProviderTest
+extends ValueSemanticsProviderAbstractTestCase {
- private PasswordValueSemanticsProvider adapter;
+ private PasswordValueSemantics adapter;
private Password password;
- private FacetHolder holder;
@Before
public void setUpObjects() throws Exception {
- holder = FacetHolderAbstract.forTesting(MetaModelContext_forTesting.buildDefault());
- setValue(adapter = new PasswordValueSemanticsProvider(holder));
+ setSemanitcs(adapter = new PasswordValueSemantics());
password = new Password("secret");
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
index 1bc4474..0d05e07 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/IsisTypesMenu.java
@@ -67,7 +67,7 @@ public class IsisTypesMenu {
}
@Action(semantics = SemanticsOf.SAFE)
- @ActionLayout(cssClassFa="fa-clock")
+ @ActionLayout(cssClassFa="fa-key")
public IsisPasswords passwords(){
return new IsisPasswords();
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/persistence/IsisPasswordEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/persistence/IsisPasswordEntity.java
index 06d7786..22763f4 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/persistence/IsisPasswordEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/persistence/IsisPasswordEntity.java
@@ -18,7 +18,14 @@
*/
package demoapp.dom.types.isis.passwords.persistence;
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.ActionLayout.Position;
import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.value.Password;
import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
@@ -39,4 +46,31 @@ implements
return getReadOnlyProperty();
}
+ // -- PASSWORD CHECKER DEMO
+
+ @Inject private transient MessageService messageService;
+
+ @Action
+ @ActionLayout(associateWith = "readWriteProperty"
+ , position = Position.PANEL
+ , cssClass = "bg-warning")
+ public IsisPasswordEntity showPassword() {
+ messageService.informUser(String
+ .format("password: '%s'", getReadWriteProperty().getPassword()));
+ return this;
+ }
+
+ @Action
+ @ActionLayout(associateWith = "readWriteProperty"
+ , position = Position.PANEL
+ , promptStyle = PromptStyle.DIALOG_MODAL)
+ public IsisPasswordEntity checkPassword(final Password confirm) {
+ if(getReadWriteProperty().checkPassword(confirm.getPassword())) {
+ messageService.informUser("passwords did match");
+ } else {
+ messageService.warnUser("passwords did not match");
+ }
+ return this;
+ }
+
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/samples/IsisPasswordsSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/samples/IsisPasswordsSamples.java
index a4f9457..c19ced0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/samples/IsisPasswordsSamples.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/samples/IsisPasswordsSamples.java
@@ -18,6 +18,7 @@
*/
package demoapp.dom.types.isis.passwords.samples;
+import java.util.Random;
import java.util.stream.Stream;
import org.springframework.stereotype.Service;
@@ -31,7 +32,9 @@ public class IsisPasswordsSamples implements Samples<Password> {
@Override
public Stream<Password> stream() {
- return Stream.of();
+ return new Random().ints(5)
+ .mapToObj(Integer::toHexString)
+ .map(Password::of);
}
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
index f142f98..3647a08 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/vm/IsisPasswordVm.java
@@ -52,7 +52,8 @@ public class IsisPasswordVm
implements HasAsciiDocDescription, IsisPasswordHolder2 {
//end::class[]
- public IsisPasswordVm(Password initialValue) {
+
+ public IsisPasswordVm(final Password initialValue) {
this.readOnlyProperty = initialValue;
this.readWriteProperty = initialValue;
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
index 544a65f..09c8187 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
@@ -40,7 +40,6 @@
<span class="scalarValueInput">
<span class="editing">
- <!-- ISIS-2831 "##" -->
<a href="##"
name="scalarValueInlinePromptLink"
class="scalarValueInlinePromptLink"
@@ -50,7 +49,6 @@
<wicket:container wicket:id="scalarValueContainer"/>
- <!-- ISIS-2831 "##" -->
<a href="##"
class="edit fa fa-edit"
wicket:id="editProperty"></a>