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 2015/01/15 11:28:28 UTC
[48/49] isis git commit: ISIS-970: working on ViewModelFacet,
renamed to RecreatableObjectFacet (to support the generalization of
this concept for domain objects with nature=EXTERNAL_ENTITY etc)
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetAbstract.java
deleted file mode 100644
index 5d20559..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetAbstract.java
+++ /dev/null
@@ -1,49 +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.object.viewmodel;
-
-import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
-
-public abstract class ViewModelFacetAbstract extends MarkerFacetAbstract implements ViewModelFacet {
-
- public static Class<? extends Facet> type() {
- return ViewModelFacet.class;
- }
-
- public ViewModelFacetAbstract(final FacetHolder holder) {
- super(type(), holder);
- }
-
- @Override
- public boolean isCloneable(Object pojo) {
- return pojo != null && pojo instanceof ViewModel.Cloneable;
- }
-
- @Override
- public Object clone(Object pojo) {
- ViewModel.Cloneable viewModelCloneable = (ViewModel.Cloneable) pojo;
- return viewModelCloneable.clone();
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetDeclarativeAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetDeclarativeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetDeclarativeAbstract.java
deleted file mode 100644
index 43b385f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacetDeclarativeAbstract.java
+++ /dev/null
@@ -1,154 +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.object.viewmodel;
-
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.memento.MementoService;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public abstract class ViewModelFacetDeclarativeAbstract extends ViewModelFacetAbstract {
-
- private final SpecificationLoader specificationLoader;
- private final ServicesInjector servicesInjector;
- private final AdapterManager adapterManager;
-
- public ViewModelFacetDeclarativeAbstract(
- final FacetHolder holder,
- final SpecificationLoader specificationLoader,
- final AdapterManager adapterManager,
- final ServicesInjector servicesInjector) {
- super(holder);
- this.specificationLoader = specificationLoader;
- this.servicesInjector = servicesInjector;
- this.adapterManager = adapterManager;
- }
-
- @Override
- public void initialize(Object viewModelPojo, String mementoStr) {
-
- final MementoService mementoService = servicesInjector.lookupService(MementoService.class);
- final BookmarkService bookmarkService = servicesInjector.lookupService(BookmarkService.class);
-
- final MementoService.Memento memento = mementoService.parse(mementoStr);
-
- final Set<String> mementoKeys = memento.keySet();
-
- // manually recreate the adapter in order to be able to query state via the metamodel
- ObjectAdapter viewModelAdapter = adapterManager.getAdapterFor(viewModelPojo);
- if(viewModelAdapter == null) {
- final ObjectSpecification objectSpecification = specificationLoader.loadSpecification(viewModelPojo.getClass());
- final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
- viewModelAdapter = adapterManager.mapRecreatedPojo(new RootOidDefault(objectSpecId, mementoStr, Oid.State.VIEWMODEL), viewModelPojo);
- }
-
- final ObjectSpecification spec = viewModelAdapter.getSpecification();
- final List<OneToOneAssociation> properties = spec.getProperties(Contributed.EXCLUDED);
- for (OneToOneAssociation property : properties) {
- final String propertyId = property.getId();
-
- Object propertyValue = null;
-
- if(mementoKeys.contains(propertyId)) {
- final Class<?> propertyType = property.getSpecification().getCorrespondingClass();
- propertyValue = memento.get(propertyId, propertyType);
- } else if(mementoKeys.contains(propertyId + ".bookmark")) {
- final Bookmark propertyValueBookmark = memento.get(propertyId + ".bookmark", Bookmark.class);
- propertyValue = bookmarkService.lookup(propertyValueBookmark);
- }
-
- if(propertyValue != null) {
- property.set(viewModelAdapter, adapterManager.adapterFor(propertyValue));
- }
- }
- }
-
- @Override
- public String memento(Object viewModelPojo) {
-
- final MementoService mementoService = servicesInjector.lookupService(MementoService.class);
- final BookmarkService bookmarkService = servicesInjector.lookupService(BookmarkService.class);
-
- final MementoService.Memento memento = mementoService.create();
-
- // this is horrible, but there's a catch-22 here...
- // we need an adapter in order to query the state of the object via the metamodel, on the other hand
- // we can't create an adapter without the identifier, which is what we're trying to derive
- // so... we create a temporary transient adapter, use it to wrap this adapter and interrogate this pojo,
- // then throw away that adapter (remove from the adapter map)
- boolean createdTemporaryAdapter = false;
- ObjectAdapter viewModelAdapter = adapterManager.getAdapterFor(viewModelPojo);
- if(viewModelAdapter == null) {
- final ObjectSpecification objectSpecification = specificationLoader.loadSpecification(viewModelPojo.getClass());
- final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
- viewModelAdapter = adapterManager.mapRecreatedPojo(RootOidDefault.create(objectSpecId, UUID.randomUUID().toString()), viewModelPojo);
-
- createdTemporaryAdapter = true;
- }
-
- try {
- final ObjectSpecification spec = viewModelAdapter.getSpecification();
- final List<OneToOneAssociation> properties = spec.getProperties(Contributed.EXCLUDED);
- for (OneToOneAssociation property : properties) {
- // ignore read-only
- if(!property.containsDoOpFacet(PropertySetterFacet.class)) {
- continue;
- }
- // ignore those explicitly annotated as @NotPersisted
- if(property.isNotPersisted()) {
- continue;
- }
-
- // otherwise, include
- final ObjectAdapter propertyValueAdapter = property.get(adapterManager.adapterFor(viewModelPojo));
- if(propertyValueAdapter != null) {
- final Object propertyValue = propertyValueAdapter.getObject();
- if(mementoService.canSet(propertyValue)) {
- memento.set(property.getId(), propertyValue);
- } else {
- final Bookmark propertyValueBookmark = bookmarkService.bookmarkFor(propertyValue);
- memento.set(property.getId() + ".bookmark", propertyValueBookmark);
- }
- }
- }
- return memento.asString();
- } finally {
- if(createdTemporaryAdapter) {
- adapterManager.removeAdapter(viewModelAdapter);
- }
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotation.java
deleted file mode 100644
index a7f94d9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotation.java
+++ /dev/null
@@ -1,38 +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.object.viewmodel.annotation;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacetDeclarativeAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-
-public class ViewModelFacetAnnotation extends ViewModelFacetDeclarativeAbstract {
-
- public ViewModelFacetAnnotation(
- final FacetHolder holder,
- final SpecificationLoader specificationLoader,
- final AdapterManager adapterManager,
- final ServicesInjector servicesInjector) {
- super(holder, specificationLoader, adapterManager, servicesInjector);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotationFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotationFactory.java
deleted file mode 100644
index a62e87e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/annotation/ViewModelFacetAnnotationFactory.java
+++ /dev/null
@@ -1,62 +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.object.viewmodel.annotation;
-
-import org.apache.isis.applib.annotation.ViewModel;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-
-public class ViewModelFacetAnnotationFactory extends FacetFactoryAbstract implements ServicesInjectorAware, AdapterManagerAware {
-
- private ServicesInjector servicesInjector;
- private AdapterManager adapterManager;
-
- public ViewModelFacetAnnotationFactory() {
- super(FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final ViewModel annotation = Annotations.getAnnotation(processClassContext.getCls(), ViewModel.class);
- FacetUtil.addFacet(create(annotation, processClassContext.getFacetHolder()));
- }
-
- private ViewModelFacet create(final ViewModel annotation, final FacetHolder holder) {
- return annotation != null ? new ViewModelFacetAnnotation(holder, getSpecificationLoader(), adapterManager, servicesInjector) : null;
- }
-
- @Override
- public void setServicesInjector(ServicesInjector servicesInjector) {
- this.servicesInjector = servicesInjector;
- }
-
- @Override
- public void setAdapterManager(AdapterManager adapterManager) {
- this.adapterManager = adapterManager;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterface.java
deleted file mode 100644
index 6c68898..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterface.java
+++ /dev/null
@@ -1,44 +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.object.viewmodel.iface;
-
-import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacetAbstract;
-
-public class ViewModelFacetInterface extends ViewModelFacetAbstract {
-
- public ViewModelFacetInterface(final FacetHolder holder) {
- super(holder);
- }
-
- @Override
- public void initialize(Object pojo, String memento) {
- final ViewModel viewModel = (ViewModel)pojo;
- viewModel.viewModelInit(memento);
- }
-
- @Override
- public String memento(Object pojo) {
- final ViewModel viewModel = (ViewModel)pojo;
- return viewModel.viewModelMemento();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterfaceFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterfaceFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterfaceFactory.java
deleted file mode 100644
index bac3b4d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/iface/ViewModelFacetInterfaceFactory.java
+++ /dev/null
@@ -1,45 +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.object.viewmodel.iface;
-
-import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
-
-public class ViewModelFacetInterfaceFactory extends FacetFactoryAbstract {
-
- public ViewModelFacetInterfaceFactory() {
- super(FeatureType.OBJECTS_ONLY);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- boolean implementsInterface = ViewModel.class.isAssignableFrom(processClassContext.getCls());
- FacetUtil.addFacet(create(implementsInterface, processClassContext.getFacetHolder()));
- }
-
- private ViewModelFacet create(final boolean implementsInterface, final FacetHolder holder) {
- return !implementsInterface ? null : new ViewModelFacetInterface(holder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
index f864ac6..7bc1e1a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/container/DomainObjectContainerDefault.java
@@ -52,7 +52,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.services.container.query.QueryFindByPattern;
import org.apache.isis.core.metamodel.services.container.query.QueryFindByTitle;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -98,7 +98,7 @@ public class DomainObjectContainerDefault implements DomainObjectContainer, Que
@Override
public <T> T newViewModelInstance(Class<T> ofClass, String memento) {
final ObjectSpecification spec = getSpecificationLookup().loadSpecification(ofClass);
- if (!spec.containsFacet(ViewModelFacet.class)) {
+ if (!spec.containsFacet(RecreatableObjectFacet.class)) {
throw new IsisException("Type must be a ViewModel: " + ofClass);
}
final ObjectAdapter adapter = doCreateViewModelInstance(spec, memento);
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 0a1c7c2..910684a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -50,7 +50,7 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
import org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.facets.object.wizard.WizardFacet;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.*;
@@ -299,12 +299,12 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
@Override
public boolean isViewModel() {
- return containsFacet(ViewModelFacet.class);
+ return containsFacet(RecreatableObjectFacet.class);
}
@Override
public boolean isViewModelCloneable(ObjectAdapter targetAdapter) {
- final ViewModelFacet facet = getFacet(ViewModelFacet.class);
+ final RecreatableObjectFacet facet = getFacet(RecreatableObjectFacet.class);
if(facet == null) {
return false;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index 72c935d..8ea541b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -136,6 +136,7 @@ import org.apache.isis.core.metamodel.facets.object.parseable.annotcfg.Parseable
import org.apache.isis.core.metamodel.facets.object.plural.annotation.PluralAnnotationFacetFactory;
import org.apache.isis.core.metamodel.facets.object.plural.staticmethod.PluralFacetMethodFactory;
import org.apache.isis.core.metamodel.facets.object.publishedobject.annotation.PublishedObjectFacetAnnotationFactory;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetFactory;
import org.apache.isis.core.metamodel.facets.object.regex.annotation.RegExFacetOnTypeAnnotationFactory;
import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetViaMethodsFactory;
@@ -143,10 +144,8 @@ import org.apache.isis.core.metamodel.facets.object.typicallen.annotation.Typica
import org.apache.isis.core.metamodel.facets.object.validating.mustsatisfyspec.MustSatisfySpecificationOnTypeFacetFactory;
import org.apache.isis.core.metamodel.facets.object.validating.validateobject.method.ValidateObjectFacetMethodFactory;
import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetAnnotationOrConfigurationFactory;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.DisabledFacetOnCollectionDerivedFromViewModelFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.DisabledFacetOnPropertyDerivedFromViewModelFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.annotation.ViewModelFacetAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.iface.ViewModelFacetInterfaceFactory;
+import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.recreatable.DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory;
import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
import org.apache.isis.core.metamodel.facets.param.choices.enums.ActionParameterChoicesFacetDerivedFromChoicesFacetFactory;
@@ -402,10 +401,9 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
addFactory(ImmutableFacetMarkerInterfaceFactory.class);
- addFactory(ViewModelFacetAnnotationFactory.class);
- addFactory(ViewModelFacetInterfaceFactory.class);
- addFactory(DisabledFacetOnPropertyDerivedFromViewModelFacetFactory.class);
- addFactory(DisabledFacetOnCollectionDerivedFromViewModelFacetFactory.class);
+ addFactory(RecreatableObjectFacetFactory.class);
+ addFactory(DisabledFacetOnPropertyDerivedFromRecreatableObjectFacetFactory.class);
+ addFactory(DisabledFacetOnCollectionDerivedFromRecreatableObjectFacetFactory.class);
addFactory(MaxLengthFacetOnTypeAnnotationFactory.class);
addFactory(MaxLengthFacetOnPropertyAnnotationFactory.class);
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactoryTest.java
new file mode 100644
index 0000000..fe02bdb
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactoryTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.object.recreatable;
+
+import org.apache.isis.applib.ViewModel;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
+
+public class RecreatableObjectFacetFactoryTest extends AbstractFacetFactoryTest {
+
+ private RecreatableObjectFacetFactory facetFactory;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ facetFactory = new RecreatableObjectFacetFactory();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ facetFactory = null;
+ super.tearDown();
+ }
+
+ public void testViewModelInterfacePickedUpOnClassAndDefaultsToAlways() {
+ class Customer implements ViewModel {
+
+ @Override
+ public String viewModelMemento() {
+ return null;
+ }
+
+ @Override
+ public void viewModelInit(String memento) {
+ }
+
+ }
+
+ facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(RecreatableObjectFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof RecreatableObjectFacetForViewModelInterface);
+
+ assertNoMethodsRemoved();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelInteraceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelInteraceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelInteraceFacetFactoryTest.java
deleted file mode 100644
index 4965c07..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelInteraceFacetFactoryTest.java
+++ /dev/null
@@ -1,69 +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.object.viewmodel;
-
-import org.apache.isis.applib.ViewModel;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.iface.ViewModelFacetInterface;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.iface.ViewModelFacetInterfaceFactory;
-
-public class ViewModelInteraceFacetFactoryTest extends AbstractFacetFactoryTest {
-
- private ViewModelFacetInterfaceFactory facetFactory;
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
-
- facetFactory = new ViewModelFacetInterfaceFactory();
- }
-
- @Override
- protected void tearDown() throws Exception {
- facetFactory = null;
- super.tearDown();
- }
-
- public void testViewModelInterfacePickedUpOnClassAndDefaultsToAlways() {
- class Customer implements ViewModel {
-
- @Override
- public String viewModelMemento() {
- return null;
- }
-
- @Override
- public void viewModelInit(String memento) {
- }
-
- }
-
- facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
-
- final Facet facet = facetedMethod.getFacet(ViewModelFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof ViewModelFacetInterface);
-
- assertNoMethodsRemoved();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreatorDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreatorDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreatorDefault.java
index b8d2975..6097375 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreatorDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreatorDefault.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.runtime.persistence.adaptermanager;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -34,9 +34,9 @@ class PojoRecreatorDefault implements PojoRecreator {
if(oid.isViewModel()) {
// initialize the view model pojo from the oid's identifier
- final ViewModelFacet facet = spec.getFacet(ViewModelFacet.class);
+ final RecreatableObjectFacet facet = spec.getFacet(RecreatableObjectFacet.class);
if(facet == null) {
- throw new IllegalArgumentException("spec does not have ViewModelFacet; " + oid.toString() + "; spec is " + spec.getFullIdentifier());
+ throw new IllegalArgumentException("spec does not have RecreatableObjectFacet; " + oid.toString() + "; spec is " + spec.getFullIdentifier());
}
// a slight compromise? close enough.
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IdentifierGeneratorForDataNucleus.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IdentifierGeneratorForDataNucleus.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IdentifierGeneratorForDataNucleus.java
index 004b0e9..8ec253a 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IdentifierGeneratorForDataNucleus.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/IdentifierGeneratorForDataNucleus.java
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -55,9 +55,9 @@ class IdentifierGeneratorForDataNucleus implements IdentifierGenerator {
public String createTransientIdentifierFor(ObjectSpecId objectSpecId, Object pojo) {
final ObjectSpecification spec = getSpecificationLoader().lookupBySpecId(objectSpecId);
- final ViewModelFacet viewModelFacet = spec.getFacet(ViewModelFacet.class);
- if(viewModelFacet != null) {
- return viewModelFacet.memento(pojo);
+ final RecreatableObjectFacet recreatableObjectFacet = spec.getFacet(RecreatableObjectFacet.class);
+ if(recreatableObjectFacet != null) {
+ return recreatableObjectFacet.memento(pojo);
}
return UUID.randomUUID().toString();
@@ -79,9 +79,9 @@ class IdentifierGeneratorForDataNucleus implements IdentifierGenerator {
}
final ObjectSpecification spec = getSpecificationLookup().lookupBySpecId(objectSpecId);
- if(spec.containsFacet(ViewModelFacet.class)) {
- ViewModelFacet viewModelFacet = spec.getFacet(ViewModelFacet.class);
- return viewModelFacet.memento(pojo);
+ if(spec.containsFacet(RecreatableObjectFacet.class)) {
+ RecreatableObjectFacet recreatableObjectFacet = spec.getFacet(RecreatableObjectFacet.class);
+ return recreatableObjectFacet.memento(pojo);
}
final Object jdoOid = getJdoPersistenceManager().getObjectId(pojo);
return JdoObjectIdSerializer.toOidIdentifier(jdoOid);
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
index c76f004..d7ca1be 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
@@ -25,7 +25,7 @@ import org.apache.isis.core.commons.debug.DebuggableWithTitle;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.*;
import org.apache.isis.core.metamodel.adapter.oid.Oid.State;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
@@ -59,7 +59,7 @@ public class OidGenerator implements DebuggableWithTitle {
final ObjectSpecification spec = getSpecificationLookup().loadSpecification(pojo.getClass());
final ObjectSpecId objectSpecId = spec.getSpecId();
final String transientIdentifier = identifierGenerator.createTransientIdentifierFor(objectSpecId, pojo);
- final State state = spec.containsDoOpFacet(ViewModelFacet.class)? State.VIEWMODEL:State.TRANSIENT;
+ final State state = spec.containsDoOpFacet(RecreatableObjectFacet.class)? State.VIEWMODEL:State.TRANSIENT;
return new RootOidDefault(objectSpecId, transientIdentifier, state);
}
@@ -95,7 +95,7 @@ public class OidGenerator implements DebuggableWithTitle {
final String persistentIdentifier = identifierGenerator.createPersistentIdentifierFor(objectSpecId, pojo, transientRootOid);
final ObjectSpecification spec = getSpecificationLookup().lookupBySpecId(objectSpecId);
- final State state = spec != null && spec.containsFacet(ViewModelFacet.class)? State.VIEWMODEL:State.PERSISTENT;
+ final State state = spec != null && spec.containsFacet(RecreatableObjectFacet.class)? State.VIEWMODEL:State.PERSISTENT;
return new RootOidDefault(objectSpecId, persistentIdentifier, state);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 8d4c1cb..8e7f405 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetUtils;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.services.ServiceUtil;
import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
@@ -320,7 +320,7 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
LOG.debug("creating view model instance of " + objectSpec);
}
final Object pojo = objectSpec.createObject();
- ViewModelFacet facet = objectSpec.getFacet(ViewModelFacet.class);
+ RecreatableObjectFacet facet = objectSpec.getFacet(RecreatableObjectFacet.class);
facet.initialize(pojo, memento);
final ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
return objectSpec.initialize(adapter);
http://git-wip-us.apache.org/repos/asf/isis/blob/bffc79a5/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
index a4856ba..086fe8a 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
@@ -22,7 +22,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
+import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
@@ -72,7 +72,7 @@ public final class OidUtils {
// TODO: the logic to figure out which PersistenceSession API to call should be pushed down into PersistenceSession itself.
final PersistenceSession persistenceSession = rendererContext.getPersistenceSession();
- if(spec.containsFacet(ViewModelFacet.class)) {
+ if(spec.containsFacet(RecreatableObjectFacet.class)) {
// this is a hack; the RO viewer when rendering the URL for the view model loses the "view model" indicator
// ("*") from the specId, meaning that the marshalling logic above in RootOidDefault.deString() creates an