Preparation
Before you start, be sure you have all items on the following check list
- Latest Groovy Eclipse plugin, idealy inside SpringSource Tool Suite
- Latest version of DSLD files descriptor
You should also explore the sources at the end of the article. DSL Descriptors for Groovy Eclipse is actually only source describing the DSLD and DSLD Examples could give you good overview what is possible to achieve with DSLDs.
When everything in place, you can open your Eclipse, create new Groovy project and add libraries you want the DSLD create for to the classpath (for testing and documentation purposes). Then save the DSLD files descriptor into the src folder and also create your new DSLD file in the src folder too.
Creating the DSLD file
The DSL descriptor is all about finding the right places using the pointcuts and contributing right method or properties to the scope found. If you successfully download the DSLD files descriptor you should have a code completion on place and can start coding.
If you are author of the framework or library it is easy to find out which contribution you want to create. If you aren't you should find the origins of contributions you want to cover in your DSLD not to forget anything. In the case of Gaelyk there are a few places where this happens: variables for views and templates are added using GaelykBindingEnhancer, routes DSL is defined in RoutesBaseScript and finally App Engine enhancements comes from GaelykCategory.
The DSLD official documentation is little bit messy so I've created following tables of all available pointcuts and contributions.
Pointcuts and Contributions
As soon as you know what do you want contribute and how should you do it the rest is all about copy pasting and rewriting (unless your DSL comes from a category so you can use the Category Explorer for scaffolding).
Shortcuts for Groovlets
Groovlets are scripts which resides in war/WEB-INF/groovy so we could pick them using sourceFolderOfCurrentType('war/WEB-INF/groovy') pointcut in combination with enclosingScript(). Everything else is just about declaring the right methods and properties.
App Engine Shortcuts
App Engine shortcuts are all defined inside GaelykCategory class. They apply on particular App Engine types (currentType(type)) inside Groovlets which are scripts residing in war/WEB-INF/groovy as written above. We define the pointcut once and then we can use it for each supported type. Since GaelykCategory is category the Category Explorer was used for scaffolding.
Image Manipulation Language
The definition of image manipulation language is the most advanced one. We are looking for closure passed into the method call named transform on com.google.appengine.api.images.Image type. Everything else is just the same boring copy pasting again.
Tips, tricks and pitfalls
Here are some ideas which I learnt when I created the Gaelyk DSDL.
- The DSLD file won't compile and show in DSLD preferences screen if you import any non-standard class even it is on the project's classpath so you'd better prefer to use fully qualified strings to specify the types e.g. javax.servlet.http.HttpServletRequest.
- Some of the pointcuts could be tricky, e.g. name of the script when name() pointcut is used is always without the suffix. To get name with the suffix included use fileName() one. You can also get only the suffix by using fileSuffix() pointcut.
- I cannot find the easy way to debug the script but you can run your STS from console and watch the log. You can insert console prints in your DSLD files to explore the states of the variables.
- Divide a editor viewport on half vertically and show a 'test' file/script/class bellow your DSLD file. If something goes wrong you get visual feedback immediately.
- Try to be DRY. Combine pointcuts to the closures and reuse them.
- Find the source of contributions and try to reuse them. For example you can scaffold the DSLD from Category class using the simple Category Explorer
- Think twice when arguments are type of Map. Aren't they just named args? So you should use useNamedArgs = true and write all the desired named args in params (see e.g. add method on queues)
- DSLDs are greate but there are still some features missing. For example I couldn't find how to specify what parameters are expected to be passed into the closure or how to specify type parameters for parametrized types e.g. maps.
Splitted viewport for better visual feedback
Summary
DSL descriptors takes coding Groovy in Eclipse one level higher. Where used to be underlined methods and properties you now get full code completion. Even more advanced DSL could be supported, just like Gaelyk's image manipulation language. So don't wait and write DSL descriptor for your favourite library! The Groovy Eclipse users will love you for it!
Sources
Written by Vladimir Oraný (@musketyr)
Not a single word about what this is all about. The link in the beginning explained it for me afterwards - DSL code completion in Groovy Eclipse.
ReplyDeletePS: you have a typo in your summary.
The effectiveness of IEEE Project Domains depends very much on the situation in which they are applied. In order to further improve IEEE Final Year Project Domains practices we need to explicitly describe and utilise our knowledge about software domains of software engineering Final Year Project Domains for CSE technologies. This paper suggests a modelling formalism for supporting systematic reuse of software engineering technologies during planning of software projects and improvement programmes in Project Centers in Chennai for CSE.
DeleteSoftware management seeks for decision support to identify technologies like JavaScript that meet best the goals and characteristics of a software project or improvement programme. JavaScript Training in Chennai Accessible experiences and repositories that effectively guide that technology selection are still lacking.
Aim of technology domain analysis is to describe the class of context situations (e.g., kinds of JavaScript software projects) in which a software engineering technology JavaScript Training in Chennai can be applied successfully
Thank you for valuable feedback, Lars. I've updated the first paragraph and fixed the typos.
ReplyDeleteIt is possible to debug your dslds. It is very complicated, though and requires using a runtime workspace (generally used for Eclipse plugin development). In the next few days, I'll try to get a blog post together on this.
ReplyDeleteThanks for notice, Andrew. Using PDE didn't come on my mind but it's definitely the way it could be done. Looking forward on your blog post! Please, tweet me as soon as it's done.
ReplyDeleteNice article! Above all the table with contributions and pointcuts should definitely find its way to the official documentation.
ReplyDeleteThanks Matthias! I've written to Andrew if it is possible. Meanwhile I've published the table to be browsed from GDocs directly here
ReplyDeletehttp://link.appsatori.eu/dsld-table
"The DSLD file won't compile and show in DSLD preferences screen if you import any non-standard class even it is on the project's classpath so you'd better prefer to use fully qualified strings to specify the types"
ReplyDeleteDon't you know why this happens:
annotatedBy("groovy.lang.Delegate") - works
annotatedBy("my.custom.MyAnnotation") - doesn't work
It might proved to be some sort of great idea to follow above mentioned techniques and tips to show deliberately good results for the future purpose. Visit college paper for best papers.
ReplyDeleteI am extremely impressed with your writing skills as well as with the layout on your weblog. Is this a paid theme or did you customize it yourself? Either way keep up the nice quality writing, it’s rare to see a nice blog like this one nowadays. Find out more childrens party ideas for best Ideas.
ReplyDeleteCreating a successful resume is no easy feat. It takes a lot of time and effort, not to mention you might have to go through several rewrites before it has been perfected. The goal of a resume is to showcase your talents and land you an interview. rewording sentences generator
ReplyDeletename Attribute for method or property contributions seems to be mandatory. Is there something like a wild card?
ReplyDeletee.g.:
images {
nameOfImage1 "urlToImage1"
nameOfImage2 "urlToIamge2"
}
Now I want the IDE to know that nameOfImage1 and nameOfImage2 are of type Image.
Is there a way to do this?
btw: I want it that way, cause it looks more intuitive than image(name=...,url=)
It is very beneficial information for me, I really impressed. This is very nice article and continues sharing with us...
ReplyDeleteUnix Training in Chennai
Unix Training
Excel Training in Chennai
Oracle DBA Training in Chennai
Tableau Training in Chennai
Graphic Design Courses in Chennai
Placement Training in Chennai
Oracle Training in Chennai
Power BI Training in Chennai
Pega Training in Chennai
Advanced Excel Training in Chennai
Excellent post and it is really useful for most of the freshers.
ReplyDeleteJapanese Classes in Chennai
Japanese Coaching Classes in Chennai
pearson vue test center in chennai
IoT Training in Chennai
Xamarin Training in Chennai
Node JS Training in Chennai
best english coaching in chennai
chennai spoken english classes
content writing course in chennai
spanish coaching in chennai
Japanese Classes in OMR
Japanese Classes in Porur
I see you as the most generous person, you have read my mind because your blog has exactly given me what I wanted. Web Designing Course Training in Chennai | Web Designing Course Training in annanagar | Web Designing Course Training in omr | Web Designing Course Training in porur | Web Designing Course Training in tambaram | Web Designing Course Training in velachery
ReplyDeleteWow what a Great Information about World Day its exceptionally pleasant educational post. a debt of gratitude is in order for the post.
ReplyDeleteData Science Course
It is the intent to provide valuable information and best practices, including an understanding of the regulatory process.
ReplyDeleteData Science Training
I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
ReplyDeleteData Science Training Institute in Bangalore
I am impressed by the information that you have on this blog. It shows how well you understand this subject.
ReplyDeleteBest Data Science Courses in Bangalore
Really impressed! Everything is very open and very clear clarification of issues. It contains truly facts. Your website is very valuable. Thanks for sharing.
ReplyDeleteData Science Course in Bangalore
It's late finding this act. At least, it's a thing to be familiar with that there are such events exist. I agree with your Blog and I will be back to inspect it more in the future so please keep up your act.
ReplyDeleteData Science Training in Bangalore
really this is awesome post. Truly, one of the best posts I've ever witnessed to see in my whole life. Wow, just keep it up.Learn Data Science Course in Hyderabad
ReplyDeleteReally nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.Learn best Business Analytics Course in Hyderabad
ReplyDeleteI feel really happy to have seen your post and look forward to so many more interesting post reading here. Thanks once more for all the details.Learn Best Data Science Training in Hyderabad
ReplyDeleteInteresting post. I Have Been wondering about this issue, so thanks for posting. Pretty cool post.It's really very nice and Useful post.Thanks..
ReplyDeleteData Science Courses
The web site is lovingly serviced and saved as much as date. So it should be, thanks for sharing this with us.
ReplyDeleteData Science Certification
IT Company
ReplyDeleteIT Company
IT Company
IT Company
IT Company
IT Company
IT Company
IT Company
IT Company
ReplyDeleteIT Company
IT Company
IT Company
IT Company
IT Company
IT Company
IT Company
Freelance maintenance technicians also benefit from establishing relationships with multiple clients. Working as a freelancer, you’ll gain employment experience with a variety of businesses, boosting your overall skill set and providing you with more work opportunities in the future.
ReplyDeletemaintenance technician
Very interesting blog. Many blogs I see these days do not really provide anything that attracts others, but believe me the way you interact is literally awesome.You can also check my articles as well.
ReplyDeleteSecurity Guard License
Ontario Security License
Security License Ontario
Security License
Thank you..
It's very educational and well-written content for a change. It's good to see that some people still understand how to write a great article!
ReplyDeleteBusiness Analytics Course in Bangalore
Excellent exchange of information ... I am very happy to read this article ... thank you for giving us information. Fantastic. I appreciate this post.
ReplyDeleteData Analytics Course in Bangalore
Awesome article with excellent information found very useful waiting for next blog thank you.
ReplyDeletetypeerror nonetype object is not subscriptable
Fantastic blog extremely good well enjoyed with the incredible informative content which surely activates the learners to gain the enough knowledge. Which in turn makes the readers to explore themselves and involve deeply in to the subject. Wish you to dispatch the similar content successively in future as well.
ReplyDeleteartificial intelligence training in bhilai
Impressive blog to be honest definitely this post will inspire many more upcoming aspirants. Eventually, this makes the participants to experience and innovate themselves through knowledge wise by visiting this kind of a blog. Once again excellent job keep inspiring with your cool stuff.
ReplyDeleteData Science certification in Bhilai
Extraordinary blog went amazed with the content that they have developed in a very descriptive manner. This type of content surely ensures the participants to explore themselves. Hope you deliver the same near the future as well. Gratitude to the blogger for the efforts.
ReplyDeleteDigital Marketing training in Bhilai
Tremendous blog quite easy to grasp the subject since the content is very simple to understand. Obviously, this helps the participants to engage themselves in to the subject without much difficulty. Hope you further educate the readers in the same manner and keep sharing the content as always you do.
ReplyDeleteData Science Course in Raipur
Stupendous blog huge applause to the blogger and hoping you to come up with such an extraordinary content in future. Surely, this post will inspire many aspirants who are very keen in gaining the knowledge. Expecting many more contents with lot more curiosity further.
ReplyDeleteDigital Marketing Course
Fantastic blog extremely good well enjoyed with the incredible informative content which surely activates the learners to gain the enough knowledge. Which in turn makes the readers to explore themselves and involve deeply in to the subject. Wish you to dispatch the similar content successively in future as well.
ReplyDeleteartificial intelligence course in raipur
Clipping Xpert
ReplyDeleteClipping Xpert India
Paragon Clipping Path
Clipping Path Service
Image Editing Company
Ecommerce Image Editing Service
Clipping path company
Clipping Path Service
Image Editing Company
Ecommerce Image Editing Service
Clipping path company
Clipping Path Service
Image Editing Company
Ecommerce Image Editing Service
Clipping path company
Fantastic blog with top quality information, enjoyed reading it and found very valuable thanks for sharing.
ReplyDeleteData Analytics Course Online
Very informative article with valuable information found resourceful looking forward for next blog thanks you.
ReplyDeleteEthical Hacking Course in Bangalore
I will very much appreciate the writer's choice for choosing this excellent article suitable for my topic. Here is a detailed description of the topic of the article that helped me the most. PMP Training in Hyderabad
ReplyDeleteReally nice and intriguing post. I was trying to find this sort of advice and appreciated reading this one. Keep posting. Thank you for sharing.
ReplyDeleteData Science Training Institute in Bangalore
ReplyDeleteNice to be seeing your site once again, it's been weeks for me. This article which ive been waited for so long. I need this guide to complete my mission inside the school, and it's same issue together along with your essay. Thanks, pleasant share.
Data Science Course In Bangalore With Placement
Fantastic informative article! I'm basically getting willing to over this advice, is quite beneficial my own friend.
ReplyDeleteCyber Security Course In Bangalore
I am more curious to take an interest in some of them. I hope you will provide more information on these topics in your next articles.
ReplyDeleteBusiness Analytics Course in Bangalore
I am a new user of this site, so here I saw several articles and posts published on this site, I am more interested in some of them, hope you will provide more information on these topics in your next articles.
ReplyDeleteData Analytics Course in Bangalore
I will very much appreciate the writer's choice for choosing this excellent article suitable for my topic. Here is a detailed description of the topic of the article that helped me the most.
ReplyDeleteunindent does not match any outer indentation level
I'm glad I found this blog! Occasionally, students want to know the keys to writing productive literary essays. Your first-class knowledge of this great job can become a suitable foundation for these people. Good
ReplyDeleteunindent does not match any outer indentation level python
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Course in Bangalore
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Training in Bangalore
Nice Information Your first-class knowledge of this great job can become a suitable foundation for these people. I did some research on the subject and found that almost everyone will agree with your blog.
ReplyDeleteCyber Security Course in Bangalore
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
pmp training in bangalore
Writing in style and getting good compliments on the article is hard enough, to be honest, but you did it so calmly and with such a great feeling and got the job done. This item is owned with style and I give it a nice compliment. Better!
ReplyDeleteCyber Security Training in Bangalore
It's good to visit your blog again, it's been months for me. Well, this article that I have been waiting for so long. I will need this post to complete my college homework, and it has the exact same topic with your article. Thanks, have a good game.
ReplyDeleteArtificial Intelligence Course in Bangalore
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Course in Bangalore
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Training in Bangalore
Absolutely an extraordinary informative article. Hats off to you! The details which you have furnished is quite valuable. Tableau Course in Bangalore
ReplyDeleteThanks For sharing a nice post about Course.It is very helpful and useful for us.data science courses
ReplyDeleteI am glad to discover this page. I have to thank you for the time I spent on this especially great reading !! I really liked each part and also bookmarked you for new information on your site.
ReplyDeleteData Science Course in India
Hello! I just want to give a big thank you for the great information you have here in this post. I will probably come back to your blog soon for more information!
ReplyDeleteData Science Course
A position as a network engineer or network administrator is something you may like if you enjoy working with a team to create complicated communication systems. The job lets you use analytical skills to design the best way to bring networks together. You can show your leadership ability as you guide a team to create a computer network. It is a higher-level position than network administrator, and it requires you to accept responsibility for the planning and architectural design of a communications system.
ReplyDeleteTo Know More Visit Site - network engineer
Vegus168 บาคาร่าออนไลน์ เครดิตฟรี แทงบอล คาสิโน บอลออนไลน์ เว็บตรง สมัครง่าย
ReplyDeletekeep up the good work. this is an Ossam post. This is to helpful, i have read here all post. i am impressed. thank you. this is our site please visit to know more information
ReplyDeletedata science training
ReplyDeleteThis blog is truly impressive with valuable information found resourceful thank you for sharing.
Data Scientist Training in Hyderabad
I finally found a great article here. I just added your blog to my bookmarking sites looking forward for next blog thank you.
ReplyDeleteData Science Course in Bangalore
Truly mind blowing blog went amazed with the subject they have developed the content. These kind of posts really helpful to gain the knowledge of unknown things which surely triggers to motivate and learn the new innovative contents. Hope you deliver the similar successive contents forthcoming as well.
ReplyDeleteDigital Marketing Course
Stupendous blog huge applause to the blogger and hoping you to come up with such an extraordinary content in future. Surely, this post will inspire many aspirants who are very keen in gaining the knowledge. Expecting many more contents with lot more curiosity further.
ReplyDeleteData Science training in Raipur
Tremendous blog quite easy to grasp the subject since the content is very simple to understand. Obviously, this helps the participants to engage themselves in to the subject without much difficulty. Hope you further educate the readers in the same manner and keep sharing the content as always you do.
ReplyDeleteDigital Marketing Course in Bhilai
Terrific post thoroughly enjoyed reading the blog and more over found to be the tremendous one. In fact, educating the participants with it's amazing content. Hope you share the similar content consecutively.
ReplyDeleteData Science training in Bhilai
I am overwhelmed by your article with an excellent topic and valuable information thanks for sharing.
ReplyDeleteData Science Course in Bangalore
Fantastic blog with high quality content found very valuable and enjoyed reading thank you.
ReplyDeleteData Science Course
Great blog! I am really getting ready to read your article. It gives valuable information.
ReplyDeleteartificial intelligence benefits to society
asp net core features
what is apache hadoop
best devops tools
selenium automation framework interview questions and answers
Python Development Services providers across the world for developing a wide range of software applications. It allows developers to express concept with less and readable code. It enable the developers to integrate Python with varied other well-known programming languages and tools flawlessly. data science course in india
ReplyDeleteAttend The Data Analyst Course From ExcelR. Practical Data Analyst Course Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Data Analyst Course.
ReplyDeleteData Analyst Course
Excellent blog thanks for sharing the valuable information..it becomes easy to read and easily understand the information.
ReplyDeleteUseful article which was very helpful. also interesting and contains good information.
to know about python training course , use the below link.
Python Training in chennai
Python Course in chennai
If you are going to write an essay yourself, then I recommend you this proven site https://payforessay.net/, where I myself regularly order essays. And every time I write, I get the best mark.
ReplyDeleteVé máy bay Aivivu, tham khảo
ReplyDeleteVé máy bay đi Mỹ
vé máy bay tết Vietjet
vé máy bay đi San Francisco giá rẻ 2021
mua vé máy bay đi Pháp giá rẻ
vé máy bay đi Anh giá rẻ
vé máy bay đi Los Angeles giá rẻ 2021
combo đà nẵng 3 ngày 2 đêm
combo đà lạt 3 ngày 2 đêm
xin visa trung quoc o tphcm
dịch vụ cách ly khách sạn trọn gói
Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man, Keep it up.
ReplyDeleteJava Training in Chennai
Java Course in Chennai
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Course in Bangalore
Really wonderful blog completely enjoyed reading and learning to gain the vast knowledge. Eventually, this blog helps in developing certain skills which in turn helpful in implementing those skills. Thanking the blogger for delivering such a beautiful content and keep posting the contents in upcoming days.
ReplyDeleteData Science training in Raipur
Truly incredible blog found to be very impressive due to which the learners who ever go through it will try to explore themselves with the content to develop the skills to an extreme level. Eventually, thanking the blogger to come up with such an phenomenal content. Hope you arrive with the similar content in future as well.
ReplyDeleteDigital Marketing Course in Raipur
This post gives a piece of excellent information. Keep sharing this blog.
ReplyDeletedevops engineer skills
soft skills communication
tableau course duration
best ways to improve english
how to speak english fluently
blue prism interview question and answer
javascript interview questions pdf
Highly appreciable regarding the uniqueness of the content. This perhaps makes the readers feels excited to get stick to the subject. Certainly, the learners would thank the blogger to come up with the innovative content which keeps the readers to be up to date to stand by the competition. Once again nice blog keep it up and keep sharing the content as always.
ReplyDeleteData Science training
Wonderful blog found to be very impressive to come across such an awesome blog. I should really appreciate the blogger for the efforts they have put in to develop such an amazing content for all the curious readers who are very keen of being updated across every corner. Ultimately, this is an awesome experience for the readers. Anyways, thanks a lot and keep sharing the content in future too.
ReplyDeleteDigital Marketing training in Bhilai
I have to search sites with relevant information ,This is a
ReplyDeletewonderful blog,These type of blog keeps the users interest in
the website, i am impressed. thank you.
Data Science Course in Bangalore
Very informative content and intresting blog post.Data science training in Mumbai
ReplyDelete