Coder Social home page Coder Social logo

camel-idea-plugin's People

Contributors

adrianbumbas avatar ammachado avatar apupier avatar bennetelli avatar davsclaus avatar dependabot-preview[bot] avatar dependabot[bot] avatar dimitrisli avatar essobedo avatar fharms avatar javaduke avatar jeremyross avatar lhein avatar markomackic avatar mateusz-bajorek avatar mayyanar27 avatar mcollovati avatar rastislavpapp avatar rparree avatar snurmine avatar tcke83 avatar zohen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camel-idea-plugin's Issues

Documentation - Make F1 doc about current options

and then refer to the general documentation with some kind of link.

eg so when users press F1 they see the docs about what their current endpoint is configured as. Its like the cmd hover thing we have today.

Its like this screenshot
https://github.com/davsclaus/camel-idea-plugin/blob/master/img/early6.png

And then if we have some kind of link in top so the user can see the general component docs.

As the cmd however thingy is obscure and not many people know it exists.

Smart completion for any String values

Currently we are limited to Camel annotations such as @Produce

We should allow to edit Camel endpoints in any string, as you can use this in

  • route builder classes
  • producer templates etc

So there should maybe be some quick way to determine if its a Camel endpoint or not. Which we can use the catalog to match any known component name.

Find Usages Provider - Camel Routes

If you are inside a route and need the from/to Usages. Same functionality you can do with Java

for example if you find usages from "timer:trigger" it should list the "timer:status"

from("timer:trigger")
    .transform().simple("ref:myBean")
    .to("log:out");

from("timer:status")
    .bean(health, "invoke")
    .log("Health is ${body}");

Intention - To add new Camel component from catalog

So you can add a new Camel component to your project classpath and have it added to your pom.xml or gradle build file as dependency.

The catalog can then show a list of all components, we may want to show by group so the list is not a big 200 lines, or have a table/spreadsheet like dialog where you can easily navigate in all four directions to find the component of choice.

Smart completion for property placeholders

So if you edit a camel endpoint such as

jms:foo?concurrentConsumers={{ CURSOR HERE

And then can press ctrl + space then we should try to find any keys from .properties files and show in the list.

Inspection to validate Camel endpoints

We could add a code inspection that discovers all your Camel endpoints and then uses the validate API from CamelCatalog to validate if they are okay or not, and then report issues.

Smart completion - Support editing context-path of the uris

Currently we only support URI parameters, eg (foo=bar&me=you).

However the Camel endpoints have the context-path part which we can have smart completion / code assistance for. This is a bit more tricky because each component can have a bit different syntax of the context-path (some uses / others : etc to separate multi values). So we need to parse the syntax and understand which value your are editing and provide the right suggestion.

Add support for custom Camel components

If the user has their own camel components which has camel metadata, then we should allow to use them as well.

This requires detecting them from the project / classpath / maven pom etc. And then discover if there is Camel components and add them to the CamelCatalog, which has APIs for adding custom components.

We have some code in fabric8-forge that discovers this
https://github.com/fabric8io/fabric8-forge/blob/master/addons/camel/src/main/java/io/fabric8/forge/camel/commands/project/AbstractCamelProjectCommand.java#L541

Only active Camel plugin if its a Camel project

We should add some logic in project open / close etc to detect if its a Camel project (eg has camel-core on dependency classpath) and if so only active the Camel smart completions if so.

Smart completion for XML files

We should also do smart completions for XML files so you can edit Camel endpoints there as well.

This requires an XML reference
https://github.com/davsclaus/camel-idea-plugin/blob/master/resources/META-INF/plugin.xml#L26

And find out how to do that.

There is some IDEA plugins that can do this.
https://github.com/JetBrains/intellij-community/tree/master/plugins

Maybe xpath
https://github.com/JetBrains/intellij-community/blob/master/plugins/xpath/xpath-view/src/META-INF/plugin.xml#L159

Intention - Open component documentation

An intention or hint or something which allows you when the cursor is positioned on a Camel endpoint, to open the component documentation from the Camel website.

Or we can load the .adoc file from the camel-catalog, and show in some page inside IDEA itself or something.

Visual route diagram

Wonder if we can reuse yfrog from IDEA to show route diagram / diagram popup as IDEA can do for class hierarchy.

This plugin is in IDEA ultimate, and maybe its some kind of addon you can install on community as well.

screen shot 2016-12-28 at 9 43 33 am
screen shot 2016-12-28 at 9 43 46 am

One instance of CamelCatalog

We need to use one instance of CamelCatalog so we use the same.

Also later when we add support for adding custom Camel components, switching to version of Camel catalog based on what Camel version the user has in his/her project, we need these changes on the same instance for the entire plugin code.

We can likely use a static instance as there is one plugin only.

Maybe have a CamelCatalogService where we have this static which we then use to get hold of.

Should we have a little website

Maybe using github pages to have a little website for the plugin?

We could try to build a site using adoc files which is something we are starting to use at Apache Camel and other projects. Then it can build a html site or I think github can show adoc files as well (not as sure for github pages).

https://pages.github.com/

Language Server Protocol

Wonder if IDEA supports LSP or we can have some reuse of the plugin so parts of it can be used in Eclipse / Eclipse Che or other editors which can support LSP as well.

There are surely parts of this plugin that touches the camel catalog and checks the endpoint uri etc, that can be made reusable without relying on IDEA APIs.

Intention to add new Camel endpoint

We could have an intention (alt + enter) if you position the cursor on an empty string.

Then the intention could have a dialog where you can select among the known Camel components from the project (eg on the classpath). And then the smart completion can take over to assist fill in the rest of the details of the uri.

F1 documentation for data formats and languages

If you position the cursor on a Camel route that uses data formats or languages, we should detect from the AST what is what and try to resolve which data format or language, eg jackson-json or simple language etc, and then load and show the documentation accordingly.

Camel scratch file

IDEA has a stratch pad where you can chose a language, such as java, groovy, xpath, xml, json etc and then write some scratch code which you can run, debug etc.

Wonder if there is something we can do for Camel. Such as setting up a Camel endpoint and consume or produce a message to it easily?

Or try the simple expression language on a dummy exchange etc

The action is: new scratch file

screen shot 2016-12-27 at 1 56 18 pm

Add support for using version of Camel from the project

Currently we use the 2.19-SNAPSHOT camel catalog which is embedded in the plugin.

We should find a way to detect what version the user is using, eg 2.18.1 etc in a maven project / dependency list. And find that version, and configure the camel-catalog to use that version. There is API on CamelCatalog to switch version.

Add Camel icon in gutter

Wonder if we should add a Camel icon on the lines which has detected a Camel endpoint?
For spring beans you also have an icon in the gutter when its a Spring Bean / @bean or something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.