hg: lambda/lambda/jdk: - ensure null values are retained

Peter Levart peter.levart at gmail.com
Tue Dec 4 06:00:11 PST 2012


Hi Remi, Paul,

What about vice-versa:

Like this:

         private static final Object NONE = new Object();
         ...

         return new Sink.ChainedReference<T>(sink) {
             private Object lastSeen;

             @Override
             public void begin(long size) {
                 lastSeen = NONE;            // not needed if end() is called in a finally ?
                 downstream.begin(-1);
             }

             @Override
             public void end() {
                 lastSeen = NONE;
                 downstream.end();
             }

             @Override
             public void accept(T t) {
                 if (!Objects.equals(t, lastSeen)) {
                     lastSeen = t;
                     downstream.accept(t);
                 }
             }
         };


On 12/04/2012 02:26 PM, Remi Forax wrote:
> I was thinking to something like this:
>
>               return new Sink.ChainedReference<T>(sink) {
>                   private Object lastSeen;
>
>                   @Override
>                   public void begin(long size) {
>                       lastSeen = null;            // not needed if end() is called in a finally ?
>                       downstream.begin(-1);
>                   }
>
>                   @Override
>                   public void end() {
>                       lastSeen = null;
>                       downstream.end();
>                   }
>
>                   @Override
>                   public void accept(T t) {
>                       if (t == null) {
>                           if (lastSeen != NULL_OBJECT) {
>                               lastSeen = NULL_OBJECT
>                               downstream.accept(null);
>                           }
>                       } else if (lastSeen == null || !t.equals(lastSeen)) {
>                           lastSeen = t;
>                           downstream.accept((T)t);
>                       }
>                   }
>               };




More information about the lambda-dev mailing list