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 2018/09/30 04:18:22 UTC
[isis] 01/06: ISIS-1976: remove InstanceAbstract
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 9072e5208cf1b4f0a832553dce8afc02ee664391
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Sep 30 04:47:42 2018 +0200
ISIS-1976: remove InstanceAbstract
Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
.../isis/core/metamodel/spec/InstanceAbstract.java | 63 ----------------------
.../runtime/persistence/adapter/PojoAdapter.java | 13 ++---
2 files changed, 7 insertions(+), 69 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InstanceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InstanceAbstract.java
deleted file mode 100644
index 3d8a875..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/InstanceAbstract.java
+++ /dev/null
@@ -1,63 +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.spec;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-public abstract class InstanceAbstract implements Instance {
-
- private Specification specification;
-
- protected InstanceAbstract() {
- this(null, null);
- }
-
- protected InstanceAbstract(final ObjectAdapter owner) {
- this(owner, null);
- }
-
- protected InstanceAbstract(final ObjectAdapter owner, final Specification specification) {
- this.specification = specification;
- }
-
- @Override
- public Specification getSpecification() {
- if (specification == null) {
- specification = loadSpecification();
- }
- return specification;
- }
-
- /**
- * Allows the specification to be lazily loaded.
- */
- protected Specification loadSpecification() {
- return null;
- }
-
- /**
- * Allows subclasses to get specification without necessarily triggering
- * {@link #loadSpecification() loading} if not yet known.
- */
- protected final Specification getSpecificationNoLoad() {
- return specification;
- }
-
-}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index 8bcf6e7..1cd3690 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -24,6 +24,7 @@ import static org.apache.isis.commons.internal.base._With.requires;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.commons.util.ToString;
@@ -35,13 +36,12 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
import org.apache.isis.core.metamodel.spec.Instance;
-import org.apache.isis.core.metamodel.spec.InstanceAbstract;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.Specification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-public final class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
+public final class PojoAdapter implements ObjectAdapter {
private final static Logger LOG = LoggerFactory.getLogger(PojoAdapter.class);
@@ -91,17 +91,18 @@ public final class PojoAdapter extends InstanceAbstract implements ObjectAdapter
}
// -- getSpecification
+
+ final _Lazy<ObjectSpecification> objectSpecification = _Lazy.of(this::loadSpecification);
/**
* Downcasts {@link #getSpecification()}.
*/
@Override
public ObjectSpecification getSpecification() {
- return (ObjectSpecification) super.getSpecification();
+ return objectSpecification.get();
}
- @Override
- protected ObjectSpecification loadSpecification() {
+ private ObjectSpecification loadSpecification() {
final Class<?> aClass = getObject().getClass();
final ObjectSpecification specification = specificationLoader.loadSpecification(aClass);
return specification;
@@ -240,7 +241,7 @@ public final class PojoAdapter extends InstanceAbstract implements ObjectAdapter
str.append(":-");
}
str.setAddComma();
- if (getSpecificationNoLoad() == null) {
+ if (!objectSpecification.isMemoized()) {
str.append("class", getObject().getClass().getName());
} else {
str.append("specification", getSpecification().getShortIdentifier());