diff --git a/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java b/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java index a91f81aba0c..2d1c237fdfe 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java +++ b/code-gen/src/main/java/com/wordnik/codegen/DriverCodeGenerator.java @@ -105,6 +105,14 @@ public class DriverCodeGenerator { } + /** + * Deserializes the response and returns a Response object + * @param response + * @param mapper + * @param newApi + * @return + * @throws IOException + */ private Resource deserializeResource(String response, ObjectMapper mapper, Boolean newApi) throws IOException { Resource resource; if(!newApi) { @@ -115,12 +123,9 @@ public class DriverCodeGenerator { //convert apiResource to resource resource = new Resource(); Model model; - List fields; List models = new ArrayList(); - Parameter field; - String modelName, propertyName; + String modelName; ApiModelDefn modelDefn; - ApiPropertyDefn propertyDefn; if (apiResource.getModels() != null) { for (Map.Entry entry : apiResource.getModels().getModelList().entrySet()) { modelName = entry.getKey(); @@ -128,10 +133,8 @@ public class DriverCodeGenerator { model = new Model(); model.setName(modelName); model.setDescription(modelDefn.getDescription()); - model.setFields( modelDefn.getProperties().toFieldList( this.config ) ); models.add( model ); - // ... } } resource.setModels( models ); @@ -162,7 +165,7 @@ public class DriverCodeGenerator { for(Resource resource: resources) { for(Model model : resource.getModels()){ - if(!generatedClassNames.contains(model.getName())){ + if(!generatedClassNames.contains(model.getName()) && !config.getCodeGenOverridingRules().isModelIgnored(model.getName())){ List imports = new ArrayList(); imports.addAll(this.config.getDefaultModelImports()); for(Parameter param : model.getFields()){ diff --git a/code-gen/src/main/java/com/wordnik/codegen/config/CodeGenOverridingRules.java b/code-gen/src/main/java/com/wordnik/codegen/config/CodeGenOverridingRules.java index 221795642bd..c166cd23882 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/config/CodeGenOverridingRules.java +++ b/code-gen/src/main/java/com/wordnik/codegen/config/CodeGenOverridingRules.java @@ -20,4 +20,6 @@ public interface CodeGenOverridingRules { public String getServiceExtendingClass(String serviceName); public boolean isMethodIgnored(String serviceName, String methodName); + + public boolean isModelIgnored(String modelName); } diff --git a/code-gen/src/main/java/com/wordnik/codegen/java/JavaCodeGenPverridingRules.java b/code-gen/src/main/java/com/wordnik/codegen/java/JavaCodeGenPverridingRules.java index 42fd79b8e96..bfffd2ee7bd 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/java/JavaCodeGenPverridingRules.java +++ b/code-gen/src/main/java/com/wordnik/codegen/java/JavaCodeGenPverridingRules.java @@ -16,11 +16,14 @@ public class JavaCodeGenPverridingRules implements CodeGenOverridingRules { private Map extendedClassNames = new HashMap(); private List ignoreMethods = new ArrayList(); + private List ignoreModels = new ArrayList(); public JavaCodeGenPverridingRules() { extendedClassNames.put("WordAPI","AbstractWordAPI"); ignoreMethods.add("WordAPI.getWordFrequency"); ignoreMethods.add("WordAPI.getAudio"); + ignoreMethods.add("WordAPI.getWordStats"); + ignoreModels.add("wordStats"); } public String getServiceExtendingClass(String serviceName) { @@ -34,4 +37,8 @@ public class JavaCodeGenPverridingRules implements CodeGenOverridingRules { return (ignoreMethods.contains(serviceName+"."+methodName)); } + public boolean isModelIgnored(String modelName) { + return ignoreModels.contains(modelName); + } + } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java b/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java index 9aa1123e3e6..f49ad27f35e 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/Endpoint.java @@ -86,12 +86,36 @@ public class Endpoint { methods = new ArrayList(); if(getOperations() != null) { for(EndpointOperation operation: getOperations()) { - if(!operation.isDeprecated()) { + if(!operation.isDeprecated() && areModelsAvailable(operation.getParameters(), resource, config)) { methods.add(operation.generateMethod(this, resource, config)); } } } } return methods; - } + } + + private boolean areModelsAvailable(List parameters, Resource resource, CodeGenConfig config) { + Boolean isParamSetAvailable = true; + if(parameters == null) return true; + for(Parameter parameter: parameters){ + if (parameter.getParamType().equalsIgnoreCase(EndpointOperation.PARAM_TYPE_BODY) ){ + isParamSetAvailable = false; + for(Model model : resource.getModels()){ + if(config.getDataTypeMapper().isPrimitiveType(parameter.getDataType())){ + isParamSetAvailable = true; + break; + } + if(model.getName().equalsIgnoreCase(parameter.getDataType())){ + isParamSetAvailable = true; + break; + } + } + if(!isParamSetAvailable){ + return false; + } + } + } + return isParamSetAvailable; + } } diff --git a/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java b/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java index 2d7367c3d83..3c4d24e2126 100644 --- a/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java +++ b/code-gen/src/main/java/com/wordnik/codegen/resource/EndpointOperation.java @@ -15,10 +15,10 @@ import java.util.StringTokenizer; */ public class EndpointOperation { - private static String PARAM_TYPE_QUERY = "query"; - private static String PARAM_TYPE_PATH = "path"; - private static String PARAM_TYPE_BODY = "body"; - private static String PARAM_TYPE_HEADER = "header"; + public static String PARAM_TYPE_QUERY = "query"; + public static String PARAM_TYPE_PATH = "path"; + public static String PARAM_TYPE_BODY = "body"; + public static String PARAM_TYPE_HEADER = "header"; private static String AUTH_TOKEN_PARAM_NAME = "auth_token"; private static String API_KEY_PARAM_NAME = "api_key"; private static String FORMAT_PARAM_NAME = "format"; diff --git a/java/src/test/java/com/wordnik/test/TestMethodInputs.java b/java/src/test/java/com/wordnik/test/TestMethodInputs.java index 2ad97fe074b..6d917695b3c 100644 --- a/java/src/test/java/com/wordnik/test/TestMethodInputs.java +++ b/java/src/test/java/com/wordnik/test/TestMethodInputs.java @@ -1,7 +1,7 @@ package com.wordnik.test; import com.wordnik.api.WordAPI; -import com.wordnik.api.WordListAPI; +//import com.wordnik.api.WordListAPI; import com.wordnik.exception.WordnikAPIException; import com.wordnik.model.WordList; import org.codehaus.jackson.JsonParser;