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 2014/01/30 09:22:50 UTC

[3/5] git commit: ISIS-660, ISIS-272: fix to finder for interactions

ISIS-660, ISIS-272: fix to finder for interactions

findByGuid should've been findByTransactionId

also:
- ISIS-272: adding ValueSemanticsProvider for UUID.
- making InteractionsJdo#completedAt disabled.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/dc0fb67b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/dc0fb67b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/dc0fb67b

Branch: refs/heads/master
Commit: dc0fb67b269359fb146866c8fa4231f02ed0d45d
Parents: 6b014b3
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 29 00:31:30 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 29 00:31:30 2014 +0000

----------------------------------------------------------------------
 .../service/interaction/InteractionJdo.java     |   5 +-
 .../interaction/InteractionRepository.java      |   2 +-
 .../interaction/InteractionServiceJdo.java      |   6 +-
 .../facets/value/uuid/UUIDValueFacet.java       |  32 ++++++
 .../value/uuid/UUIDValueSemanticsProvider.java  | 113 +++++++++++++++++++
 .../value/uuid/UUIDValueTypeFacetFactory.java   |  44 ++++++++
 .../dflt/ProgrammingModelFacetsJava5.java       |   2 +
 .../java/webapp/background/Interactions.java    |   5 +-
 8 files changed, 200 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionJdo.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionJdo.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionJdo.java
