我想从接口自动生成一些java类.我的第一个想法是编写代码生成器,并将其集成为maven插件.
我正在考虑创建一个maven插件,其中包含在构建过程中调用的codegen目标.
因此,如果我选择此路由,如何为插件提供要处理的接口?应该在哪里生成文件?
是否有任何现有的插件可以配置为生成默认的类实现?
我记得eclipse和idea有这个模板根据其属性自动创建一个对象的hashCode.
如果使用数字和字符串,其中一种策略是这样的.
return stringValue.hashCode() + intValue * 32;
Run Code Online (Sandbox Code Playgroud)
这样的东西.
我手头没有也没有eclipse或想法,我想创建这样的功能.
编辑
根据答案,我创建了这个迷你课程
class StringInt {
private final String s;
private final int i;
static StringInt valueOf( String string , int value ) {
return new StringInt( string, value );
}
private StringInt( String string, int value ) {
this.s = string;
this.i = value;
}
public boolean equals( Object o ) {
if( o != null && o instanceof StringInt ){
StringInt other = ( StringInt ) o;
return this.s …Run Code Online (Sandbox Code Playgroud) 问题是是否使用属性或属性.
没有发现这个记录,所以进行了一些测试(铬12):
property <=>属性
accept, alt, formMethod, formTarget, id, name, placeholder, type, maxlength, size form: method, name, target, action, enctype
property <= attribute
value, autofocus, checked, disabled, formNoValidate, multiple, required
property =>属性
indeterminate
propetry> <属性
defaultValue, validity, defaultChecked, readOnly form: novalidate
给出一个随机属性/值来应用于一个元素,这里是我提出的最好的规则(根据Tim Down(谢谢!)修改):
if class,write with classList,read with classNameproperty
如果一个表单,总是使用属性读取(并且要小心)
如果typeof element[propName] != "undefined",使用财产,即,element[attr]=val
否则,使用属性,即 element.setAttribute(attr,val)
这甚至接近正确吗?
注意:有趣的是,如果你有一个名为"novalidate"的元素的表单,是否可以访问novalidate表单本身的属性?
我需要转换任意字符串:
到有效的Java标识符:
是否有现有的工具可用于此任务?
有了这么多Java源代码重构/生成框架,人们会认为这应该是非常常见的任务.
是否有任何库可以从JSON模式生成Javascript类型的对象(JS函数)?基本上是这个http://code.google.com/p/jsonschema2pojo/的等效JS版本.谢谢.
编辑:
从...开始 :
{
"description": "An entity",
"type":"object",
"properties": {
"geometries": {"type": "array",
"items": {
"$ref" : "geometry"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想为我生成一些像这样的代码
function Entity {
this.geometries;
}
Run Code Online (Sandbox Code Playgroud)
显然,使用$ ref等模式可能会更复杂.我希望这会给出这个想法.
我正在寻找与语言无关(至少在某些范围内)源代码生成的System.CodeDom命名空间,并且我发现了一些阻止使用的信息CodeDom.
我认为这篇早期博客文章中描述的一些遗漏现在已经修复,而且CodeDom似乎没有提供创建switch语句的方法的事实仍然允许 - 性能较差? - 没有弄乱生成类型的公共接口的变通方法.这同样适用于自动C#属性和集合初始值设定项.
但是,其他遗漏实际上无法解决,例如无法创建终结器,无法声明扩展方法,或者缺乏对通用引用类型约束的直接支持.
请注意,CodeSnippetTypeMember通过任何其他方式使用或注入文字源代码片段的建议解决方案并不令人满意,因为它们不是与语言无关的 - 从而消除了整个使用点CodeDom而不是String.Format文字代码片段.
最后,甚至在这个SO问题中建议"CodeDom是失败的,表达树(或者更确切地说是"语句"树)是前进的方式" - 尽管没有任何解释如何从表达式树中实际获取任何源代码(除了不能用表达式树声明类的限制之外.
CodeDom仍然是生成源代码的首选方法,还是当前的BCL提供了一个我想不到的名称的任何模糊替换?
<#@ template debug="false" hostspecific="false" language="C#" #>
Run Code Online (Sandbox Code Playgroud)
hosts特有属性在这里表示什么.
每个平台似乎都有数以百万计的选择,但我很难找到一个简单的C#解决方案.我发现的所有这些似乎给了我麻烦:要么他们根本不工作(例如http://swaggercodegen.azurewebsites.net/),要么只支持2.0(例如AutoRest和NSwag).一半的工具甚至不清楚它们支持的版本:-(
我知道官方工具,但这需要JDK 7,这对我来说当前不是一个选择.
在绝望中我甚至尝试将swagger规范转换为2.0,但是我试过的一半转换工具不起作用,给出了相互矛盾的建议,或者我无法弄清楚如何使用(我发现自己很快陷入了nodejs. ..这真的是一个勇敢的新世界吗?!带回WSDL ;-)).
我已经进行了广泛的谷歌搜索,但找不到一个好的工具来做到这一点。我能找到的最接近的是https://github.com/googleapis/gnostic,它允许将 OpenAPI 描述 (swagger.yaml) 转换为 .pb 文件或 .json 文件。我想知道是否有任何工具可以将此 .pb 文件转换为 .proto proto3 文件?
我也试过https://github.com/NYTimes/openapi2proto但不幸的是有一些情况没有正确处理。
在此先感谢您的帮助!
我正在开发一个带有 Angular 前端和 RESTful Spring Boot 后端的应用程序
我从 org.openapitools找到了这个非常方便的 maven 插件openapi-generator-maven-plugin。凭借其代码生成功能,它有助于在我们的 API 的前端和后端之间实施“合同优先”的方法。但是我们的 swagger 文件在 requestBody 和 responseBody 定义中使用了“oneOf”属性。我试图从中生成 Spring 代码,但生成的 Java 类缺少导入:
import com.pack.api.dto.OneOfLatteCoffeAmericanoCoffe;
import com.pack.api.dto.UNKNOWN_BASE_TYPE;
Run Code Online (Sandbox Code Playgroud)
是否可以配置插件以使用 Swagger 的 oneOf 属性?我正在使用 Spring Boot 2.3.1、Swagger 3.0 和 Openapi-generator-maven-plugin 4.3
code-generation ×10
.net ×3
java ×3
javascript ×2
c# ×1
codedom ×1
dom ×1
eclipse ×1
hash ×1
identifier ×1
json ×1
maven-2 ×1
maven-plugin ×1
openapi ×1
plugins ×1
spring-boot ×1
string ×1
swagger ×1
t4 ×1