You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by sm...@apache.org on 2014/06/25 15:06:42 UTC

svn commit: r1605381 - in /pivot/trunk/core/src/org/apache/pivot/functional/monad: Monad.java None.java Option.java OptionCompanion.java

Author: smartini
Date: Wed Jun 25 13:06:41 2014
New Revision: 1605381

URL: http://svn.apache.org/r1605381
Log:
PIVOT-799, small changes to monad-related classes (still wip)

Modified:
    pivot/trunk/core/src/org/apache/pivot/functional/monad/Monad.java
    pivot/trunk/core/src/org/apache/pivot/functional/monad/None.java
    pivot/trunk/core/src/org/apache/pivot/functional/monad/Option.java
    pivot/trunk/core/src/org/apache/pivot/functional/monad/OptionCompanion.java

Modified: pivot/trunk/core/src/org/apache/pivot/functional/monad/Monad.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/functional/monad/Monad.java?rev=1605381&r1=1605380&r2=1605381&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/functional/monad/Monad.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/functional/monad/Monad.java Wed Jun 25 13:06:41 2014
@@ -31,4 +31,7 @@ public abstract class Monad<T> {
         return "Monad()";
     }
 
+// TODO: check if add other abstract (generic, typical of Monads: apply, unit, map, flatten, etc) 
+//       methods here, and see what implement in Option  ...
+
 }

Modified: pivot/trunk/core/src/org/apache/pivot/functional/monad/None.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/functional/monad/None.java?rev=1605381&r1=1605380&r2=1605381&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/functional/monad/None.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/functional/monad/None.java Wed Jun 25 13:06:41 2014
@@ -16,6 +16,8 @@
  */
 package org.apache.pivot.functional.monad;
 
+import java.util.NoSuchElementException;
+
 /**
  * Container for an immutable no-value, derived from Option.
  */
@@ -46,7 +48,7 @@ public final class None<T> extends Optio
 
     @Override
     public T getValue() {
-        throw new IllegalStateException("None does not contain a value");
+        throw new NoSuchElementException("None does not contain a value");
     }
 
     @Override

Modified: pivot/trunk/core/src/org/apache/pivot/functional/monad/Option.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/functional/monad/Option.java?rev=1605381&r1=1605380&r2=1605381&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/functional/monad/Option.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/functional/monad/Option.java Wed Jun 25 13:06:41 2014
@@ -96,6 +96,4 @@ public abstract class Option<T> extends 
         return true;
     }
 
-// TODO: check if implement map, flatten, etc ...
-
 }

Modified: pivot/trunk/core/src/org/apache/pivot/functional/monad/OptionCompanion.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/functional/monad/OptionCompanion.java?rev=1605381&r1=1605380&r2=1605381&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/functional/monad/OptionCompanion.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/functional/monad/OptionCompanion.java Wed Jun 25 13:06:41 2014
@@ -58,29 +58,32 @@ public final class OptionCompanion<T> {
         if (val != null) {
             return new Some<>(val);
         }
-        // return new None<>();
+
         return None.getInstance();
     }
 
     /**
      * Utility method to return the value contained in the given Option.
      * @param o the Option
-     * @return the value (if any)
+     * @return the value if any, or null
      */
     public T toValue(final Option<T> o) {
         if (o == null) {
             throw new IllegalArgumentException("option is null.");
         }
 
+        if (!o.hasValue()) {
+            return null;
+        }
+
         return o.getValue();
-        // TODO: make generic (even to handle hasValue, etc) ...
     }
 
     /**
      * Utility method to return the value contained in the given Option,
      * or an alternate value if not present.
      * @param o the Option
-     * @param alternativeValue the alternative value
+     * @param alternativeValue the alternative value (null could be used here)
      * @return value if set, otherwise alternativeValue
      */
     public T toValueOrElse(final Option<T> o, final T alternativeValue) {
@@ -101,8 +104,11 @@ public final class OptionCompanion<T> {
             throw new IllegalArgumentException("option is null.");
         }
 
+        if (o instanceof None) {
+            return false;
+        }
+
         return o.getValue() instanceof Option;
-        // TODO: make generic (even to handle hasValue, etc) ...
     }
 
 /*