🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

json-schema-java-mapper-utils

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-schema-java-mapper-utils - npm Package Compare versions

Comparing version
0.0.1
to
0.0.2
json-schema-java-mapper-utils.iml

Sorry, the diff of this file is not supported yet

+3
# json-schema-java-mapper-utils
[![Build Status](https://img.shields.io/travis/gextech/json-schema-java-mapper-utils/master.svg?style=flat)](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 @@ ==================

+97
-70

@@ -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;
{
"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