diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java index df9e289297f..1df5d1bb1aa 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/AndroidClientCodegen.java @@ -13,6 +13,7 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi protected String artifactVersion = "1.0.0"; protected String projectFolder = "src/main"; protected String sourceFolder = projectFolder + "/java"; + protected Boolean useAndroidMavenGradlePlugin = true; public CodegenType getTag() { return CodegenType.CLIENT; @@ -50,7 +51,9 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi additionalProperties.put("groupId", groupId); additionalProperties.put("artifactId", artifactId); additionalProperties.put("artifactVersion", artifactVersion); - + additionalProperties.put("useAndroidMavenGradlePlugin", useAndroidMavenGradlePlugin); + + supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle")); supportingFiles.add(new SupportingFile("manifest.mustache", projectFolder, "AndroidManifest.xml")); supportingFiles.add(new SupportingFile("apiInvoker.mustache", diff --git a/modules/swagger-codegen/src/main/resources/android-java/build.mustache b/modules/swagger-codegen/src/main/resources/android-java/build.mustache index dfe5e1725d4..1e0b3773488 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/build.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/build.mustache @@ -1,9 +1,17 @@ +{{#useAndroidMavenGradlePlugin}} +group = '{{groupId}}' +project.version = '{{artifactVersion}}' +{{/useAndroidMavenGradlePlugin}} + buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.2' + {{#useAndroidMavenGradlePlugin}} + classpath 'com.github.dcendents:android-maven-plugin:1.2' + {{/useAndroidMavenGradlePlugin}} } } @@ -13,7 +21,11 @@ allprojects { } } + apply plugin: 'com.android.library' +{{#useAndroidMavenGradlePlugin}} +apply plugin: 'com.github.dcendents.android-maven' +{{/useAndroidMavenGradlePlugin}} android { compileSdkVersion 22 @@ -22,12 +34,25 @@ android { minSdkVersion 14 targetSdkVersion 22 } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } } ext { swagger_annotations_version = "1.5.3-M1" jackson_version = "2.5.2" - httpclient_version = "4.3.3" + httpclient_android_version = "4.3.5.1" + httpcore_version = "4.4.1" + httpmime_version = "4.4.1" junit_version = "4.8.1" } @@ -36,9 +61,13 @@ dependencies { compile "com.fasterxml.jackson.core:jackson-core:$jackson_version" compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" compile "com.fasterxml.jackson.core:jackson-databind:$jackson_version" - compile "org.apache.httpcomponents:httpcore:$httpclient_version" - compile "org.apache.httpcomponents:httpclient:$httpclient_version" - compile "org.apache.httpcomponents:httpmime:$httpclient_version" + compile "org.apache.httpcomponents:httpclient-android:$httpclient_android_version" + compile ("org.apache.httpcomponents:httpcore:$httpcore_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } + compile ("org.apache.httpcomponents:httpmime:$httpmime_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } testCompile "junit:junit:$junit_version" } @@ -49,7 +78,18 @@ afterEvaluate { task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir task.destinationDir = project.file("${project.buildDir}/outputs/jar") - task.archiveName = "${project.name}-${variant.baseName}.jar" + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" artifacts.add('archives', task); } -} \ No newline at end of file +} + +{{#useAndroidMavenGradlePlugin}} +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} +{{/useAndroidMavenGradlePlugin}} \ No newline at end of file diff --git a/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache b/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache new file mode 100644 index 00000000000..b8fd6c4c41f --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-java/settings.gradle.mustache @@ -0,0 +1 @@ +rootProject.name = "{{artifactId}}" \ No newline at end of file diff --git a/samples/client/petstore/android-java/build.gradle b/samples/client/petstore/android-java/build.gradle index dfe5e1725d4..8a74e0c8fa1 100644 --- a/samples/client/petstore/android-java/build.gradle +++ b/samples/client/petstore/android-java/build.gradle @@ -1,9 +1,15 @@ +group = 'io.swagger' +project.version = '1.0.0' + buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.2' + + classpath 'com.github.dcendents:android-maven-plugin:1.2' + } } @@ -13,7 +19,10 @@ allprojects { } } + + apply plugin: 'com.android.library' +apply plugin: 'com.github.dcendents.android-maven' android { compileSdkVersion 22 @@ -22,12 +31,26 @@ android { minSdkVersion 14 targetSdkVersion 22 } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + } ext { swagger_annotations_version = "1.5.3-M1" jackson_version = "2.5.2" - httpclient_version = "4.3.3" + httpclient_android_version = "4.3.5.1" + httpcore_version = "4.4.1" + httpmime_version = "4.4.1" junit_version = "4.8.1" } @@ -36,9 +59,13 @@ dependencies { compile "com.fasterxml.jackson.core:jackson-core:$jackson_version" compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" compile "com.fasterxml.jackson.core:jackson-databind:$jackson_version" - compile "org.apache.httpcomponents:httpcore:$httpclient_version" - compile "org.apache.httpcomponents:httpclient:$httpclient_version" - compile "org.apache.httpcomponents:httpmime:$httpclient_version" + compile "org.apache.httpcomponents:httpclient-android:$httpclient_android_version" + compile ("org.apache.httpcomponents:httpcore:$httpcore_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } + compile ("org.apache.httpcomponents:httpmime:$httpmime_version") { + exclude(group: 'org.apache.httpcomponents', module: 'httpclient') + } testCompile "junit:junit:$junit_version" } @@ -49,7 +76,16 @@ afterEvaluate { task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir task.destinationDir = project.file("${project.buildDir}/outputs/jar") - task.archiveName = "${project.name}-${variant.baseName}.jar" + task.archiveName = "${project.name}-${variant.baseName}-${version}.jar" artifacts.add('archives', task); } -} \ No newline at end of file +} + +task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' +} + +artifacts { + archives sourcesJar +} diff --git a/samples/client/petstore/android-java/settings.gradle b/samples/client/petstore/android-java/settings.gradle new file mode 100644 index 00000000000..6a6796bf9fe --- /dev/null +++ b/samples/client/petstore/android-java/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "swagger-android-client" \ No newline at end of file diff --git a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/PetApiTest.java b/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/PetApiTest.java deleted file mode 100644 index 97f3b5f8006..00000000000 --- a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/PetApiTest.java +++ /dev/null @@ -1,155 +0,0 @@ -package io.swagger.petstore.test; - -import io.swagger.client.ApiException; -import io.swagger.client.api.*; -import io.swagger.client.model.*; - -import java.util.*; -import java.io.*; - -import static org.junit.Assert.*; -import org.junit.*; - -public class PetApiTest { - PetApi api = null; - - @Before - public void setup() { - api = new PetApi(); - } - - @Test - public void testCreateAndGetPet() throws Exception { - Pet pet = createRandomPet(); - api.addPet(pet); - - Pet fetched = api.getPetById(pet.getId()); - assertNotNull(fetched); - assertEquals(pet.getId(), fetched.getId()); - assertNotNull(fetched.getCategory()); - assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); - } - - @Test - public void testUpdatePet() throws Exception { - Pet pet = createRandomPet(); - pet.setName("programmer"); - - api.updatePet(pet); - - Pet fetched = api.getPetById(pet.getId()); - assertNotNull(fetched); - assertEquals(pet.getId(), fetched.getId()); - assertNotNull(fetched.getCategory()); - assertEquals(fetched.getCategory().getName(), pet.getCategory().getName()); - } - - @Test - public void testFindPetsByStatus() throws Exception { - Pet pet = createRandomPet(); - pet.setName("programmer"); - pet.setStatus(Pet.StatusEnum.available); - - api.updatePet(pet); - - List pets = api.findPetsByStatus(Arrays.asList(new String[]{"available"})); - assertNotNull(pets); - - boolean found = false; - for(Pet fetched : pets) { - if(fetched.getId().equals(pet.getId())) { - found = true; - break; - } - } - - assertTrue(found); - } - - @Test - public void testFindPetsByTags() throws Exception { - Pet pet = createRandomPet(); - pet.setName("monster"); - pet.setStatus(Pet.StatusEnum.available); - - List tags = new ArrayList(); - Tag tag1 = new Tag(); - tag1.setName("friendly"); - tags.add(tag1); - pet.setTags(tags); - - api.updatePet(pet); - - List pets = api.findPetsByTags(Arrays.asList(new String[]{"friendly"})); - assertNotNull(pets); - - boolean found = false; - for(Pet fetched : pets) { - if(fetched.getId().equals(pet.getId())) { - found = true; - break; - } - } - assertTrue(found); - } - - @Test - public void testUpdatePetWithForm() throws Exception { - Pet pet = createRandomPet(); - pet.setName("frank"); - api.addPet(pet); - - Pet fetched = api.getPetById(pet.getId()); - - api.updatePetWithForm(String.valueOf(fetched.getId()), "furt", null); - Pet updated = api.getPetById(fetched.getId()); - - assertEquals(updated.getName(), fetched.getName()); - } - - @Test - public void testDeletePet() throws Exception { - Pet pet = createRandomPet(); - api.addPet(pet); - - Pet fetched = api.getPetById(pet.getId()); - api.deletePet(null, fetched.getId()); - - try { - fetched = api.getPetById(fetched.getId()); - fail("expected an error"); - } - catch (ApiException e) { - assertEquals(404, e.getCode()); - } - } - - @Test - public void testUploadFile() throws Exception { - Pet pet = createRandomPet(); - api.addPet(pet); - - File file = new File("hello.txt"); - BufferedWriter writer = new BufferedWriter(new FileWriter(file)); - writer.write("Hello world!"); - writer.close(); - - api.uploadFile(pet.getId(), "a test file", new File(file.getAbsolutePath())); - } - - private Pet createRandomPet() { - Pet pet = new Pet(); - pet.setId(System.currentTimeMillis()); - pet.setName("gorilla"); - - Category category = new Category(); - category.setName("really-happy"); - - pet.setCategory(category); - pet.setStatus(Pet.StatusEnum.available); - List photos = Arrays.asList(new String[]{"http://foo.bar.com/1", "http://foo.bar.com/2"}); - pet.setPhotoUrls(photos); - - return pet; - } -} \ No newline at end of file diff --git a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/StoreApiTest.java b/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/StoreApiTest.java deleted file mode 100644 index 25a52009b9e..00000000000 --- a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/StoreApiTest.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.swagger.petstore.test; - -import io.swagger.client.ApiException; -import io.swagger.client.api.*; -import io.swagger.client.model.*; - -import java.util.*; -import java.io.*; - -import static org.junit.Assert.*; -import org.junit.*; - -public class StoreApiTest { - StoreApi api = null; - - @Before - public void setup() { - api = new StoreApi(); - } - - @Test - public void testGetInventory() throws Exception { - Map inventory = api.getInventory(); - assertTrue(inventory.keySet().size() > 0); - } - - @Test - public void testPlaceOrder() throws Exception { - Order order = createOrder(); - api.placeOrder(order); - - Order fetched = api.getOrderById(String.valueOf(order.getId())); - assertEquals(order.getId(), fetched.getId()); - assertEquals(order.getPetId(), fetched.getPetId()); - assertEquals(order.getQuantity(), fetched.getQuantity()); - } - - @Test - public void testDeleteOrder() throws Exception { - Order order = createOrder(); - api.placeOrder(order); - - Order fetched = api.getOrderById(String.valueOf(order.getId())); - assertEquals(fetched.getId(), order.getId()); - - api.deleteOrder(String.valueOf(order.getId())); - - try { - api.getOrderById(String.valueOf(order.getId())); - // fail("expected an error"); - } - catch (ApiException e) { - // ok - } - } - - private Order createOrder() { - Order order = new Order(); - order.setId(new Long(System.currentTimeMillis())); - order.setPetId(new Long(200)); - order.setQuantity(new Integer(13)); - order.setShipDate(new java.util.Date()); - order.setStatus(Order.StatusEnum.placed); - order.setComplete(true); - - return order; - } -} \ No newline at end of file diff --git a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/UserApiTest.java b/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/UserApiTest.java deleted file mode 100644 index 9d683faab7a..00000000000 --- a/samples/client/petstore/android-java/src/test/java/io/swagger/petstore/test/UserApiTest.java +++ /dev/null @@ -1,84 +0,0 @@ -package io.swagger.petstore.test; - -import io.swagger.client.ApiException; -import io.swagger.client.api.*; -import io.swagger.client.model.*; - -import java.util.*; -import java.io.*; - -import static org.junit.Assert.*; -import org.junit.*; - -public class UserApiTest { - UserApi api = null; - - @Before - public void setup() { - api = new UserApi(); - } - - @Test - public void testCreateUser() throws Exception { - User user = createUser(); - - api.createUser(user); - - User fetched = api.getUserByName(user.getUsername()); - assertEquals(user.getId(), fetched.getId()); - } - - @Test - public void testCreateUsersWithArray() throws Exception { - User user1 = createUser(); - user1.setUsername("abc123"); - User user2 = createUser(); - user2.setUsername("123abc"); - - api.createUsersWithArrayInput(Arrays.asList(new User[]{user1, user2})); - - User fetched = api.getUserByName(user1.getUsername()); - assertEquals(user1.getId(), fetched.getId()); - } - - @Test - public void testCreateUsersWithList() throws Exception { - User user1 = createUser(); - user1.setUsername("abc123"); - User user2 = createUser(); - user2.setUsername("123abc"); - - api.createUsersWithListInput(Arrays.asList(new User[]{user1, user2})); - - User fetched = api.getUserByName(user1.getUsername()); - assertEquals(user1.getId(), fetched.getId()); - } - - @Test - public void testLoginUser() throws Exception { - User user = createUser(); - api.createUser(user); - - String token = api.loginUser(user.getUsername(), user.getPassword()); - assertTrue(token.startsWith("logged in user session:")); - } - - @Test - public void logoutUser() throws Exception { - api.logoutUser(); - } - - private User createUser() { - User user = new User(); - user.setId(System.currentTimeMillis()); - user.setUsername("fred"); - user.setFirstName("Fred"); - user.setLastName("Meyer"); - user.setEmail("fred@fredmeyer.com"); - user.setPassword("xxXXxx"); - user.setPhone("408-867-5309"); - user.setUserStatus(123); - - return user; - } -} \ No newline at end of file