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 2013/12/12 16:44:53 UTC
git commit: ISIS-634: drop downs honour @TypicalLength
Updated Branches:
refs/heads/master 08d5ca7b0 -> 3364e7617
ISIS-634: drop downs honour @TypicalLength
and enums' implementation of TypicalLengthFacet inspects actual length of those enums.
In addition:
- fixed a failing couple of tests in core.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3364e761
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3364e761
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3364e761
Branch: refs/heads/master
Commit: 3364e7617bd88730245d1b5f24d2bd6ec4711cc0
Parents: 08d5ca7
Author: Dan Haywood <da...@apache.org>
Authored: Thu Dec 12 15:44:39 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Dec 12 15:44:39 2013 +0000
----------------------------------------------------------------------
.gitignore | 2 +
.../viewer/wicket/model/models/ScalarModel.java | 41 +++++-
.../components/widgets/Select2ChoiceUtil.java | 45 ++++++
.../entitylink/EntityLinkSelect2Panel.java | 4 +-
.../valuechoices/ValueChoicesSelect2Panel.java | 9 +-
.../viewer/wicket/ui/pages/PageAbstract.css | 15 +-
.../specloader/ServiceInitializer.java | 1 -
.../enums/EnumValueSemanticsProvider.java | 19 ++-
.../string/StringValueSemanticsProvider.java | 2 +-
.../adapter/oid/OidMarshallerTest_marshal.java | 83 -----------
.../adapter/oid/OidMarshallerTest_marshall.java | 83 +++++++++++
.../json/ExampleDomainObject.layout.properties | 2 +-
.../session/IsisSessionFactoryDefault.java | 14 +-
...onFactoryAbstractTest_init_and_shutdown.java | 140 +------------------
.../dom/src/main/java/dom/todo/ToDoItem.java | 8 +-
15 files changed, 210 insertions(+), 258 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 3cdb102..ab593ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,3 +37,5 @@ pom.xml.versionsBackup
.clover/
*.jdproj
JArchitectOut/
+
+core/integtestsupport/fixture-data
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index c10caee..5ce7ab7 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -19,6 +19,7 @@
package org.apache.isis.viewer.wicket.model.models;
+import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -39,11 +40,13 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacet;
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
+import org.apache.isis.core.metamodel.facets.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.progmodel.facets.value.bigdecimal.BigDecimalValueFacet;
+import org.apache.isis.core.progmodel.facets.value.string.StringValueSemanticsProvider;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.LinksProvider;
@@ -219,6 +222,14 @@ public class ScalarModel extends EntityModel implements LinksProvider {
final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class);
return facet != null? facet.getScale(): null;
}
+
+ @Override
+ public int getTypicalLength(ScalarModel scalarModel) {
+ final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
+ final OneToOneAssociation property = propertyMemento.getProperty();
+ final TypicalLengthFacet facet = property.getFacet(TypicalLengthFacet.class);
+ return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH;
+ }
@Override
public void reset(ScalarModel scalarModel) {
@@ -363,6 +374,14 @@ public class ScalarModel extends EntityModel implements LinksProvider {
final BigDecimalValueFacet facet = actionParameter.getFacet(BigDecimalValueFacet.class);
return facet != null? facet.getScale(): null;
}
+
+ @Override
+ public int getTypicalLength(ScalarModel scalarModel) {
+ final ActionParameterMemento parameterMemento = scalarModel.getParameterMemento();
+ final ObjectActionParameter actionParameter = parameterMemento.getActionParameter();
+ final TypicalLengthFacet facet = actionParameter.getFacet(TypicalLengthFacet.class);
+ return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH;
+ }
@Override
public void reset(ScalarModel scalarModel) {
@@ -418,8 +437,11 @@ public class ScalarModel extends EntityModel implements LinksProvider {
public abstract Integer getLength(ScalarModel scalarModel);
public abstract Integer getScale(ScalarModel scalarModel);
+ public abstract int getTypicalLength(ScalarModel scalarModel);
+
public abstract void reset(ScalarModel scalarModel);
+
}
private final Kind kind;
@@ -609,12 +631,26 @@ public class ScalarModel extends EntityModel implements LinksProvider {
return kind.getAutoComplete(this, searchTerm);
}
+ /**
+ * for {@link BigDecimal}s only.
+ *
+ * @see #getScale()
+ */
+ public int getLength() {
+ return kind.getLength(this);
+ }
+
+ /**
+ * for {@link BigDecimal}s only.
+ *
+ * @see #getLength()
+ */
public Integer getScale() {
return kind.getScale(this);
}
- public int getLength() {
- return kind.getLength(this);
+ public int getTypicalLength() {
+ return kind.getTypicalLength(this);
}
/**
@@ -684,4 +720,5 @@ public class ScalarModel extends EntityModel implements LinksProvider {
return actionArgsHint;
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/Select2ChoiceUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/Select2ChoiceUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/Select2ChoiceUtil.java
new file mode 100644
index 0000000..221b527
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/Select2ChoiceUtil.java
@@ -0,0 +1,45 @@
+/**
+ * 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.viewer.wicket.ui.components.widgets;
+
+import com.vaynberg.wicket.select2.Select2Choice;
+
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.model.IModel;
+
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
+import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+
+public final class Select2ChoiceUtil {
+
+ private Select2ChoiceUtil(){}
+
+ // a guesstimate to convert a single character into 'em' units
+ private static final double CHAR_TO_EM_MULTIPLIER = 0.8;
+
+ public static Select2Choice<ObjectAdapterMemento> newSelect2Choice(String id, final IModel<ObjectAdapterMemento> modelObject, ScalarModel scalarModel) {
+ Select2Choice<ObjectAdapterMemento> select2Choice = new Select2Choice<ObjectAdapterMemento>(id, modelObject);
+ int typicalLength = scalarModel.getTypicalLength();
+ select2Choice.add(new AttributeAppender("style", asCssStyleWidth(typicalLength)));
+ return select2Choice;
+ }
+
+ private static String asCssStyleWidth(int numChars) {
+ return "width: " + ((numChars+2) * CHAR_TO_EM_MULTIPLIER) + "em;";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
index b1b3753..3357976 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
@@ -51,6 +51,7 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.components.actions.ActionInvokeHandler;
import org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersFormPanel;
import org.apache.isis.viewer.wicket.ui.components.widgets.ObjectAdapterMementoProviderAbstract;
+import org.apache.isis.viewer.wicket.ui.components.widgets.Select2ChoiceUtil;
import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired;
import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormComponentPanelAbstract;
import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
@@ -65,7 +66,6 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
private static final String ID_AUTO_COMPLETE = "autoComplete";
private static final String ID_ENTITY_ICON_AND_TITLE = "entityIconAndTitle";
- //private static final String ID_ENTITY_TITLE_NULL = "entityTitleNull";
private static final String ID_ENTITY_CLEAR_LINK = "entityClearLink";
@@ -189,7 +189,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
final IModel<ObjectAdapterMemento> model = ScalarModelWithPending.Util.createModel(getScalarModel().asScalarModelWithPending());
if(select2Field == null) {
- select2Field = new Select2Choice<ObjectAdapterMemento>(ID_AUTO_COMPLETE, model);
+ select2Field = Select2ChoiceUtil.newSelect2Choice(ID_AUTO_COMPLETE, model, getScalarModel());
setProviderAndCurrAndPending(select2Field, getScalarModel().getActionArgsHint());
if(!getScalarModel().hasChoices()) {
final Settings settings = select2Field.getSettings();
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index f25d58a..eabb48f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -20,6 +20,7 @@ import java.util.Collection;
import java.util.List;
import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.vaynberg.wicket.select2.ChoiceProvider;
@@ -27,6 +28,7 @@ import com.vaynberg.wicket.select2.Select2Choice;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
+import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.FormComponentLabel;
@@ -40,12 +42,17 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
import org.apache.isis.viewer.wicket.ui.components.widgets.ObjectAdapterMementoProviderAbstract;
+import org.apache.isis.viewer.wicket.ui.components.widgets.Select2ChoiceUtil;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements ScalarModelWithPending {
+
private static final long serialVersionUID = 1L;
+ // a guesstimate to convert a single character into 'em' units
+ private static final double CHAR_TO_EM_MULTIPLIER = 0.8;
+
private static final String ID_SCALAR_IF_REGULAR = "scalarIfRegular";
private static final String ID_SCALAR_IF_COMPACT = "scalarIfCompact";
@@ -69,7 +76,7 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
// same pattern as in EntityLinkSelect2Panel
if(select2Field == null) {
- select2Field = new Select2Choice<ObjectAdapterMemento>(ID_VALUE_ID, modelObject);
+ select2Field = Select2ChoiceUtil.newSelect2Choice(ID_VALUE_ID, modelObject, getScalarModel());
setChoices(actionArgsHint);
addStandardSemantics();
} else {
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
index e2615e0..ae7e283 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
@@ -622,17 +622,6 @@ div.scalarPanel {
/********************* Select2 component styling *****************************/
-/*
-.actionPromptPage .select2-container,
-.entityPage .select2-container {
- width: 200px;
-TODO: removed the page class selector because the modal window doesn't honour the width setting
-}
-*/
-.select2-container {
- width: 200px;
-}
-
.actionPromptPage .select2-container .select2-choice,
@@ -755,7 +744,7 @@ div.wicket-modal div.w_content,
form input[type=text][disabled] {
border-radius:4px;
- -moz-borer-radius:4px;
+ -moz-border-radius:4px;
-webkit-border-radius:4px;
padding:6px;
background-color:#F0EFEA;
@@ -765,7 +754,7 @@ form input[type=text][disabled] {
form input[type=text] {
border-radius:4px;
- -moz-borer-radius:4px;
+ -moz-border-radius:4px;
-webkit-border-radius:4px;
padding:6px;
background-color:#FFFFFF;
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ServiceInitializer.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ServiceInitializer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ServiceInitializer.java
index 281b870..59108e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ServiceInitializer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ServiceInitializer.java
@@ -31,7 +31,6 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.commons.lang.MethodExtensions;
-import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
public class ServiceInitializer {
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/choices/enums/EnumValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
index a10e271..280662d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
@@ -31,14 +31,20 @@ import org.apache.isis.core.progmodel.facets.object.value.ValueSemanticsProvider
public class EnumValueSemanticsProvider<T extends Enum<T>> extends ValueSemanticsProviderAndFacetAbstract<T> implements EnumFacet {
- private static final int TYPICAL_LENGTH = 8;
-
+ private static Class<? extends Facet> type() {
+ return EnumFacet.class;
+ }
+
private static <T> T defaultFor(final Class<T> adaptedClass) {
return adaptedClass.getEnumConstants()[0];
}
- private static Class<? extends Facet> type() {
- return EnumFacet.class;
+ private static <T extends Enum<T>> int typicalLengthFor(final Class<T> adaptedClass) {
+ int max = Integer.MIN_VALUE;
+ for(T e: adaptedClass.getEnumConstants()) {
+ max = Math.max(max, e.name().length());
+ }
+ return max;
}
/**
@@ -49,8 +55,9 @@ public class EnumValueSemanticsProvider<T extends Enum<T>> extends ValueSemantic
}
public EnumValueSemanticsProvider(final FacetHolder holder, final Class<T> adaptedClass, final IsisConfiguration configuration, final ValueSemanticsProviderContext context) {
- super(type(), holder, adaptedClass, TYPICAL_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultFor(adaptedClass), configuration, context);
- }
+ super(type(), holder, adaptedClass, typicalLengthFor(adaptedClass), Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultFor(adaptedClass), configuration, context);
+ }
+
@Override
protected T doParse(final Object context, final String entry) {
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/string/StringValueSemanticsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/string/StringValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/string/StringValueSemanticsProvider.java
index 361a024..97a9cee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/string/StringValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/string/StringValueSemanticsProvider.java
@@ -35,7 +35,7 @@ public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacet
return StringValueFacet.class;
}
- private static final int TYPICAL_LENGTH = 25;
+ public static final int TYPICAL_LENGTH = 25;
private static final String DEFAULT_VALUE = null; // no default
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshal.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshal.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshal.java
deleted file mode 100644
index aab5945..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshal.java
+++ /dev/null
@@ -1,83 +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.adapter.oid;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-
-public class OidMarshallerTest_marshal {
-
- private OidMarshaller oidMarshaller;
-
- @Before
- public void setUp() throws Exception {
- oidMarshaller = new OidMarshaller();
- }
-
- @Test
- public void rootOid() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123"));
- assertThat(marshal, equalTo("CUS:123"));
- }
-
- @Test
- public void rootOid_transient() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.createTransient(ObjectSpecId.of("CUS"), "123"));
- assertThat(marshal, equalTo("!CUS:123"));
- }
-
- @Test
- public void rootOid_versionSequence() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L));
- assertThat(marshal, equalTo("CUS:123^90807::"));
- }
-
- @Test
- public void rootOid_versionSequenceAndUser() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, "joebloggs"));
- assertThat(marshal, equalTo("CUS:123^90807:joebloggs:"));
- }
-
- @Test
- public void rootOid_versionSequenceAndUserThatHasAnAtSymbol() {
- final ObjectSpecId objectSpecId = ObjectSpecId.of("CUS");
- final RootOidDefault oid = RootOidDefault.create(objectSpecId, "123", 90807L, "joebloggs@foo.bar");
- final String marshal = oidMarshaller.marshal(oid);
- assertThat(marshal, equalTo("CUS:123^90807:joebloggs%40foo.bar:"));
- }
-
- @Test
- public void rootOid_versionSequenceAndUtc() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, 3453452141L));
- assertThat(marshal, equalTo("CUS:123^90807::3453452141"));
- }
-
- @Test
- public void rootOid_versionSequenceAndUserAndUtc() {
- final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, "joebloggs", 3453452141L));
- assertThat(marshal, equalTo("CUS:123^90807:joebloggs:3453452141"));
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java
new file mode 100644
index 0000000..d24a035
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.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.adapter.oid;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+
+public class OidMarshallerTest_marshall {
+
+ private OidMarshaller oidMarshaller;
+
+ @Before
+ public void setUp() throws Exception {
+ oidMarshaller = new OidMarshaller();
+ }
+
+ @Test
+ public void rootOid() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123"));
+ assertThat(marshal, equalTo("CUS:123"));
+ }
+
+ @Test
+ public void rootOid_transient() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.createTransient(ObjectSpecId.of("CUS"), "123"));
+ assertThat(marshal, equalTo("!CUS:123"));
+ }
+
+ @Test
+ public void rootOid_versionSequence() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L));
+ assertThat(marshal, equalTo("CUS:123^90807::"));
+ }
+
+ @Test
+ public void rootOid_versionSequenceAndUser() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, "joebloggs"));
+ assertThat(marshal, equalTo("CUS:123^90807:joebloggs:"));
+ }
+
+ @Test
+ public void rootOid_versionSequenceAndUserThatHasAnAtSymbol() {
+ final ObjectSpecId objectSpecId = ObjectSpecId.of("CUS");
+ final RootOidDefault oid = RootOidDefault.create(objectSpecId, "123", 90807L, "joebloggs@foo.bar");
+ final String marshal = oidMarshaller.marshal(oid);
+ assertThat(marshal, equalTo("CUS:123^90807:joebloggs@foo.bar:"));
+ }
+
+ @Test
+ public void rootOid_versionSequenceAndUtc() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, 3453452141L));
+ assertThat(marshal, equalTo("CUS:123^90807::3453452141"));
+ }
+
+ @Test
+ public void rootOid_versionSequenceAndUserAndUtc() {
+ final String marshal = oidMarshaller.marshal(RootOidDefault.create(ObjectSpecId.of("CUS"), "123", 90807L, "joebloggs", 3453452141L));
+ assertThat(marshal, equalTo("CUS:123^90807:joebloggs:3453452141"));
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
index 473f6ad..917a187 100644
--- a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
+++ b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/layoutmetadata/json/ExampleDomainObject.layout.properties
@@ -48,7 +48,7 @@ member.complete.memberOrder.sequence=3
member.versionSequence.memberOrder.name=Misc
member.versionSequence.memberOrder.sequence=4
member.versionSequence.hidden.where=ALL_TABLES
-member.versionSequence.hidden.when=ANYWHERE
+member.versionSequence.hidden.when=ALWAYS
# Properties (Detail)
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
index 8d6b321..16ede06 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
@@ -48,6 +48,7 @@ import org.apache.isis.core.commons.factory.InstanceUtil;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -127,17 +128,12 @@ public class IsisSessionFactoryDefault implements IsisSessionFactory {
}
/**
- * Validate domain services lifecycle events.
+ * Validate domain service Ids are unique, and that the {@link PostConstruct} method, if present, must either
+ * take no arguments or take a {@link Map} object), and that the {@link PreDestroy} method, if present, must take
+ * no arguments.
*
* <p>
- * Specifically:
- * <ul>
- * <li>All {@link PostConstruct} methods must either take no arguments or take a {@link Properties} object.</li>
- * <li>All {@link PreDestroy} methods must take no arguments.</li>
- * </ul>
- *
- * <p>
- * If this isn't the case, then we fail fast.
+ * TODO: there seems to be some duplication/overlap with {@link ServiceInitializer}.
*/
private void validateServices(List<Object> serviceList) {
for (Object service : serviceList) {
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
index 575c2c9..3ab5b5f 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryAbstractTest_init_and_shutdown.java
@@ -41,6 +41,7 @@ import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.core.commons.config.IsisConfigurationDefault;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.specloader.ServiceInitializer;
import org.apache.isis.core.runtime.authentication.AuthenticationManager;
import org.apache.isis.core.runtime.authorization.AuthorizationManager;
import org.apache.isis.core.runtime.imageloader.TemplateImageLoader;
@@ -52,60 +53,6 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
public class IsisSessionFactoryAbstractTest_init_and_shutdown {
- public static class DomainServiceWithNoPostConstructOrPreDestroy {
- }
-
- public static class DomainServiceWithValidPostConstructNoParams {
- boolean called = false;
- @PostConstruct
- public void postConstruct() {
- called = true;
- }
- }
-
- public static class DomainServiceWithValidPostConstructPropertiesParam {
- boolean called = false;
- Map<String, String> props;
- @PostConstruct
- public void postConstruct(Map<String,String> props) {
- this.props = props;
- called = true;
- }
- }
-
- public static class DomainServiceWithValidPostConstructSubtypeOfPropertiesParam {
- boolean called = false;
- Object props;
- @PostConstruct
- public void postConstruct(Object props) {
- this.props = props;
- called = true;
- }
- }
-
- public static class DomainServiceWithInvalidPostConstructWrongNumberParams {
- @PostConstruct
- public void postConstruct(int i, Properties props) {}
- }
-
- public static class DomainServiceWithInvalidPostConstructWrongTypeOfParam {
- @PostConstruct
- public void postConstruct(int i) {}
- }
-
- public static class DomainServiceWithValidPreDestroyNoParams {
- boolean called = false;
- @PostConstruct
- public void postConstruct() {
- called = true;
- }
- }
-
- public static class DomainServiceWithInvalidPreDestroyWrongNumberParams {
- @PostConstruct
- public void postConstruct(int i) {}
- }
-
public static class DomainServiceWithSomeId {
public String getId() { return "someId"; }
}
@@ -114,8 +61,6 @@ public class IsisSessionFactoryAbstractTest_init_and_shutdown {
public String getId() { return "someId"; }
}
-
-
@Rule
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
@@ -142,8 +87,7 @@ public class IsisSessionFactoryAbstractTest_init_and_shutdown {
private IsisConfigurationDefault configuration;
private List<Object> serviceList;
- private IsisSessionFactoryDefault isf;
-
+ private IsisSessionFactory isf;
@Before
public void setUp() throws Exception {
@@ -154,90 +98,12 @@ public class IsisSessionFactoryAbstractTest_init_and_shutdown {
context.ignoring(mockDeploymentType, mockSpecificationLoader, mockTemplateImageLoader, mockAuthenticationManager, mockAuthorizationManager, mockUserProfileLoader, mockContainer, mockPersistenceSessionFactory, mockOidMarshaller);
}
- @Test
- public void emptyListOfServices() {
- isf = createIsisSessionFactory(mockContainer, serviceList);
- }
-
- @Test
- public void preConstruct_DomainServiceWithNoPostConstructOrPreDestroy() {
- serviceList.add(new DomainServiceWithNoPostConstructOrPreDestroy());
- isf = createIsisSessionFactory(mockContainer, serviceList);
-
- isf.init();
- isf.shutdown();
- }
-
- @Test
- public void preConstruct_DomainServiceWithValidPostConstructNoParams() {
- DomainServiceWithValidPostConstructNoParams domainService = new DomainServiceWithValidPostConstructNoParams();
- serviceList.add(domainService);
- isf = createIsisSessionFactory(mockContainer, serviceList);
- isf.init();
- assertThat(domainService.called,is(true));
- isf.shutdown();
- }
-
- @Test
- public void preConstruct_DomainServiceWithValidPostConstructPropertiesParam() {
- DomainServiceWithValidPostConstructPropertiesParam domainService = new DomainServiceWithValidPostConstructPropertiesParam();
- serviceList.add(domainService);
- isf = createIsisSessionFactory(mockContainer, serviceList);
- isf.init();
- assertThat(domainService.called,is(true));
- assertThat(domainService.props.get("foo"), is("bar"));
- isf.shutdown();
- }
-
- @Test
- public void preConstruct_DomainServiceWithValidPostConstructSubtypeOfPropertiesParam() {
- DomainServiceWithValidPostConstructSubtypeOfPropertiesParam domainService = new DomainServiceWithValidPostConstructSubtypeOfPropertiesParam();
- serviceList.add(domainService);
- isf = createIsisSessionFactory(mockContainer, serviceList);
- isf.init();
- assertThat(domainService.called,is(true));
- assertThat(domainService.props, is(not(nullValue())));
- isf.shutdown();
- }
-
- @Test(expected=IllegalStateException.class)
- public void preConstruct_DomainServiceWithInvalidPostConstructWrongNumberParams() {
- serviceList.add(new DomainServiceWithInvalidPostConstructWrongNumberParams());
- isf = createIsisSessionFactory(mockContainer, serviceList);
- }
-
- @Test(expected=IllegalStateException.class)
- public void preConstruct_DomainServiceWithInvalidPostConstructWrongTypeOfParam() {
- serviceList.add(new DomainServiceWithInvalidPostConstructWrongTypeOfParam());
- isf = createIsisSessionFactory(mockContainer, serviceList);
- }
-
- @Test
- public void preConstruct_DomainServiceWithValidPreDestroyNoParams() {
- DomainServiceWithValidPreDestroyNoParams domainService = new DomainServiceWithValidPreDestroyNoParams();
- serviceList.add(domainService);
- isf = createIsisSessionFactory(mockContainer, serviceList);
- isf.init();
- assertThat(domainService.called,is(true));
- isf.shutdown();
- }
-
- @Test(expected=IllegalStateException.class)
- public void preConstruct_DomainServiceWithInvalidPreDestroyWrongNumberParams() {
- serviceList.add(new DomainServiceWithInvalidPreDestroyWrongNumberParams());
- isf = createIsisSessionFactory(mockContainer, serviceList);
- }
@Test(expected=IllegalStateException.class)
public void validate_DomainServicesWithDuplicateIds() {
serviceList.add(new DomainServiceWithSomeId());
serviceList.add(new DomainServiceWithDuplicateId());
- isf = createIsisSessionFactory(mockContainer, serviceList);
- }
-
-
- private IsisSessionFactoryDefault createIsisSessionFactory(DomainObjectContainer container, List<Object> serviceList) {
- return new IsisSessionFactoryDefault(mockDeploymentType, configuration, mockSpecificationLoader, mockTemplateImageLoader, mockAuthenticationManager, mockAuthorizationManager, mockUserProfileLoader, mockPersistenceSessionFactory, container, serviceList, mockOidMarshaller) {
+ isf = new IsisSessionFactoryDefault(mockDeploymentType, configuration, mockSpecificationLoader, mockTemplateImageLoader, mockAuthenticationManager, mockAuthorizationManager, mockUserProfileLoader, mockPersistenceSessionFactory, mockContainer, serviceList, mockOidMarshaller) {
};
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/3364e761/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index 5c6edc8..b942bc8 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -470,7 +470,9 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
}
@PublishedAction
- public ToDoItem add(final ToDoItem toDoItem) {
+ public ToDoItem add(
+ @TypicalLength(20)
+ final ToDoItem toDoItem) {
getDependencies().add(toDoItem);
return this;
}
@@ -498,7 +500,9 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
return null;
}
- public ToDoItem remove(final ToDoItem toDoItem) {
+ public ToDoItem remove(
+ @TypicalLength(20)
+ final ToDoItem toDoItem) {
getDependencies().remove(toDoItem);
return this;
}