Skip to content

Commit

Permalink
Merge pull request #311 from yomik/add_android_lib_sample
Browse files Browse the repository at this point in the history
#305 : Add android lib sample + Add support for android library plugin
  • Loading branch information
joelittlejohn committed Mar 16, 2015
2 parents 00dbab9 + 0107b93 commit 9586ac6
Show file tree
Hide file tree
Showing 7 changed files with 156 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
128 changes: 128 additions & 0 deletions jsonschema2pojo-gradle-plugin/example/android/lib/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
apply plugin: 'com.android.library'
apply plugin: 'jsonschema2pojo'

buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'org.jsonschema2pojo:jsonschema2pojo-gradle-plugin:latest.integration'
}
}

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}

// Each configuration is set to the default value
jsonSchema2Pojo {
// Whether to generate builder-style methods of the form withXxx(value) (that return this),
// alongside the standard, void-return setters.
generateBuilders = false

// Whether to use primitives (long, double, boolean) instead of wrapper types where possible
// when generating bean properties (has the side-effect of making those properties non-null).
usePrimitives = false

// Location of the JSON Schema file(s). This may refer to a single file or a directory of files.
//source = files("${sourceSets.main.output.resourcesDir}/json")
source = files("${project.rootDir}/schema")

// Target directory for generated Java source files. The plugin will add this directory to the
// java source set so the compiler will find and compile the newly generated source files.
targetDirectory = file("${project.rootDir}/build/generated-sources/js2p")

// Package name used for generated Java classes (for types where a fully qualified name has not
// been supplied in the schema using the 'javaType' property).
targetPackage = 'com.oosocial.clarityn.rest.clarityn.model'

// The characters that should be considered as word delimiters when creating Java Bean property
// names from JSON property names. If blank or not set, JSON properties will be considered to
// contain a single word when creating Java Bean property names.
propertyWordDelimiters = [] as char[]

// Whether to use the java type long (or Long) instead of int (or Integer) when representing the
// JSON Schema type 'integer'.
useLongIntegers = false

// Whether to use the java type double (or Double) instead of float (or Float) when representing
// the JSON Schema type 'number'.
useDoubleNumbers = true

// Whether to include hashCode and equals methods in generated Java types.
includeHashcodeAndEquals = true

// Whether to include a toString method in generated Java types.
includeToString = true

// The style of annotations to use in the generated Java types. Supported values:
// - jackson (alias of jackson2)
// - jackson2 (apply annotations from the Jackson 2.x library)
// - jackson1 (apply annotations from the Jackson 1.x library)
// - gson (apply annotations from the Gson library)
// - none (apply no annotations at all)
annotationStyle = 'gson'

// A fully qualified class name, referring to a custom annotator class that implements
// org.jsonschema2pojo.NoopAnnotator and will be used in addition to the one chosen
// by annotationStyle. If you want to use the custom annotator alone, set annotationStyle to none.
customAnnotator = 'org.jsonschema2pojo.NoopAnnotator'

// Whether to include JSR-303/349 annotations (for schema rules like minimum, maximum, etc) in
// generated Java types. Schema rules and the annotation they produce:
// - maximum = @DecimalMax
// - minimum = @DecimalMin
// - minItems,maxItems = @Size
// - minLength,maxLength = @Size
// - pattern = @Pattern
// - required = @NotNull
// Any Java fields which are an object or array of objects will be annotated with @Valid to
// support validation of an entire document tree.
includeJsr303Annotations = true

// The type of input documents that will be read. Supported values:
// - jsonschema (schema documents, containing formal rules that describe the structure of json data)
// - json (documents that represent an example of the kind of json data that the generated Java types
// will be mapped to)
sourceType = 'jsonschema'

// Whether to empty the target directory before generation occurs, to clear out all source files
// that have been generated previously. <strong>Be warned</strong>, when activated this option
// will cause jsonschema2pojo to <strong>indiscriminately delete the entire contents of the target
// directory (all files and folders)</strong> before it begins generating sources.
boolean removeOldOutput = true

// The character encoding that should be used when writing the generated Java source files
String outputEncoding = 'UTF-8'

// Whether to use {@link org.joda.time.DateTime} instead of {@link java.util.Date} when adding
// date type fields to generated Java types.
boolean useJodaDates = false

// Whether to use commons-lang 3.x imports instead of commons-lang 2.x imports when adding equals,
// hashCode and toString methods.
boolean useCommonsLang3 = false

// Whether to initialize Set and List fields as empty collections, or leave them as null.
boolean initializeCollections = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /opt/android/android-sdk-linux/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<manifest package="jsonschema2pojo.joelittlejohn.github.com.androidlibexample">

<application/>
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package jsonschema2pojo.joelittlejohn.github.com.androidlibexample;

public final class AndroidLibExample {
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
include ':app'
include ':app', ':lib'
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class GenerateJsonSchemaTask extends DefaultTask {

if (project.plugins.hasPlugin('java')) {
configureJava()
} else if (project.plugins.hasPlugin('com.android.application')) {
} else if (project.plugins.hasPlugin('com.android.application') || project.plugins.hasPlugin('com.android.library')) {
configureAndroid()
} else {
throw new GradleException('generateJsonSchema: Java or Android plugin required')
Expand Down

0 comments on commit 9586ac6

Please sign in to comment.