diff --git a/src/generators/java-models-generator.js b/src/generators/java-models-generator.js index 5ceb8fa..2029bf6 100644 --- a/src/generators/java-models-generator.js +++ b/src/generators/java-models-generator.js @@ -11,7 +11,7 @@ const templateUnion = fs.readFileSync(path.resolve(path.join('templates', 'union module.exports = (service) => { const unions = javaUnions.mapUnions(service.unions, service.models, service.namespace) - const models = javaModels.mapJavaModels(service.models, service.namespace) + const models = javaModels.mapJavaModels(service.models, service.namespace, 'models', service) const enums = javaModels.mapJavaEnums(service.enums, service.namespace) const modelFiles = models.map(model => { diff --git a/src/java-model.js b/src/java-model.js index 171257a..00c31cb 100644 --- a/src/java-model.js +++ b/src/java-model.js @@ -3,14 +3,14 @@ const javaType = require('./java-type') module.exports = { - mapJavaModels: (models, namespace, suffix='models') => { + mapJavaModels: (models, namespace, suffix='models', service) => { return models.map(model => { model.name = utils.pascalcase(model.name) model.package = `${namespace}.${suffix}`; model.dir = model.package.replace(/\./g, '/') model.fields = model.fields.map(field => { field.nameSafe = utils.camelcase(javaType.safeName(field.name)) - field.type = javaType.mapJavaType(field.type, namespace) + field.type = javaType.mapJavaType(field.type, namespace, '', service) field.default = javaType.mapDefaultValue(field.type, field.default) return field }) diff --git a/src/java-type.js b/src/java-type.js index 798dde9..5fa9d66 100644 --- a/src/java-type.js +++ b/src/java-type.js @@ -64,22 +64,26 @@ const SUPPORTED_TYPES = { } } -function getCustomType(type, namespace, suffix='') { +function getCustomType(type, namespace, suffix='', service) { let match = LAST_ELEMENT_REGEX.exec(type) let name = '' let importstatement = null + let isEnum = false if(match) { name = utils.pascalcase(match[2])+suffix + isEnum = match[1].includes('enums') importstatement = `${match[1].replace('enums', 'models')}.${name}` }else { name = utils.pascalcase(type)+suffix + isEnum = service.enums.find(e => e.name == type) ? true : false importstatement = `${namespace}.models.${name}` } return { name, baseType: name, + isEnum, fullQualifiedName: importstatement, imports: [ importstatement ] } @@ -98,9 +102,9 @@ function mapCollection(type) { } module.exports = { - mapJavaType: (type, namespace, suffix='') => { + mapJavaType: (type, namespace, suffix='', service) => { const baseType = COLLECTION_REGEX.exec(type)[1] - let javaType = SUPPORTED_TYPES[baseType] || getCustomType(baseType, namespace, suffix) + let javaType = SUPPORTED_TYPES[baseType] || getCustomType(baseType, namespace, suffix, service) if(type.startsWith('[')) { javaType = mapCollection(javaType);