json-schema-java-mapper-utils
Advanced tools
Sorry, the diff of this file is not supported yet
| # json-schema-java-mapper-utils | ||
| [](https://travis-ci.org/gextech/json-schema-java-mapper-utils) |
+6
-0
| 0.0.2 / 2015-02-06 | ||
| ================== | ||
| * refactor and support for patternProperties also improving nested resources to support multiple levels | ||
| * adding History.md | ||
| 0.0.1 / 2015-01-28 | ||
@@ -3,0 +9,0 @@ ================== |
@@ -1,2 +0,2 @@ | ||
| var Deref, handleArray, handleObject, pascalCase, resolveInnerClass, resolveType, resolveTypeByRef, util, _; | ||
| var Deref, handleArray, handleObject, handlePatternProperties, pascalCase, resolveInnerClass, resolveType, resolveTypeByRef, util, _; | ||
@@ -12,8 +12,9 @@ Deref = require('deref'); | ||
| util.mapProperties = function(expandedSchema, refMap, mapping) { | ||
| var data, key, keyRef, propParsed, property, _ref; | ||
| data = {}; | ||
| data.classMembers = []; | ||
| data.innerClasses = []; | ||
| data.className = pascalCase(expandedSchema.title); | ||
| data.classDescription = (_ref = expandedSchema.description) != null ? _ref : ""; | ||
| var classDef, key, keyRef, propParsed, property, _ref; | ||
| classDef = {}; | ||
| classDef.classMembers = []; | ||
| classDef.patternProperties = []; | ||
| classDef.innerClasses = []; | ||
| classDef.className = pascalCase(expandedSchema.title); | ||
| classDef.classDescription = (_ref = expandedSchema.description) != null ? _ref : ""; | ||
| if (expandedSchema.properties && expandedSchema.properties.$ref) { | ||
@@ -30,21 +31,41 @@ keyRef = expandedSchema.properties.$ref; | ||
| propParsed = util.mapProperty(property, key, '', mapping, refMap); | ||
| data.classMembers.push(propParsed.property); | ||
| if (propParsed.property) { | ||
| classDef.classMembers.push(propParsed.property); | ||
| } | ||
| if (propParsed.patternProperties) { | ||
| classDef.patternProperties = _.union(classDef.patternProperties, propParsed.patternProperties); | ||
| } | ||
| if (propParsed.innerClass) { | ||
| data.innerClasses.push(propParsed.innerClass); | ||
| classDef.innerClasses.push(propParsed.innerClass); | ||
| } | ||
| } | ||
| } | ||
| return data; | ||
| return classDef; | ||
| }; | ||
| util.mapProperty = function(property, name, annotation, mapping, refMap) { | ||
| var data, keyRef, keyRefData, _ref; | ||
| data = {}; | ||
| data.property = {}; | ||
| data.property.name = name; | ||
| data.property.comment = property.description; | ||
| data.property.required = property.required !== void 0 ? property.required : false; | ||
| data.property.size = []; | ||
| var keyRef, keyRefData, objDef, propertyDef, _ref; | ||
| propertyDef = {}; | ||
| propertyDef.property = {}; | ||
| if (property.items && property.items["$ref"]) { | ||
| keyRef = property.items["$ref"]; | ||
| keyRefData = resolveTypeByRef(keyRef, refMap, name, true); | ||
| } else if (property["$ref"]) { | ||
| keyRef = property["$ref"]; | ||
| keyRefData = resolveTypeByRef(keyRef, refMap, name); | ||
| propertyDef.property.type = keyRefData.type; | ||
| if (keyRefData.innnerSchema.type) { | ||
| property.type = keyRefData.innnerSchema.type; | ||
| } | ||
| } else if (property.patternProperties) { | ||
| propertyDef.patternProperties = []; | ||
| propertyDef.patternProperties = handlePatternProperties(property, name, refMap, keyRefData, mapping, annotation); | ||
| return propertyDef; | ||
| } | ||
| propertyDef.property.name = name; | ||
| propertyDef.property.comment = property.description; | ||
| propertyDef.property.required = property.required !== void 0 ? property.required : false; | ||
| propertyDef.property.size = []; | ||
| if (property.minLength) { | ||
| data.property.size.push({ | ||
| propertyDef.property.size.push({ | ||
| "name": "min", | ||
@@ -55,3 +76,3 @@ "value": property.minLength | ||
| if (property.maxLength) { | ||
| data.property.size.push({ | ||
| propertyDef.property.size.push({ | ||
| "name": "max", | ||
@@ -61,41 +82,43 @@ "value": property.maxLength | ||
| } | ||
| if (property.items && property.items["$ref"]) { | ||
| keyRef = property.items["$ref"]; | ||
| keyRefData = resolveTypeByRef(keyRef, refMap, name, true); | ||
| } else if (property["$ref"]) { | ||
| keyRef = property["$ref"]; | ||
| keyRefData = resolveTypeByRef(keyRef, refMap, name); | ||
| data.property.type = keyRefData.type; | ||
| if (keyRefData.innnerSchema.type) { | ||
| property.type = keyRefData.innnerSchema.type; | ||
| } else { | ||
| property.properties = keyRefData.innnerSchema; | ||
| data.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping); | ||
| property.type = resolveType(data.innerClass, name); | ||
| } | ||
| } | ||
| switch (property.type) { | ||
| case 'array': | ||
| handleArray(keyRefData, mapping, data); | ||
| propertyDef.property.type = handleArray(keyRefData, mapping); | ||
| break; | ||
| case 'object': | ||
| handleObject(property, name, refMap, keyRefData, mapping, data); | ||
| objDef = handleObject(property, name, refMap, keyRefData, mapping); | ||
| propertyDef.property.type = objDef.type; | ||
| propertyDef.innerClass = objDef.innerClass; | ||
| break; | ||
| default: | ||
| data.property.type = (_ref = mapping[property.type]) != null ? _ref : property.type; | ||
| if (name !== "relatedContent") { | ||
| propertyDef.property.type = (_ref = mapping[property.type]) != null ? _ref : property.type; | ||
| } | ||
| } | ||
| switch (data.property.type) { | ||
| switch (propertyDef.property.type) { | ||
| case "BigDecimal": | ||
| data.property.decimalMax = property.maximum; | ||
| data.property.decimalMin = property.minimum; | ||
| propertyDef.property.decimalMax = property.maximum; | ||
| propertyDef.property.decimalMin = property.minimum; | ||
| break; | ||
| case "Long": | ||
| data.property.max = property.maximum; | ||
| data.property.min = property.minimum; | ||
| propertyDef.property.max = property.maximum; | ||
| propertyDef.property.min = property.minimum; | ||
| } | ||
| data.property.kind = annotation + ("(\"" + data.property.name + "\")"); | ||
| return data; | ||
| propertyDef.property.kind = annotation + ("(\"" + propertyDef.property.name + "\")"); | ||
| return propertyDef; | ||
| }; | ||
| handleArray = function(keyRefData, mapping, data) { | ||
| handlePatternProperties = function(property, name, refMap, keyRefData, mapping, annotation) { | ||
| var key, patternProperties, patternProperty, propertyMapped; | ||
| patternProperties = []; | ||
| for (key in property.patternProperties) { | ||
| patternProperty = {}; | ||
| patternProperty.regex = key; | ||
| propertyMapped = util.mapProperty(property.patternProperties[key], name, annotation, mapping, refMap); | ||
| patternProperty.property = propertyMapped.property; | ||
| patternProperties.push(patternProperty); | ||
| } | ||
| return patternProperties; | ||
| }; | ||
| handleArray = function(keyRefData, mapping) { | ||
| var auxType, primitiveType; | ||
@@ -111,40 +134,43 @@ auxType = "List"; | ||
| } | ||
| return data.property.type = auxType; | ||
| return auxType; | ||
| }; | ||
| handleObject = function(property, name, refMap, keyRefData, mapping, data) { | ||
| var innerClass; | ||
| handleObject = function(property, name, refMap, keyRefData, mapping) { | ||
| var innerClass, objectDesc; | ||
| property = _.clone(property, true); | ||
| objectDesc = {}; | ||
| if (property.properties) { | ||
| if (keyRefData && keyRefData.type) { | ||
| return data.property.type = keyRefData.type; | ||
| objectDesc.type = keyRefData.type; | ||
| } else { | ||
| data.property.type = resolveType(property, name); | ||
| innerClass = resolveInnerClass(data.property.type, property, refMap, mapping); | ||
| return data.innerClass = innerClass; | ||
| objectDesc.type = resolveType(property, name); | ||
| innerClass = resolveInnerClass(objectDesc.type, property, refMap, mapping); | ||
| objectDesc.innerClass = innerClass; | ||
| } | ||
| } else if (keyRefData && keyRefData.innnerSchema && keyRefData.innnerSchema.properties) { | ||
| data.property.type = keyRefData.type; | ||
| objectDesc.type = keyRefData.type; | ||
| property.properties = keyRefData.innnerSchema; | ||
| return data.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping); | ||
| objectDesc.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping); | ||
| } else { | ||
| return data.property.type = 'Map'; | ||
| objectDesc.type = 'Map'; | ||
| } | ||
| return objectDesc; | ||
| }; | ||
| resolveTypeByRef = function(keyRef, refMap, propertyName, isArray) { | ||
| var data, innerSchema; | ||
| var innerSchema, tipo; | ||
| if (isArray == null) { | ||
| isArray = false; | ||
| } | ||
| data = {}; | ||
| data.type = ""; | ||
| tipo = {}; | ||
| tipo.type = ""; | ||
| innerSchema = Deref.util.findByRef(keyRef, refMap); | ||
| if (innerSchema) { | ||
| if (isArray) { | ||
| data.innnerSchema = {}; | ||
| data.innnerSchema.items = innerSchema; | ||
| tipo.innnerSchema = {}; | ||
| tipo.innnerSchema.items = innerSchema; | ||
| } else { | ||
| data.innnerSchema = innerSchema; | ||
| tipo.innnerSchema = innerSchema; | ||
| } | ||
| data.type = resolveType(innerSchema, propertyName); | ||
| tipo.type = resolveType(innerSchema, propertyName); | ||
| } else if (keyRef) { | ||
@@ -154,3 +180,3 @@ console.error("$ref not found: " + keyRef + " RefMap.keys -> [" + (Object.keys(refMap)) + "]"); | ||
| } | ||
| return data; | ||
| return tipo; | ||
| }; | ||
@@ -172,14 +198,15 @@ | ||
| resolveInnerClass = function(name, property, refMap, mapping) { | ||
| var aux, data; | ||
| data = null; | ||
| var aux, innerClass; | ||
| innerClass = {}; | ||
| if (property && !property.properties.title) { | ||
| data = {}; | ||
| data.className = pascalCase(name); | ||
| data.classDescription = property.description; | ||
| innerClass.className = pascalCase(name); | ||
| innerClass.classDescription = property.description; | ||
| aux = util.mapProperties(property, refMap, mapping); | ||
| data.classMembers = aux.classMembers; | ||
| innerClass.classMembers = aux.classMembers; | ||
| innerClass.innerClasses = aux.innerClasses; | ||
| innerClass.patternProperties = aux.patternProperties; | ||
| } | ||
| return data; | ||
| return innerClass; | ||
| }; | ||
| module.exports = util; |
+1
-1
| { | ||
| "name": "json-schema-java-mapper-utils", | ||
| "version": "0.0.1", | ||
| "version": "0.0.2", | ||
| "description": "This is used to convert json-schema to java/groovy files", | ||
@@ -5,0 +5,0 @@ "main": "lib/utils/map-properties.js", |
@@ -7,7 +7,8 @@ Deref = require('deref') | ||
| util.mapProperties = (expandedSchema, refMap, mapping) -> | ||
| data = {} | ||
| data.classMembers = [] | ||
| data.innerClasses = [] | ||
| data.className = pascalCase(expandedSchema.title) | ||
| data.classDescription = expandedSchema.description ? "" | ||
| classDef = {} | ||
| classDef.classMembers = [] | ||
| classDef.patternProperties = [] | ||
| classDef.innerClasses = [] | ||
| classDef.className = pascalCase(expandedSchema.title) | ||
| classDef.classDescription = expandedSchema.description ? "" | ||
@@ -25,17 +26,11 @@ if expandedSchema.properties and expandedSchema.properties.$ref | ||
| propParsed = util.mapProperty(property, key, '', mapping, refMap) | ||
| data.classMembers.push propParsed.property | ||
| data.innerClasses.push propParsed.innerClass if propParsed.innerClass | ||
| classDef.classMembers.push propParsed.property if propParsed.property | ||
| classDef.patternProperties = _.union(classDef.patternProperties, propParsed.patternProperties) if propParsed.patternProperties | ||
| classDef.innerClasses.push propParsed.innerClass if propParsed.innerClass | ||
| classDef | ||
| data | ||
| util.mapProperty = (property, name, annotation, mapping, refMap) -> | ||
| data = {} | ||
| data.property = {} | ||
| data.property.name = name | ||
| data.property.comment = property.description | ||
| data.property.required = if property.required isnt undefined then property.required else false | ||
| data.property.size = [] | ||
| data.property.size.push {"name": "min", "value": property.minLength} if property.minLength | ||
| data.property.size.push {"name": "max", "value": property.maxLength} if property.maxLength | ||
| propertyDef = {} | ||
| propertyDef.property = {} | ||
@@ -49,30 +44,52 @@ #if property has $ref resolve | ||
| keyRefData = resolveTypeByRef(keyRef, refMap, name) | ||
| data.property.type = keyRefData.type | ||
| propertyDef.property.type = keyRefData.type | ||
| if keyRefData.innnerSchema.type | ||
| property.type = keyRefData.innnerSchema.type | ||
| else | ||
| property.properties = keyRefData.innnerSchema | ||
| data.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping) | ||
| property.type = resolveType(data.innerClass, name) | ||
| else if property.patternProperties | ||
| propertyDef.patternProperties = [] | ||
| propertyDef.patternProperties = handlePatternProperties(property, name, refMap, keyRefData, mapping, annotation) | ||
| return propertyDef | ||
| propertyDef.property.name = name | ||
| propertyDef.property.comment = property.description | ||
| propertyDef.property.required = if property.required isnt undefined then property.required else false | ||
| propertyDef.property.size = [] | ||
| propertyDef.property.size.push {"name": "min", "value": property.minLength} if property.minLength | ||
| propertyDef.property.size.push {"name": "max", "value": property.maxLength} if property.maxLength | ||
| switch property.type | ||
| when 'array' | ||
| handleArray( keyRefData, mapping, data) | ||
| propertyDef.property.type = handleArray( keyRefData, mapping) | ||
| when 'object' | ||
| handleObject(property, name, refMap, keyRefData, mapping, data ) | ||
| objDef = handleObject(property, name, refMap, keyRefData, mapping ) | ||
| propertyDef.property.type = objDef.type | ||
| propertyDef.innerClass = objDef.innerClass | ||
| else | ||
| data.property.type = mapping[property.type] ? property.type | ||
| if name isnt "relatedContent" | ||
| propertyDef.property.type = mapping[property.type] ? property.type | ||
| switch data.property.type | ||
| switch propertyDef.property.type | ||
| when "BigDecimal" | ||
| data.property.decimalMax = property.maximum | ||
| data.property.decimalMin = property.minimum | ||
| propertyDef.property.decimalMax = property.maximum | ||
| propertyDef.property.decimalMin = property.minimum | ||
| when "Long" | ||
| data.property.max = property.maximum | ||
| data.property.min = property.minimum | ||
| propertyDef.property.max = property.maximum | ||
| propertyDef.property.min = property.minimum | ||
| data.property.kind = annotation + "(\"#{data.property.name}\")" | ||
| data | ||
| propertyDef.property.kind = annotation + "(\"#{propertyDef.property.name}\")" | ||
| propertyDef | ||
| handleArray = (keyRefData, mapping, data ) -> | ||
| handlePatternProperties = (property, name, refMap, keyRefData, mapping, annotation) -> | ||
| patternProperties = [] | ||
| for key of property.patternProperties | ||
| patternProperty = {} | ||
| patternProperty.regex = key | ||
| #should a patternProperty have innerClass | ||
| propertyMapped = util.mapProperty(property.patternProperties[key], name, annotation, mapping, refMap) | ||
| patternProperty.property = propertyMapped.property | ||
| patternProperties.push patternProperty | ||
| patternProperties | ||
| handleArray = (keyRefData, mapping) -> | ||
| auxType = "List" | ||
@@ -88,34 +105,37 @@ if keyRefData and keyRefData.innnerSchema.items isnt undefined | ||
| data.property.type = auxType | ||
| auxType | ||
| handleObject = (property, name, refMap, keyRefData, mapping, data ) -> | ||
| handleObject = (property, name, refMap, keyRefData, mapping ) -> | ||
| property = _.clone(property, true) | ||
| objectDesc = {} | ||
| #if object has no references we made a inner class | ||
| if property.properties | ||
| if keyRefData and keyRefData.type | ||
| data.property.type = keyRefData.type | ||
| objectDesc.type = keyRefData.type | ||
| else | ||
| data.property.type = resolveType(property, name) | ||
| innerClass = resolveInnerClass(data.property.type, property, refMap, mapping) | ||
| data.innerClass = innerClass | ||
| objectDesc.type = resolveType(property, name) | ||
| innerClass = resolveInnerClass(objectDesc.type, property, refMap, mapping) | ||
| objectDesc.innerClass = innerClass | ||
| else if keyRefData and keyRefData.innnerSchema and keyRefData.innnerSchema.properties | ||
| data.property.type = keyRefData.type | ||
| objectDesc.type = keyRefData.type | ||
| property.properties = keyRefData.innnerSchema | ||
| data.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping) | ||
| objectDesc.innerClass = resolveInnerClass(keyRefData.type, property, refMap, mapping) | ||
| else | ||
| data.property.type = 'Map' | ||
| objectDesc.type = 'Map' | ||
| objectDesc | ||
| resolveTypeByRef = (keyRef, refMap, propertyName, isArray = false) -> | ||
| data = {} | ||
| data.type = "" | ||
| tipo = {} | ||
| tipo.type = "" | ||
| innerSchema = Deref.util.findByRef(keyRef, refMap) | ||
| if innerSchema | ||
| if isArray | ||
| data.innnerSchema = {} | ||
| data.innnerSchema.items = innerSchema | ||
| tipo.innnerSchema = {} | ||
| tipo.innnerSchema.items = innerSchema | ||
| else | ||
| data.innnerSchema = innerSchema | ||
| tipo.innnerSchema = innerSchema | ||
| data.type = resolveType(innerSchema, propertyName) | ||
| tipo.type = resolveType(innerSchema, propertyName) | ||
@@ -126,3 +146,3 @@ else if keyRef | ||
| data | ||
| tipo | ||
@@ -140,13 +160,14 @@ resolveType = (schema, propertyName) -> | ||
| resolveInnerClass = (name, property, refMap, mapping) -> | ||
| data = null | ||
| innerClass = {} | ||
| #if the property has #ref and title we don't need innerClass | ||
| #because it should be already mapped | ||
| if property and not property.properties.title | ||
| data = {} | ||
| data.className = pascalCase(name) | ||
| data.classDescription = property.description | ||
| innerClass.className = pascalCase(name) | ||
| innerClass.classDescription = property.description | ||
| aux = util.mapProperties(property, refMap, mapping) | ||
| data.classMembers = aux.classMembers | ||
| data | ||
| innerClass.classMembers = aux.classMembers | ||
| innerClass.innerClasses = aux.innerClasses | ||
| innerClass.patternProperties = aux.patternProperties | ||
| innerClass | ||
| module.exports = util |
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
16709
25.41%11
22.22%255
11.35%1
-50%3
Infinity%