Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011-2013 Project Funcito Contributors
   *
   *  Licensed 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.funcito.example.Jedi;
 
 
 import java.util.List;
 
 import static jedi.functional.FunctionalPrimitives.collect;
 import static jedi.functional.FunctionalPrimitives.select;
 import static jedi.functional.FunctionalPrimitives.forEach;
 import static org.funcito.FuncitoJedi.*;
 
 public class MyClass {
 
     private String myString;
     private Integer other;
 
     public static final MyClass stubbedCallsTo = callsTo(MyClass.class);
 
     public static final Functor<MyClassStringgetMyString = functorFor(.getMyString());
     public static final Functor<MyClassIntegergetOther = functorFor(.getOther());
 
     // alternative single line syntax
     public static final Functor<MyClassStringgetMyStringF2 = functorFor(callsTo(MyClass.class).getMyString());
 
     // These demonstrate not only predicates, but also method argument binding
     public static final Filter<MyClassisLengthGT1 = filterFor(.isLengthGreaterThan(1));
     public static final Filter<MyClassisLengthGT3 = filterFor(.isLengthGreaterThan(3));
 
     // demonstrating Command creation around a method call that has a return value.
     public static final Command<MyClassincAndReturn = commandFor(.incAndReturn());
 
     // demonstrating Command creation around a void method call.
 
     // Note that for void version, the wrapped method call must be "prepared" before the Command is created.  Also,
     // to be able to assign to a static field via an initializer, prepareVoid() requires a static block.  If assignment
     // were to a non-static field, a non-static block would be sufficient.  If assignment to a Command variable is not
     // done in a field initializer (i.e., a local variable assignment or a field assignment in a method or execution
     // block), then no-extra "blocking" is needed for the prepareVoid() call.
     static {prepareVoid().inc();}
     public static final Command<MyClassinc = voidCommand();
 
     public MyClass(String myStringInteger other) {
         this. = myString;
         this. = other;
     }
 
     public String getMyString() {
         return ;
     }
 
     public void setMyString(String value) {
         this. = value;
     }
 
     public Integer getOther() {
         return ;
     }
 
     public void setOther(Integer other) {
         this. = other;
     }
 
     public void inc() {
         ++;
     }
 
     public Integer incAndReturn() {
         inc();
         return ;
     }
 
     public boolean isLengthGreaterThan(int lower) {
         return getMyString().length() > lower;
     }
 
     @Override
     public String toString() {
         return getMyString();
     }
 
     public static void main(String[] args) {
        MyClass m1 = new MyClass("A", 1);
        MyClass m2 = new MyClass("B", 2);
        MyClass m3 = new MyClass("C", 3);
        List<MyClasslist = Arrays.asList(m1,m2,m3);
        demoListTransforms(list);
        demoListFilters(list);
        demoCommands(list);
        m1.setMyString("This is my new value");
        m1.setOther(777);
        demoListTransforms(list);
        demoListFilters(list);
        demoCommands(list);
    }
    protected static void demoListTransforms(List<? extends MyClasslist) {
        List<StringstrList1 = collect(list);
        List<StringstrList2 = collect(list);
        List<IntegerintList = collect(list);
        printValues("func1"strList1);
        printValues("func2"strList2);
        printValues("otherFunc"intList);
    }
    protected static void demoListFilters(List<MyClasslist) {
        List<MyClassfiltered1 = select(list);
        List<MyClassfiltered2 = select(list);
        printValues("filter length > 1"filtered1);
        printValues("filter length > 3"filtered2);
    }
    protected static void demoCommands(List<MyClasslist) {
        forEach(list);
        printValues("List has incremented each"collect(list));
        forEach(list);
        printValues("List has incremented each again"collect(list));
    }
    protected static void printValues(String descList<?> list) {
        ..println(desc + ": " + list);
    }
New to GrepCode? Check out our FAQ X