Bachelor's Thesis

LSP Client for Apache Camel Language Server

Final Thesis 1.86 MB Appendix 2.62 MB

Author of thesis: Bc. Filip Pospíšil

Acad. year: 2022/2023

Supervisor: Ing. Ondřej Vašíček

Reviewer: Ing. Jan Fiedor, Ph.D.

Abstract:

The goal of this Bachelors thesis is the design and implementation of a plug-in that will provide language support for Apache Camel in the integrated development environment Apache NetBeans. The aim of the thesis is to enable integration of the language client for the integrated development environment Apache NetBeans. The client utilizes an existing language server for Apache Camel created by Red Hat. The thesis provides a basic introduction to the Microsoft Language Protocol, the Apache Camel framework, and the integrated development environment Apache Netbeans. Next, the design, implementation, and testing of the created language client are described. The result of this thesis is a plug-in module that provides comprehensive language support for the Apache Camel framework in the Apache Netbeans development environment. In the future the plug-in will be published in the Apache NetBeans Plugin Portal repository.

Keywords:

Apache Camel, Apache NetBeans, JSON-RPC, Language Server Protocol, LSP

Date of defence

13.06.2023

Result of the defence

Defended (thesis was successfully defended)

znamkaCznamka

Grading

C

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázku oponenta. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědi studenta na dotaz oponenta rozhodla práci hodnotit stupněm dobře / C.

Topics for thesis defence

  1. U Apache NetBeans issue #5822, kde navrhujete úpravy LSP modulu v Apache NetBeans umožňující předávání konfigurace při inicializaci, je komentář ilustrující předání konfigurace bez nutnosti změn v LSP modulu. Můžete diskutovat, proč jste nepoužil tento přístup?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (IT-BC-3)

Field of study

Information Technology (BIT)

Composition of Committee

doc. Ing. Vladimír Janoušek, Ph.D. (předseda)
doc. Ing. Lukáš Burget, Ph.D. (člen)
prof. Ing. Jan M. Honzík, CSc. (člen)
Ing. Vojtěch Mrázek, Ph.D. (člen)
Ing. Radek Kočí, Ph.D. (člen)

Supervisor’s report
Ing. Ondřej Vašíček

S aktivitou studenta v průběhu semestru jsem byl spokojen.


Výsledek práce splnil očekávání a předpokládá se jeho praktické využití po zveřejnění v marketplace vývojového prostředí. 

Evaluation criteria Verbal classification
Informace k zadání

Práce byla zadána a technicky vedena firmou RedHat. Jejím předmětem byl návrh a implementace jazykového klienta pro Apache Camel do vývojového prostředí Apache NetBeans. Náročnost implementace samotné funkcionality klienta považuji za spíše jednodušší. To ale na druhou stranu vyvažují komplikace, které přináší integrace klienta do vývojového prostředí (např. zastaralá dokumentace ze strany IDE). Celkově tedy náročnost hodnotím jako průměrnou. Zadání bylo splněno. Technický vedoucí z firmy RedHat je s výsledkem práce také spokojen.

Práce s literaturou

Student si relevantní zdroje informací hledal sám a nebo ve spolupráci s technickým vedoucím. 

Aktivita během řešení, konzultace, komunikace

Student se práci věnoval v průběhu celého semestru, účastnil se pravidelných schůzek a dodržoval domluvené termíny. 

Aktivita při dokončování

Práce byla dokončována v dostatečném předstihu. V průběhu sepisování jsem měl možnost pročíst několik pracovních verzí a poskytnout zpětnou vazbu, kterou se student snažil zapracovat.

Publikační činnost, ocenění

Výsledek práce je v plánu zveřejnit v marketplace vývojového prostředí. Zveřejnění aktuálně brání nedostatky na straně vývojového prostředí (tedy problémy mimo kontrolu studenta).

Points proposed by supervisor: 80

Grade proposed by supervisor: B

Reviewer’s report
Ing. Jan Fiedor, Ph.D.

Jde o průměrně obtížné zadání, které bylo splněno. Technická zpráva je slušná po jazykové i typografické stránce, obsahově zahrnuje vše potřebné, ovšem forma podání obsahu není vůbec ideální. Více než technickou zprávu spíše připomíná slovník pojmů sloučený s vývojovým manuálem s minimem vysvětlených souvislostí mezi pojmy a cíli práce. Pochopení práce je tedy pro čtenáře značně obtížné.


Implementace je plně funkční a řádně otestována. Mírnou nevýhodou je nutnost restartu prostředí Apache NetBeans při změně konfigurace klienta.


Celkově bych tedy tuto práci označil za průměrnou a navrhuji hodnocení C.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: průměrně obtížné zadání

Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Všechny body zadání byly splněny.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Prezentační úroveň technické zprávy

Hodnotit prezentační úroveň technické zprávy je obtížné. Obsahově zahrnuje zpráva všechny potřebné informace, logické členění a návaznost kapitol je také v pořádku. Kapitoly popisující související techologie mají ovšem formu blízkou slovníku pojmů než že by popisovaly a diskutovaly tyto technologie. Kapitoly věnované implementaci by zase šly označit jako vývojové manuály než o nich mluvit jako o technickém textu.

Hlavním problémem tohoto přístupu je absence vysvětlení souvislostí mezi jednotlivými technologiemi a jejich návaznost a důležitost pro řešení práce. Práce je takto mnohem náročnější na pochopení čtenářem, protože si musí řadu souvislostí vydedukovat sám, aby mu text začal dávat smysl.

65
Formální úprava technické zprávy

Práce je psána v češtině s minimem chyb a překlepů. Po typografické stránce je práce na slušné úrovni.

75
Práce s literaturou

Práce je primárně implementačního charakteru, takže převážná většina citovaných zdrojů jsou online manuály souvisejících a použitých technologií. Všechny zdroje jsou řádně odcitovány.

75
Realizační výstup

Cílem práce bylo vytvořit LSP klienta pro Apache Camel ve formě zásuvného modulu pro nástroj Apache NetBeans. Implementované řešení je plně funkční a bylo otestováno na sadě uživatelských scénářů.

Samotná implementace klienta nebyla nikterak náročná, jelikož bylo možné využit existující knihovnu LSP4J poskytující většinu potřebné funkcionality. Během vývoje byly ovšem zjištěny nedostatky LSP modulu Apache NetBeans a bylo potřeba navrhnout úpravy tohoto modulu, aby bylo možné LSP klienta úspěšně implementovat.

75
Využitelnost výsledků

Jde o zadání vypsané ve spolupráci s firmou Red Hat a předpokládá se tedy využití vytvořeného modulu firmou Red Hat, případně komunitou uživatelů Apache NetBeans.

Topics for thesis defence:
  1. U Apache NetBeans issue #5822, kde navrhujete úpravy LSP modulu v Apache NetBeans umožňující předávání konfigurace při inicializaci, je komentář ilustrující předání konfigurace bez nutnosti změn v LSP modulu. Můžete diskutovat, proč jste nepoužil tento přístup?
Points proposed by reviewer: 72

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová