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 2020/01/19 17:11:04 UTC

[isis] 02/04: ISIS-2158: decouple core from encodable (commons internal package)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit b67cb1ea143d7465825cb44067540cb3f6bb31cf
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jan 19 18:04:52 2020 +0100

    ISIS-2158: decouple core from encodable (commons internal package)
---
 .../session/init/InitialisationSession.java        |  7 ----
 .../authentication/AuthenticationSession.java      |  3 +-
 .../AuthenticationSessionAbstract.java             | 22 -----------
 .../authentication/health/HealthAuthSession.java   |  6 ---
 .../singleuser/SingleUserSession.java              | 22 +----------
 .../authentication/standard/SimpleSession.java     |  6 ---
 .../isis/security/EncodabilityContractTest.java    | 46 +++++++++-------------
 .../SimpleSessionEncodabilityNoRolesTest.java      |  4 +-
 .../SimpleSessionEncodabilityWithRolesTest.java    |  4 +-
 9 files changed, 25 insertions(+), 95 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/session/init/InitialisationSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/session/init/InitialisationSession.java
index ce2950a..3c6baeb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/session/init/InitialisationSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/session/init/InitialisationSession.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.runtime.session.init;
 
-import java.io.IOException;
-
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
 import org.apache.isis.core.security.authentication.AuthenticationSessionAbstract;
 
 public final class InitialisationSession extends AuthenticationSessionAbstract {
@@ -32,8 +29,4 @@ public final class InitialisationSession extends AuthenticationSessionAbstract {
         super("initialisation", "");
     }
 
-    public InitialisationSession(final DataInputExtended input) throws IOException {
-        super(input);
-    }
-
 }
\ No newline at end of file
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
index f80b1c0..0b96848 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSession.java
@@ -23,13 +23,12 @@ import java.io.Serializable;
 
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.commons.internal.encoding.Encodable;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 
 /**
  * The representation within the system of an authenticated user.
  */
