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

raml2code

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

raml2code - npm Package Compare versions

Comparing version
0.0.14
to
0.0.15
+49
examples/gradle-example/Gulpfile.js
var gulp = require('gulp');
var raml2code = require("raml2code");
var genPojos = require("raml2code/lib/generators/groovy/pojo");
var genJaxRS = require("raml2code/lib/generators/groovy/jaxrsInterface");
var genRetrofitClient = require("raml2code/lib/generators/groovy/retrofitClient");
var raml = require('gulp-raml');
var packagePojo = "gex.catapi.dto";
var packageClient = "gex.catapi.client";
var packageJersey = "gex.catapi.resources";
var ramlResource = '../../test/raml/cats.raml'
gulp.task('raml', function() {
gulp.src(ramlResource)
.pipe(raml())
.pipe(raml.reporter('default'))
.pipe(raml.reporter('fail'));
});
gulp.task("genPojos", ['raml'], function(){
gulp.src(ramlResource)
.pipe(raml2code({generator: genPojos, extra: {package: packagePojo}}))
.pipe(gulp.dest('./src/generated/groovy/gex/catapi/dto'));
});
gulp.task("genRetrofitClient" , ['raml'], function(){
gulp.src(ramlResource)
.pipe(raml2code({generator: genRetrofitClient, extra: {package: packageClient, importPojos: packagePojo}}))
.pipe(gulp.dest('./src/generated/java/gex/catapi/client'));
});
gulp.task("genJaxRS" , ['raml'], function(){
gulp.src(ramlResource)
.pipe(raml2code({generator: genJaxRS, extra: {package: packageJersey, importPojos: packagePojo}}))
.pipe(gulp.dest('./src/generated/groovy/gex/catapi/resources'));
});
gulp.task('build', ['raml', 'genPojos', 'genJaxRS', 'genRetrofitClient']);
gulp.task('default', ['build']);
{
"name": "tempalte-builder-service",
"version": "0.0.1",
"description": "Temaplate builder service API(RAML definitions)",
"devDependencies": {
"gulp": "3.8.8",
"gulp-raml": "0.1.3",
"raml2code": "0.0.14"
}
}
{{#classMembers}}
{{#if comment}}/* {{comment}} */{{/if}}
{{{type}}} {{name}}
{{/classMembers}}
{{#classMembers}}
{{#if comment}}/* {{comment}} */{{/if}}
{{{type}}} {{name}}
{{/classMembers}}
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Owner",
"id": "owner.schema.json",
"description": "A owner cat from Atoms catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a owner",
"type": "integer"
},
"name": {
"description": "Name of the owner",
"type": "string"
}
},
"required": ["id", "name"]
}
+30
-23

@@ -1,2 +0,2 @@

var commonHelpers, dirname, fs, generator, path, sanitize, template, util;
var cmPartial, commonHelpers, deref, dirname, fs, generator, path, sanitize, template, util;

@@ -19,4 +19,15 @@ fs = require('fs');

cmPartial = path.resolve(dirname, "tmpl/classMembersPartial.hbs");
generator.template = fs.readFileSync(template).toString();
generator.partials = [
{
name: "classMembers",
str: fs.readFileSync(cmPartial).toString()
}
];
deref = require('deref')();
sanitize = function(str) {

@@ -33,4 +44,5 @@ var aux, res;

generator.parser = function(datos) {
var data, key, model, p, parsed, ref, row, schemaName, _i, _len, _ref, _ref1;
var data, model, normSchema, parsed, row, schema, schemaName, schemas, someData, _i, _j, _len, _len1, _ref, _ref1;
parsed = [];
schemas = [];
if (datos.extra) {

@@ -44,25 +56,20 @@ datos.extra["package"] = "" + datos.extra["package"] + "." + datos.version;

data = JSON.parse(row[schemaName]);
model = {};
model.className = data.title;
model.classMembers = [];
model.classDescription = (_ref1 = data.description) != null ? _ref1 : "";
if (data.type === "array") {
ref = data.items['$ref'].replace("#/", "").split(".")[0];
ref = util.capitalize(ref);
model.classMembers.push({
name: "items",
type: "List<" + ref + ">"
});
}
for (key in data.properties) {
p = data.properties[key];
model.classMembers.push(util.mapProperty(p, key));
}
model.extra = datos.extra;
parsed.push({
name: datos.version + "/" + util.capitalize("" + (sanitize(schemaName)) + ".groovy"),
model: model
});
schemas.push(data);
}
}
for (_j = 0, _len1 = schemas.length; _j < _len1; _j++) {
schema = schemas[_j];
normSchema = deref(schema, schemas);
model = {};
model.className = normSchema.title;
model.classDescription = (_ref1 = normSchema.description) != null ? _ref1 : "";
someData = util.mapProperties(normSchema, deref.refs);
model.classMembers = someData.classMembers;
model.innerClasses = someData.innerClasses;
model.extra = datos.extra;
parsed.push({
name: datos.version + "/" + util.capitalize("" + model.className + ".groovy"),
model: model
});
}
return parsed;

@@ -69,0 +76,0 @@ };

@@ -10,8 +10,9 @@ package {{extra.package}}

public class {{{className}}} implements Serializable {
{{>classMembers}}
}
{{#classMembers}}
{{#if comment}} /* {{comment}} */{{/if}}
{{{type}}} {{name}}
{{/classMembers}}
{{#innerClasses}}
class {{{className}}} implements Serializable {
{{>classMembers}}
}
{{/innerClasses}}

@@ -1,3 +0,5 @@

var util;
var deref, util;
deref = require('deref')();
util = {};

@@ -10,3 +12,3 @@

p = resource.uriParameters[key];
uriParameters.push(util.mapProperty(p, key, annotation));
uriParameters.push(util.mapProperty(p, key, annotation).property);
}

@@ -21,3 +23,3 @@ return uriParameters;

p = queryParams[key];
params.push(util.mapProperty(p, key, annotation));
params.push(util.mapProperty(p, key, annotation).property);
}

@@ -27,28 +29,67 @@ return params;

util.mapProperty = function(property, name, annotation) {
var p;
p = {};
p.name = name;
p.comment = property.description;
util.mapProperties = function(expandedSchema, refMap) {
var data, key, propParsed, property;
data = {};
data.classMembers = [];
data.innerClasses = [];
for (key in expandedSchema.properties) {
property = expandedSchema.properties[key];
propParsed = util.mapProperty(property, key, '', refMap);
data.classMembers.push(propParsed.property);
if (propParsed.innerClass) {
data.innerClasses.push(propParsed.innerClass);
}
}
return data;
};
util.mapProperty = function(property, name, annotation, refMap) {
var aux, auxType, data, innnerSchema;
data = {};
data.property = {};
data.property.name = name;
data.property.comment = property.description;
switch (property.type) {
case 'array':
p.type = "List";
auxType = "List";
if (property.items["$ref"]) {
innnerSchema = refMap[property.items["$ref"].split("#")[0]];
if (innnerSchema.title) {
auxType += "<" + (util.capitalize(innnerSchema.title)) + ">";
}
}
data.property.type = auxType;
break;
case 'object':
if (property.properties) {
data.property.type = util.capitalize(name);
data.innerClass = {};
data.innerClass.className = util.capitalize(name);
data.innerClass.classDescription = property.description;
aux = util.mapProperties(property);
data.innerClass.classMembers = aux.classMembers;
} else if (property["$ref"]) {
innnerSchema = refMap[property["$ref"].split("#")[0]];
data.property.type = util.capitalize(innnerSchema.title);
} else {
data.property.type = 'Map';
}
break;
case 'string':
p.type = "String";
data.property.type = "String";
break;
case 'boolean':
p.type = "Boolean";
data.property.type = "Boolean";
break;
case 'number':
p.type = "Double";
data.property.type = "Double";
break;
case 'integer':
p.type = "Integer";
data.property.type = "Integer";
break;
case 'object':
p.type = "Map";
data.property.type = "Map";
}
p.kind = annotation + ("(\"" + p.name + "\")");
return p;
data.property.kind = annotation + ("(\"" + data.property.name + "\")");
return data;
};

@@ -127,2 +168,12 @@

util.sanitize = function(str) {
var aux, res;
aux = str.split(".");
res = '';
aux.forEach(function(it) {
return res += util.capitalize(it);
});
return res;
};
module.exports = util;
{
"name": "raml2code",
"version": "0.0.14",
"version": "0.0.15",
"description": "Raml spec to code",

@@ -28,3 +28,4 @@ "main": "index.js",

"through2": "~0.6.1",
"lodash": "^2.4.1"
"lodash": "^2.4.1",
"deref": "0.2.2"
},

@@ -31,0 +32,0 @@ "devDependencies": {

@@ -20,3 +20,6 @@ # Raml to code generator

## generators included and tested
* raml to Groovy pojo
* Groovy POJO
* JAX-RS Interface
* RETROFIT Client

@@ -23,0 +26,0 @@ ## Gulp-plugin

@@ -10,4 +10,10 @@ fs = require('fs')

template = path.resolve(dirname, "tmpl/pojo.hbs")
cmPartial = path.resolve(dirname, "tmpl/classMembersPartial.hbs")
generator.template = fs.readFileSync(template).toString()
generator.partials = [
name : "classMembers"
str : fs.readFileSync(cmPartial).toString()
]
deref = require('deref')();

@@ -23,21 +29,26 @@ sanitize = (str)->

parsed = []
schemas = []
if datos.extra
datos.extra.package = "#{datos.extra.package}.#{datos.version}"
for row in datos.schemas
for schemaName of row
data = JSON.parse(row[schemaName])
model = {}
model.className = data.title
model.classMembers = []
model.classDescription = data.description ? ""
schemas.push data
if data.type is "array"
ref = data.items['$ref'].replace("#/", "").split(".")[0]
ref = util.capitalize(ref)
model.classMembers.push {name: "items", type: "List<#{ref}>"}
for key of data.properties
p = data.properties[key]
model.classMembers.push util.mapProperty(p, key)
model.extra = datos.extra
parsed.push {name: datos.version + "/" + util.capitalize("#{sanitize(schemaName)}.groovy") , model}
for schema in schemas
normSchema = deref(schema, schemas)
model = {}
model.className = normSchema.title
model.classDescription = normSchema.description ? ""
someData = util.mapProperties(normSchema, deref.refs)
model.classMembers = someData.classMembers
model.innerClasses = someData.innerClasses
model.extra = datos.extra
parsed.push {name: datos.version + "/" + util.capitalize("#{model.className}.groovy") , model}
parsed

@@ -44,0 +55,0 @@

@@ -10,8 +10,9 @@ package {{extra.package}}

public class {{{className}}} implements Serializable {
{{>classMembers}}
}
{{#classMembers}}
{{#if comment}} /* {{comment}} */{{/if}}
{{{type}}} {{name}}
{{/classMembers}}
{{#innerClasses}}
class {{{className}}} implements Serializable {
{{>classMembers}}
}
{{/innerClasses}}

@@ -0,1 +1,2 @@

deref = require('deref')();
util = {}

@@ -6,3 +7,3 @@ util.getUriParameter = (resource, annotation)->

p = resource.uriParameters[key]
uriParameters.push util.mapProperty(p, key, annotation)
uriParameters.push util.mapProperty(p, key, annotation).property
uriParameters

@@ -14,25 +15,59 @@

p = queryParams[key]
params.push util.mapProperty(p, key, annotation)
params.push util.mapProperty(p, key, annotation).property
params
util.mapProperties = (expandedSchema, refMap)->
data = {}
data.classMembers = []
data.innerClasses = []
for key of expandedSchema.properties
property = expandedSchema.properties[key]
propParsed = util.mapProperty(property, key, '', refMap)
data.classMembers.push propParsed.property
data.innerClasses.push propParsed.innerClass if propParsed.innerClass
util.mapProperty = (property, name, annotation)->
p = {}
p.name = name
p.comment = property.description
data
util.mapProperty = (property, name, annotation, refMap)->
data = {}
data.property = {}
data.property.name = name
data.property.comment = property.description
switch property.type
when 'array'
p.type = "List"
# p.name = "items"
when 'string' then p.type = "String"
when 'boolean' then p.type = "Boolean"
when 'number' then p.type = "Double"
when 'integer' then p.type = "Integer"
when 'object' then p.type = "Map"
auxType = "List"
if property.items["$ref"]
innnerSchema = refMap[property.items["$ref"].split("#")[0]]
if innnerSchema.title
auxType += "<#{util.capitalize(innnerSchema.title)}>"
p.kind = annotation + "(\"#{p.name}\")"
p
data.property.type = auxType
when 'object'
#if object has no references we made a inner class
if property.properties
data.property.type = util.capitalize(name)
data.innerClass = {}
data.innerClass.className = util.capitalize(name)
data.innerClass.classDescription = property.description
aux = util.mapProperties(property)
data.innerClass.classMembers = aux.classMembers
#if object has references we map on the POJO
else if property["$ref"]
innnerSchema = refMap[property["$ref"].split("#")[0]]
data.property.type = util.capitalize(innnerSchema.title)
else
data.property.type = 'Map'
when 'string' then data.property.type = "String"
when 'boolean' then data.property.type = "Boolean"
when 'number' then data.property.type = "Double"
when 'integer' then data.property.type = "Integer"
when 'object' then data.property.type = "Map"
data.property.kind = annotation + "(\"#{data.property.name}\")"
data
util.parseResource = (resource, parsed, annotations, parentUri = "", parentUriArgs = []) ->

@@ -86,2 +121,9 @@

util.sanitize = (str)->
aux = str.split(".")
res = ''
aux.forEach (it)->
res += util.capitalize(it)
res
module.exports = util

@@ -16,5 +16,2 @@ package org.gex.v1

/* Name of the owner */
String ownerName
/* Something to play */

@@ -24,7 +21,17 @@ Map toy

/* Something to eat */
Map food
Food food
/* The owner of the cat. */
Owner owner
/* Errores al procesar la petición */
List errors
List<Error> errors
}
class Food implements Serializable {
/* what the cat eats */
String name
}

@@ -33,3 +33,2 @@ var raml2code =require('../..');

var content = file.contents.toString('utf8');
// console.log(content)
exampleContents = exampleContents.toString('utf8').split('\n');

@@ -36,0 +35,0 @@ content.split('\n').forEach(function(e,i){

@@ -33,3 +33,2 @@ var raml2code =require('../..');

var content = file.contents.toString('utf8');
// console.log(content);
exampleContents = exampleContents.toString('utf8').split('\n');

@@ -36,0 +35,0 @@ content.split('\n').forEach(function(e,i){

@@ -16,6 +16,2 @@ {

},
"ownerName":{
"description": "Name of the owner",
"type": "string"
},
"toy":{

@@ -35,2 +31,7 @@ "description": "Something to play",

},
"owner":{
"type": "object",
"description": "The owner of the cat.",
"$ref": "owner.schema.json"
},
"errors":{

@@ -37,0 +38,0 @@ "title": "Errors",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet