Apache Camel Intellij IDEA插件的工作已开始

仅仅因为圣诞节并不意味着骆驼停滞不前。

在23日晚上,我花了一些时间进行研究,并开始研究IDEA的Apache Camel插件的小原型。 它已经存在了很长时间。

原因是Apache Camel为目录提供了有关工具的大量有用信息。 该目录包含有关每个Camel组件,EIP,数据格式,语言等的所有小细节。

我一直希望有一个IDEA(如果可能的话,还有Eclipse)的小插件,以提供代码帮助来设置Camel端点-换句话说,要有ctrl +空格来显示可在任何给定的Camel端点上使用的Camel选项列表。

故事开始了……


因此,在漆黑的夜晚,我发现自己回到了Intellij IDEA插件领域。 自从我上次入侵IDEA插件以来已经有很长时间了。 这么多年前,我记不清了,但是大约是在2002年。我创建了一个名为Generate toString的小插件,它将为您的POJO类生成漂亮的toString方法,例如您可以生成equals / hashCode等。我维护了插件,并将其升级为较新的IDEA版本,这常常会破坏插件,或者他们已经移动/更改了API。 当时几乎没有文档记录插件API,而且编辑器本身也没有源代码,因此试图弄清楚如何使其再次工作或如何使用一些现有的IDEA对话框等都没有意思。但是最后还是有可能的,实际上我不得不使用Java Swing等来进行一些对话。该插件后来在Jetbrains上找到了一个新家,他们接管了该插件,并在IDEA中提供了该插件。 谢谢Jetbrains。 您是地球上最好的编辑器。


您可以在以下博客文章中阅读有关此故事的更多信息:

  • Intellij IDEA插件兼容性
  • 生成捆绑在IDEA 8中的toString()

快进到2016年,我回到了熟悉的水域,AST模型仍然命名为PsiSomething。

……故事结束了。

但是,做一个挂接到IDEA Java语言的插件花了一段时间才找出来,因为我走错了路,试图找到一个
关于智能完成的扩展点 。

因此,相反,我查看了一些现成的插件,可以找到它们的源代码,并最终找到了一个与Java语言挂钩的插件,这使我走上了正确的道路。

所以过了一会儿,我开始工作了,这真是令人惊奇地看到,智能完成建议列表包括给定组件的Camel端点选项。 在圣诞节的早晨,我入侵了一些黑客,并在第一条屏幕截图中发布了一条推文

今天在12月25日,我还有更多时间来完善代码并将其发布在github上。

我在github上创建了一个新项目,我们可以在其中破解代码,以使该插件很棒,很棒。 目的是将代码最终捐赠给Apache Camel。 但是现在我们可以将其分开,这样更容易,因为只有插件代码,而并非所有其他Camel源代码。

Github项目: https : //github.com/davsclaus/camel-idea-plugin

您可以在github页面上找到更多详细信息,其中包含有关如何尝试/运行和构建插件的说明。 还有一个问题跟踪器,其中包含我们需要处理的事情的票证。

欢迎任何人为该插件提供帮助。 遗憾的是,我目前没有太多时间来证明花几天时间在插件上进行黑客攻击,甚至认为这真的很有趣。 我必须集中精力完成《 骆驼在行动》第二版 。 我完成了微服务一章的工作已达到85%,然后在2017年初尽快完成另一章的工作。但是我也是一个人,希望获得一些有趣的黑客技术,所以我会不时地进行一些黑客研究。时间在插件上。

这本书是一个无耻的插件,在假期期间有40%的折扣代码。 折扣代码是camiach (“骆驼在行动”中获得40%的折扣,第二版,所有格式,有效期:2017年1月7日)

要结束此博客文章,请参见以下Camel IDEA插件的最新屏幕截图:

智能完成以显示可能的骆驼选项

该插件还支持值的智能补全,例如,基于枚举的选项显示了哪些选择(如果有默认值,则默认为哪个)

智能完成枚举值

参考: 我们的JCG合作伙伴 Claus Ibsen在Apache Camel博客的Claus Ibsen 上开始了Apache Camel Intellij IDEA插件的工作 。

翻译自: https://www.javacodegeeks.com/2016/12/work-started-apache-camel-intellij-idea-plugin.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python函数参数传递:传值还是传引用

引子 首先来看一个列子: def change(val):val.append(100)val [T, Z, Y] nums [0, 1] change(nums) print(nums)123456123456 猜猜结果应该是什么? 如果Python函数参数的传递是传值的话,结果应该是[0, 1],如果是传引用的话&am…

activitemq与spring的整合

activitemq整合spring 一.activmq的点对点模型 pom.xml: <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…

Python遍历字典的四种方法对比

#!/usr/bin/python from time import clockl [(x,x) for x in xrange (10000000)] d dict(l) t0 clock() # 方法一 for i in d: n d[i]t1 clock() # 方法二&#xff1a;最慢 for k,v in d.items(): n vt2 clock() # 方法三: 最快&#xff0c;推荐方法 for k,v in d.ite…

jboss启动初始页面_JBoss BRMS最佳实践– BPM流程初始化层的提示

jboss启动初始页面我过去发布过一些有关迁移策略的文章&#xff0c;仔细研究了流程层&#xff0c;并提供了一些有关jBPM的最佳实践 &#xff0c;它们都涉及到BPM策略的非常具体的部分。 我想重新讨论最佳实践的主题&#xff0c;然后在智能集成企业级别上&#xff0c;我们讨论使…

Python 学习笔记 多进程 multiprocessing