index 3798efa..71a0789 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionJdo.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionJdo.java
@@ -55,10 +55,10 @@ import org.apache.isis.applib.util.ObjectContracts;
         table="IsisInteraction")
 @javax.jdo.annotations.Queries( {
     @javax.jdo.annotations.Query(
-            name="findByGuid", language="JDOQL",  
+            name="findByTransactionId", language="JDOQL",  
             value="SELECT "
                     + "FROM org.apache.isis.objectstore.jdo.applib.service.interaction.InteractionJdo "
-                    + "WHERE guid == :guid"),
+                    + "WHERE transactionId == :transactionId"),
     @javax.jdo.annotations.Query(
             name="findCurrent", language="JDOQL",  
             value="SELECT "
@@ -234,6 +234,7 @@ public class InteractionJdo implements Interaction, HasTransactionId {
     @javax.jdo.annotations.Persistent
     @javax.jdo.annotations.Column(allowsNull="true")
     @MemberOrder(name="Timings", sequence = "4")
+    @Disabled
     public Timestamp getCompletedAt() {
         return completedAt;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionRepository.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionRepository.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionRepository.java
index b998701..6b95f3f 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionRepository.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionRepository.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.annotation.ActionSemantics.Of;
 public interface InteractionRepository {
 
     @ActionSemantics(Of.SAFE)
-    InteractionJdo findByGuid(final UUID guid);
+    InteractionJdo findByTransactionId(final UUID transactionId);
     
     @ActionSemantics(Of.SAFE)
     List<InteractionJdo> currentInteractions();

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionServiceJdo.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionServiceJdo.java b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionServiceJdo.java
index 1a47743..d8d0420 100644
--- a/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionServiceJdo.java
+++ b/component/objectstore/jdo/jdo-applib/src/main/java/org/apache/isis/objectstore/jdo/applib/service/interaction/InteractionServiceJdo.java
@@ -74,12 +74,12 @@ public class InteractionServiceJdo extends AbstractService implements Interactio
     }
 
     @Override
-    public InteractionJdo findByGuid(UUID guid) {
+    public InteractionJdo findByTransactionId(final UUID transactionId) {
         persistCurrentInteractionIfRequired();
         return firstMatch(
                 new QueryDefault<InteractionJdo>(InteractionJdo.class, 
-                        "findByGuid", 
-                        "guid", guid.toString()));
+                        "findByTransactionId", 
+                        "transactionId", transactionId.toString()));
     }
 
     private void persistCurrentInteractionIfRequired() {

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueFacet.java
new file mode 100644
index 0000000..6e52019
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueFacet.java
@@ -0,0 +1,32 @@
+/*
+ *  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.progmodel.facets.value.uuid;
+
+import java.util.UUID;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+
+public interface UUIDValueFacet extends Facet {
+    UUID uuidValue(ObjectAdapter object);
+
+    ObjectAdapter createValue(UUID value);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueSemanticsProvider.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueSemanticsProvider.java
new file mode 100644
index 0000000..917c401
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueSemanticsProvider.java
@@ -0,0 +1,113 @@
+/*
+ *  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.progmodel.facets.value.uuid;
+
+import java.util.UUID;
+
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.progmodel.facets.object.value.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.core.progmodel.facets.object.value.ValueSemanticsProviderContext;
+
+public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbstract<UUID> implements UUIDValueFacet {
+
+    public static Class<? extends Facet> type() {
+        return UUIDValueFacet.class;
+    }
+
+    public static final int TYPICAL_LENGTH = 36;
+    private static final UUID DEFAULT_VALUE = null; // no default
+
+    /**
+     * Required because implementation of {@link Parser} and
+     * {@link EncoderDecoder}.
+     */
+    public UUIDValueSemanticsProvider() {
+        this(null, null, null);
+    }
+
+    public UUIDValueSemanticsProvider(final FacetHolder holder, final IsisConfiguration configuration, final ValueSemanticsProviderContext context) {
+        super(type(), holder, UUID.class, TYPICAL_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE, configuration, context);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // Parser
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    protected UUID doParse(final Object context, final String entry) {
+        if (entry.trim().equals("")) {
+            return null;
+        } else {
+            return UUID.fromString(entry);
+        }
+    }
+
+    @Override
+    public String titleString(final Object object, final Localization localization) {
+        return object == null ? "" : object.toString();
+    }
+
+    @Override
+    public String titleStringWithMask(final Object object, final String usingMask) {
+        return titleString(object, null);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // EncoderDecoder
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    protected String doEncode(final Object object) {
+        return object.toString();
+    }
+
+    @Override
+    protected UUID doRestore(final String data) {
+        return UUID.fromString(data);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // UuidValueFacet
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    public UUID uuidValue(final ObjectAdapter object) {
+        return object == null ? null : (UUID) object.getObject();
+    }
+
+    @Override
+    public ObjectAdapter createValue(final UUID value) {
+        return getAdapterManager().adapterFor(value);
+    }
+
+    // /////// toString ///////
+
+    @Override
+    public String toString() {
+        return "UuidValueSemanticsProvider";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueTypeFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueTypeFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueTypeFacetFactory.java
new file mode 100644
index 0000000..1ce8cdb
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/value/uuid/UUIDValueTypeFacetFactory.java
@@ -0,0 +1,44 @@
+/*
+ *  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.progmodel.facets.value.uuid;
+
+import java.util.UUID;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.progmodel.facets.object.value.ValueUsingValueSemanticsProviderFacetFactory;
+
+public class UUIDValueTypeFacetFactory extends ValueUsingValueSemanticsProviderFacetFactory<UUID> {
+
+    public UUIDValueTypeFacetFactory() {
+        super();
+    }
+
+    @Override
+    public void process(final ProcessClassContext processClassContext) {
+        final Class<?> type = processClassContext.getCls();
+        final FacetHolder holder = processClassContext.getFacetHolder();
+
+        if (type != UUID.class) {
+            return;
+        }
+        addFacets(new UUIDValueSemanticsProvider(holder, getConfiguration(), getContext()));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/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 b8c6967..f3fc8f8 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
@@ -212,6 +212,7 @@ import org.apache.isis.core.progmodel.facets.value.timesql.JavaSqlTimeValueTypeF
 import org.apache.isis.core.progmodel.facets.value.timestamp.TimeStampValueTypeFacetFactory;
 import org.apache.isis.core.progmodel.facets.value.timestampsql.JavaSqlTimeStampValueTypeFacetFactory;
 import org.apache.isis.core.progmodel.facets.value.url.URLValueTypeFacetFactory;
+import org.apache.isis.core.progmodel.facets.value.uuid.UUIDValueTypeFacetFactory;
 
 public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract {
 
@@ -445,6 +446,7 @@ public final class ProgrammingModelFacetsJava5 extends ProgrammingModelAbstract
         addFactory(JavaSqlTimeStampValueTypeFacetFactory.class);
         addFactory(StringValueTypeFacetFactory.class);
         addFactory(URLValueTypeFacetFactory.class);
+        addFactory(UUIDValueTypeFacetFactory.class);
 
         addFactory(JavaAwtImageValueTypeFacetFactory.class);
         

http://git-wip-us.apache.org/repos/asf/isis/blob/dc0fb67b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/background/Interactions.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/background/Interactions.java b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/background/Interactions.java
index 3b23cd5..e132426 100644
--- a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/background/Interactions.java
+++ b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/java/webapp/background/Interactions.java
@@ -20,7 +20,6 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.objectstore.jdo.applib.service.interaction.InteractionJdo;
 import org.apache.isis.objectstore.jdo.applib.service.interaction.InteractionServiceJdo;
@@ -46,8 +45,8 @@ public class Interactions extends InteractionServiceJdo {
     @MemberOrder(name="Background Tasks", sequence="10.3")
     @Prototype
     @Override
-    public InteractionJdo findByGuid(UUID guid) {
-        return super.findByGuid(guid);
+    public InteractionJdo findByTransactionId(UUID transactionId) {
+        return super.findByTransactionId(transactionId);
     }
     
 }