Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2013 Samuel Halliday
   *
   * This program is free software: you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see [http://www.gnu.org/licenses/].
  */
 package com.github.fommil.netlib.generator;
 
 
 import java.util.List;

Generates the Java part of a JNI implementation of a netlib interface.
 
 @Mojo(
     name = "native-java",
     defaultPhase = .,
     requiresDependencyResolution = .
 )
 public class NativeImplJavaGenerator extends AbstractJavaGenerator {

  
The interface that we are implementing.
 
   @Parameter(required = true)
   protected String implementing;

  
The default name of the native libraries. CSV.
 
   @Parameter(required = true)
   protected String natives;

  
The implementation that we are extending (if not specified, java.lang.UnsupportedOperationException may be thrown by excluded methods we are implementing).

See also:
unsupported
 
   protected String extending;

  
Methods we don't support.
 
   protected String unsupported;
 
   @Override
   protected String generate(List<Methodmethodsthrows Exception {
     List<Stringmembers = Lists.newArrayList();
 
     ST loader = .getInstanceOf("staticJniLoader");
     loader.add("lib");
     loader.add("prop"getTargetPackage() + "." + getTargetClassName() + ".natives");
     members.add(loader.render());
 
     for (Method method : methods) {
       ST m = getTemplate(methodfalse);
       if (m == nullcontinue;
       members.add(render(mmethodfalse));
       if (hasOffsets(method))
         members.add(render(getTemplate(methodtrue), methodtrue));
     }
 
     ST t = .getInstanceOf("implClass");
     t.add("package"getTargetPackage());
     t.add("name"getTargetClassName());
     t.add("members"members);
     t.add("docs"getGenerationSummaryJavadocs());
     t.add("parent" != null ?  : );
 
     return t.render();
   }
 
   private ST getTemplate(Method methodboolean offsets) {
     ST m = .getInstanceOf("nativeImplMethod" + (offsets ? "_offsets" : ""));
     if ( != null && method.getName().matches()) {
       if ( == null)
         m = .getInstanceOf("unsupportedMethod");
       else
        return null;
    }
    return m;
  }
  private String render(ST mMethod methodboolean offsets) {
    m.add("returns"method.getReturnType());
    if (offsets && method.getReturnType() == .)
      m.add("return""");
    m.add("method"method.getName());
    m.add("paramTypes"getNetlibJavaParameterTypes(methodoffsets));
    m.add("paramNames"getNetlibJavaParameterNames(methodoffsets));
    return m.render();
  }
New to GrepCode? Check out our FAQ X