Python 解释器有一个全局解释器锁(PIL)&#xff0c;导致每个 Python 进程中最多同时运行一个线程&#xff0c;因此 Python 多线程程序并不能改善程序性能&#xff0c;不能发挥多核系统的优势&#xff0c;可以通过这篇文章了解。 但是多进程程序不受此影响&#xff0c; Python 2…

Django 学习笔记第一课

Django web 框架介绍&#xff1a; MVC框架的核心思想 核心思想&#xff1a;解耦&#xff1b; 好处&#xff1a;可扩展性&#xff0c;向后兼容&#xff0c;低耦合&#xff0c;高内聚&#xff1b; 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装&#xff1b; V:view…

记住要重置线程上下文类加载器

我很难思考与Java 加载有关的东西&#xff0c;而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此&#xff0c;在这些应用程序服务器或OSGi中&#xff0c;经常使用多个类加载器&#xff0c;并且透明地使用类加载器的能力降低了。 我同意OSGI Alliance B…

EntityFramework Code-First—领域类配置之DataAnnotations

本文出自&#xff1a;https://www.cnblogs.com/tang-tang/p/5510574.html 一、摘要 EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合&#xff0c;DataAnnotation特性会覆盖默认的EF约定。 DataAnnotation存在于两个命名空间里&#xff1a; System.Co…

Python 调试工具 PDB(Linux 环境下调试)

转载&#xff1a;http://blog.163.com/gjx0619126/blog/static/12740839320114995947700/ 在python中使用pdb模块可以进行调试 import pdb pdb.set_trace() 也可以使用python -m pdb mysqcript.py这样的方式 (Pdb) 会自动停在第一行&#xff0c;等待调试,这时你可以看看 帮助…

Ubuntu 更新源方法

安装完Ubuntu系统之后&#xff0c;面临的最主要的一个问题就是将apt安装源进行更新&#xff0c;因为在国内直接利用Ubuntu默认的安装源下载安装包速度慢&#xff0c;并且有的时候软件版本也比较旧。今天小编对Ubuntu更新源进行介绍&#xff1a;&#xff08;这里针对阿里源和清华…

PAT Basic 1002

1002 写出这个数 &#xff08;20 分&#xff09;读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;即给出自然数 n 的值。这里保证 n 小于 10​100​​。 输出格式&…

mybatis crud_MyBatis教程– CRUD操作和映射关系–第2部分

mybatis crud为了说明这一点&#xff0c;我们正在考虑以下示例域模型&#xff1a; 会有用户&#xff0c;每个用户可能都有一个博客&#xff0c;每个博客可以包含零个或多个帖子。 这三个表的数据库结构如下&#xff1a; CREATE TABLE user (user_id int(10) unsigned NOT NU…

MATLAB 排序函数(先按第一列排序(主排序)然后再按第二列排序(次排序))

利用 sortrows 函数实现MATLAB 先按第一列排序&#xff08;主排序&#xff09;然后再按第二列排序&#xff08;次排序&#xff09; A [8,9,6;5,5,2;2,5,8] sortrows(A)A 8 9 65 5 22 5 8ans 2 5 85 5 28 9 6

用PDB库调试Python程序

Python自带的pdb库&#xff0c;发现用pdb来调试程序还是很方便的&#xff0c;当然了&#xff0c;什么远程调试&#xff0c;多线程之类&#xff0c;pdb是搞不定的。用pdb调试有多种方式可选&#xff1a;1. 命令行启动目标程序&#xff0c;加上-m参数&#xff0c;这样调用myscrip…

数据操作

mysql> create table employee(-> id int primary key auto_increment,-> emp_name char(12) not null,-> sex enum(male,female) not null default male, #大部分是男的-> age int(3) unsigned not null default 28,-> hire_date date not null,-> post …

/usr/bin/ld: cannot find -l*** 这里***可以指lapack等

在Linux安装编译过程中有时会出现在如下形式的错误&#xff1a; /usr/bin/ld: cannot find -l***这里表示编译过程中找不到以下库名&#xff1a; lib库名(即***).so会发生这样的原因有以下三种情形&#xff1a; 系统没有安装相对应的lib 相对应的lib版本不对 lib&#xff0…

通过分区在Kafka中实现订单保证人

Kafka最重要的功能之一是实现消息的负载平衡&#xff0c;并保证分布式集群中的排序&#xff0c;否则传统队列中将无法实现。 首先让我们尝试了解问题陈述 让我们假设我们有一个主题&#xff0c;其中发送消息&#xff0c;并且有一个消费者正在使用这些消息。 如果只有一个使用…

破解栅栏密码python脚本

今天遇到一个要破解的栅栏密码&#xff0c;写了个通用的脚本 1 #!/usr/bin/env python2 # -*- coding: gbk -*-3 # -*- coding: utf_8 -*-4 # Author: 蔚蓝行5 # http://www.cnblogs.com/duanv6 e raw_input(请输入要解密的字符串\n)7 elen len(e)8 field[]9 for i in range(…

水稻已知os基因号,利用DAVIA进行GO功能富集分析

第1-5步&#xff1a; 已知水稻的基因&#xff08;os&#xff09;&#xff0c;进行功能注释 第6步 第七步&#xff1a; 第八步&#xff1a; 第九步&#xff1a; 第十步&#xff1a; 第十一步&#xff1a;

二,八,十,十六进制之间转换的相应方法

int num1 Integer.valueOf(n,16); //16进制转换成10进制 Integer.toHexString(Integer i); //10进制转换成16进制 补充&#xff1a;Integer.toHexString(Integer i);该方法得出的字符默认为小写&#xff0c;如果想得到大写结果&#xff0c;则变为Integer.toHexString(Integer i…