Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Objectos, Fábrica de Software LTDA.
   *
   * 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 br.com.objectos.way.auto.optional;
 
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 
 import java.util.List;
 
 

Author(s):
marcio.endo@objectos.com.br (Marcio Endo)
 
 
   private final MethodWrapper method;
   private final Optional<BuilderInterfacenext;
 
   private BuilderInterface(MethodWrapper methodOptional<BuilderInterfacenext) {
     this. = method;
     this. = next;
   }
 
   public static List<BuilderInterfacelistOf(List<MethodWrappermethodList) {
     int size = methodList.size();
 
     BuilderInterface next = null;
     List<MethodWrapperreversed = Lists.reverse(methodList);
     for (MethodWrapper method : reversed) {
       Optional<BuilderInterfacemaybeNext = Optional.fromNullable(next);
       BuilderInterface iface = new BuilderInterface(methodmaybeNext);
       list.add(iface);
       next = iface;
     }
 
     return Lists.reverse(list);
   }
 
   @Override
   public MustacheObject toMustache() {
     List<Declarationdeclarations = newArrayList();
     declarations.add(new MethodDeclaration());
 
     BuilderInterface iter = this;
     while (iter != null && iter.isOptional()) {
       Declaration declaration = new BuildDeclaration();
 
       Optional<BuilderInterfacemaybeNext = iter.next;
       if (maybeNext.isPresent()) {
         BuilderInterface next = maybeNext.get();
         declaration = new MethodDeclaration(next.method);
       }
 
       declarations.add(declaration);
       iter = maybeNext.orNull();
     }
 
     return .toMustacheHelper()
         .add("declarations"declarations)
         .toMustache();
   }
 
   private boolean isOptional() {
     return .isOptional();
   }
 
   private static class BuildDeclaration extends Declaration {
 
     @Override
     String text() {
       return " build()";
     }
 
   }
 
   private static class MethodDeclaration extends Declaration {
    private final MethodWrapper method;
    public MethodDeclaration(MethodWrapper method) {
      this. = method;
    }
    @Override
    String text() {
      MethodInfo info = .methodInfo();
      String fieldName = info.toFieldName();
      String fieldToClassName = WayCode.upperCaseFirstChar(fieldName);
      SimpleTypeInfo returnType = .unboxedType();
      return String.format("Builder%s %s(%s %s)"fieldToClassNamefieldNamereturnType.toDeclaredName(), fieldName);
    }
  }
  abstract static class Declaration implements IsMustacheSerializable {
    @Override
    public final MustacheObject toMustache() {
      return Mustaches.toMustacheHelper()
          .add("text"text())
          .toMustache();
    }
    abstract String text();
  }
New to GrepCode? Check out our FAQ X