-public interface AuthenticationSession extends Encodable, Serializable {
+public interface AuthenticationSession extends Serializable {
 
     /**
      * The name of the authenticated user; for display purposes only.
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
index 8103089..3f62fcf 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionAbstract.java
@@ -19,9 +19,7 @@
 
 package org.apache.isis.core.security.authentication;
 
-import java.io.IOException;
 import java.io.Serializable;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,8 +34,6 @@ import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.internal.collections._Sets;
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
-import org.apache.isis.core.commons.internal.encoding.DataOutputExtended;
 
 import static org.apache.isis.core.commons.internal.base._NullSafe.stream;
 
@@ -72,24 +68,6 @@ public abstract class AuthenticationSessionAbstract implements AuthenticationSes
         // nothing to do
     }
 
-    public AuthenticationSessionAbstract(final DataInputExtended input) throws IOException {
-        this.name = input.readUTF();
-        this.roles.addAll(Arrays.asList(input.readUTFs()));
-        
-        this.validationCode = input.readUTF();
-        this.messageBroker = new MessageBroker();
-        // nothing to do
-    }
-
-    // -- encode
-
-    @Override
-    public void encode(final DataOutputExtended output) throws IOException {
-        output.writeUTF(getUserName());
-        output.writeUTFs(roles.toArray(new String[] {}));
-        output.writeUTF(validationCode);
-    }
-
     // -- User Name
 
     @Override
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/health/HealthAuthSession.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/health/HealthAuthSession.java
index 11db2b2..6d8c257 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/health/HealthAuthSession.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/health/HealthAuthSession.java
@@ -19,10 +19,8 @@
 
 package org.apache.isis.core.security.authentication.health;
 
-import java.io.IOException;
 import java.util.stream.Stream;
 
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
 import org.apache.isis.core.security.authentication.AuthenticationSessionAbstract;
 
 public class HealthAuthSession extends AuthenticationSessionAbstract {
@@ -37,9 +35,5 @@ public class HealthAuthSession extends AuthenticationSessionAbstract {
         super(USER_NAME, Stream.of(ROLE), CODE);
     }
 
-    public HealthAuthSession(final DataInputExtended input) throws IOException {
-        super(input);
-    }
-
 
 }
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/singleuser/SingleUserSession.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/singleuser/SingleUserSession.java
index 01c0fab..4aac697 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/singleuser/SingleUserSession.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/singleuser/SingleUserSession.java
@@ -19,14 +19,9 @@
 
 package org.apache.isis.core.security.authentication.singleuser;
 
-import java.io.IOException;
-
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
-import org.apache.isis.core.commons.internal.encoding.DataOutputExtended;
-import org.apache.isis.core.commons.internal.encoding.Encodable;
 import org.apache.isis.core.security.authentication.AuthenticationSessionAbstract;
 
-public final class SingleUserSession extends AuthenticationSessionAbstract implements Encodable {
+public final class SingleUserSession extends AuthenticationSessionAbstract {
 
     private static final long serialVersionUID = 1L;
 
@@ -41,21 +36,6 @@ public final class SingleUserSession extends AuthenticationSessionAbstract imple
 
     public SingleUserSession(final String code) {
         super(DEFAULT_USER_NAME, code);
-        initialized();
-    }
-
-    public SingleUserSession(final DataInputExtended input) throws IOException {
-        super(input);
-        initialized();
-    }
-
-    @Override
-    public void encode(final DataOutputExtended output) throws IOException {
-        super.encode(output);
-    }
-
-    private void initialized() {
-        // nothing to do
     }
 
 }
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleSession.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleSession.java
index b060c9f..14024cc 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleSession.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/standard/SimpleSession.java
@@ -19,11 +19,9 @@
 
 package org.apache.isis.core.security.authentication.standard;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.stream.Stream;
 
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
 import org.apache.isis.core.security.authentication.AuthenticationSessionAbstract;
 
 import static org.apache.isis.core.commons.internal.base._NullSafe.stream;
@@ -51,10 +49,6 @@ public class SimpleSession extends AuthenticationSessionAbstract {
         super(name, roles, code);
     }
 
-    public SimpleSession(final DataInputExtended input) throws IOException {
-        super(input);
-    }
-
     @Getter @Setter
     private Type type = Type.DEFAULT;
 
diff --git a/core/security/src/test/java/org/apache/isis/security/EncodabilityContractTest.java b/core/security/src/test/java/org/apache/isis/security/EncodabilityContractTest.java
index 71dab7a..15b138a 100644
--- a/core/security/src/test/java/org/apache/isis/security/EncodabilityContractTest.java
+++ b/core/security/src/test/java/org/apache/isis/security/EncodabilityContractTest.java
@@ -20,8 +20,11 @@
 package org.apache.isis.security;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
+import java.io.Serializable;
 
 import org.jmock.Mockery;
 import org.jmock.integration.junit4.JUnit4Mockery;
@@ -31,20 +34,17 @@ import org.junit.Test;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
 
-import org.apache.isis.core.commons.internal.encoding.DataInputExtended;
-import org.apache.isis.core.commons.internal.encoding.DataInputStreamExtended;
-import org.apache.isis.core.commons.internal.encoding.DataOutputStreamExtended;
-import org.apache.isis.core.commons.internal.encoding.Encodable;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
 
+import lombok.val;
+
 public abstract class EncodabilityContractTest {
 
     protected final Mockery context = new JUnit4Mockery();
     protected AuthenticationSession mockAuthSession;
 
-    protected Encodable encodable;
+    protected Serializable serializable;
 
     public EncodabilityContractTest() {
         super();
@@ -52,41 +52,33 @@ public abstract class EncodabilityContractTest {
 
     @Before
     public void setUp() throws Exception {
-        encodable = createEncodable();
+        serializable = createEncodable();
         mockAuthSession = context.mock(AuthenticationSession.class);
     }
 
     /**
      * Hook for subclasses to provide object to be tested.
      */
-    protected abstract Encodable createEncodable();
+    protected abstract Serializable createEncodable();
 
     @Test
     public void shouldImplementEncodeable() throws Exception {
-        assertThat(encodable, is(instanceOf(Encodable.class)));
-    }
-
-    @Test
-    public void shouldHaveOneArgConstructorThatAcceptsInput() {
-        final Object o = encodable;
-        try {
-            o.getClass().getConstructor(DataInputExtended.class);
-        } catch (final Exception e) {
-            fail("could not locate 1-arg constructor accepting a DataInputExtended instance");
-        }
+        assertThat(serializable, is(instanceOf(Serializable.class)));
     }
 
     @Test
-    public void shouldRoundTrip() throws IOException {
+    public void shouldRoundTrip() throws IOException, ClassNotFoundException {
         final PipedInputStream pipedInputStream = new PipedInputStream();
         final PipedOutputStream pipedOutputStream = new PipedOutputStream(pipedInputStream);
-        final DataOutputStreamExtended outputImpl = new DataOutputStreamExtended(pipedOutputStream);
-        final DataInputStreamExtended inputImpl = new DataInputStreamExtended(pipedInputStream);
-
-        outputImpl.writeEncodable(encodable);
-        final Object decodedEncodable = inputImpl.readEncodable(Object.class);
-
-        assertRoundtripped(decodedEncodable, encodable);
+        
+        try(val out = new ObjectOutputStream(pipedOutputStream)) {
+            out.writeObject(serializable);
+        
+            val in = new ObjectInputStream(pipedInputStream);
+            val decodedObject = in.readObject();
+
+            assertRoundtripped(decodedObject, serializable);
+        }
     }
 
     protected abstract void assertRoundtripped(Object decodedEncodable, Object originalEncodable);
diff --git a/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityNoRolesTest.java b/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityNoRolesTest.java
index 0478512..a2df28d 100644
--- a/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityNoRolesTest.java
+++ b/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityNoRolesTest.java
@@ -19,19 +19,19 @@
 
 package org.apache.isis.security.authentication.standard;
 
+import java.io.Serializable;
 import java.util.Collections;
 
 import org.jmock.integration.junit4.JMock;
 import org.junit.runner.RunWith;
 
-import org.apache.isis.core.commons.internal.encoding.Encodable;
 import org.apache.isis.core.security.authentication.standard.SimpleSession;
 
 @RunWith(JMock.class)
 public class SimpleSessionEncodabilityNoRolesTest extends SimpleSessionEncodabilityTestAbstract {
 
     @Override
-    protected Encodable createEncodable() {
+    protected Serializable createEncodable() {
         return new SimpleSession("joe", Collections.emptyList());
     }
 
diff --git a/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityWithRolesTest.java b/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityWithRolesTest.java
index 3dc472c..0d3ca7b 100644
--- a/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityWithRolesTest.java
+++ b/core/security/src/test/java/org/apache/isis/security/authentication/standard/SimpleSessionEncodabilityWithRolesTest.java
@@ -19,19 +19,19 @@
 
 package org.apache.isis.security.authentication.standard;
 
+import java.io.Serializable;
 import java.util.Arrays;
 
 import org.jmock.integration.junit4.JMock;
 import org.junit.runner.RunWith;
 
-import org.apache.isis.core.commons.internal.encoding.Encodable;
 import org.apache.isis.core.security.authentication.standard.SimpleSession;
 
 @RunWith(JMock.class)
 public class SimpleSessionEncodabilityWithRolesTest extends SimpleSessionEncodabilityTestAbstract {
 
     @Override
-    protected Encodable createEncodable() {
+    protected Serializable createEncodable() {
         return new SimpleSession("joe", Arrays.asList(new String[] { "role1", "role2" }));
     }