{"id":805,"date":"2020-09-22T14:09:58","date_gmt":"2020-09-22T13:09:58","guid":{"rendered":"http:\/\/www.igfasouza.com\/blog\/?p=805"},"modified":"2021-04-27T11:07:34","modified_gmt":"2021-04-27T10:07:34","slug":"quarkus-qute-with-raspberry-pi","status":"publish","type":"post","link":"http:\/\/www.igfasouza.com\/blog\/quarkus-qute-with-raspberry-pi\/","title":{"rendered":"Quarkus Qute with Raspberry PI"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/raspberry_quarkus.jpg\" alt=\"\" width=\"740\" height=\"412\" class=\"alignnone size-full wp-image-806\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/raspberry_quarkus.jpg 740w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/raspberry_quarkus-300x167.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/raspberry_quarkus-624x347.jpg 624w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><b>Hey you!<\/b><\/p>\n<p>This post is to show how I created a Quarkus Qute demo with a Raspberry PI. This is another blog about Java on Raspberry PI.<\/p>\n<p>Quarkus is a full-stack, Kubernetes-native Java framework made for Java virtual machines (JVMs) and native compilation, optimizing Java specifically for containers and enabling it to become an effective platform for serverless, cloud, and Kubernetes environments.<\/p>\n<p>Qute is a templating engine designed specifically to meet the Quarkus needs. The usage of reflection is minimized to reduce the size of native images. The API combines both the imperative and the non-blocking reactive style of coding. The engine is based on RESTEasy\/JAX-RS. As such, Qute web applications are implemented by defining resource types with methods answering to specific HTTP verbs and accept headers. The only difference being, that HTML pages are returned instead of JSON as in your typical REST-ful data API. The individual pages are created by processing template files.<\/p>\n<p>If you\u2019ve worked with other templating engines before, like me, this will look very familiar to you. <\/p>\n<p style=\"background-color: #bde5f8;color: #00529b;border: 1px solid;border-radius: 2px;margin: 10px 0px;padding: 15px 10px;\"><strong>Note<\/strong>: Qute is an experimental feature.\n<\/p>\n<h2>Idea<\/h2>\n<p>A simple Quarkus Qute example that shows a 7 segments display and control in real-time a real one with a Raspberry Pi 3 B.<br \/>\nWhen I was googling about a 7 segment display this <a href=\"https:\/\/propjockey.github.io\/bcd7sdd\/\" rel=\"noopener\" target=\"_blank\">site<\/a> appeared in my result and I came up with the idea. <\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/KrwEOskvOT0\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>I suggest you check out my <a href=\"http:\/\/www.igfasouza.com\/blog\/7-segment-display\/\" rel=\"noopener\" target=\"_blank\">7 segment display<\/a> blog before looking at the code.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/7-seg-disp-ca.png\" alt=\"\" width=\"500\" height=\"345\" class=\"alignnone size-full wp-image-792\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/7-seg-disp-ca.png 500w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/7-seg-disp-ca-300x207.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-22-at-13.50.54-187x300.png\" alt=\"\" width=\"187\" height=\"300\" class=\"alignnone size-medium wp-image-807\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-22-at-13.50.54-187x300.png 187w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Screenshot-2020-09-22-at-13.50.54.png 392w\" sizes=\"auto, (max-width: 187px) 100vw, 187px\" \/><\/p>\n<h2>Code<\/h2>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">com.igor<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">io.quarkus.qute.Template<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">io.quarkus.qute.TemplateInstance<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.inject.Inject<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.transaction.Transactional<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.Consumes<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.GET<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.POST<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.Path<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.Produces<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">javax.ws.rs.core.MediaType<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">org.jboss.resteasy.annotations.providers.multipart.MultipartForm<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.pi4j.io.gpio.GpioController<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.pi4j.io.gpio.GpioFactory<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.pi4j.io.gpio.GpioPinDigitalOutput<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.pi4j.io.gpio.PinState<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">com.pi4j.io.gpio.RaspiPin<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Path<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;hello&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> HelloResource <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Inject<br \/>\n&nbsp; &nbsp; Template hello<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">final<\/span> GpioController gpio <span class=\"sy0\">=<\/span> GpioFactory.<span class=\"me1\">getInstance<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin01 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_26<\/span>, <span class=\"st0\">&quot;1&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin02 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_22<\/span>, <span class=\"st0\">&quot;2&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin04 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_07<\/span>, <span class=\"st0\">&quot;3&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin05 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_09<\/span>, <span class=\"st0\">&quot;4&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin06 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_08<\/span>, <span class=\"st0\">&quot;5&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin07 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_15<\/span>, <span class=\"st0\">&quot;6&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin09 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_16<\/span>, <span class=\"st0\">&quot;7&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; GpioPinDigitalOutput pin10 <span class=\"sy0\">=<\/span> gpio.<span class=\"me1\">provisionDigitalOutputPin<\/span><span class=\"br0\">&#40;<\/span>RaspiPin.<span class=\"me1\">GPIO_21<\/span>, <span class=\"st0\">&quot;8&quot;<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @GET<br \/>\n&nbsp; &nbsp; @Produces<span class=\"br0\">&#40;<\/span>MediaType.<span class=\"me1\">TEXT_HTML<\/span><span class=\"br0\">&#41;<\/span> <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> TemplateInstance get<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> hello.<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;field1&quot;<\/span>, <span class=\"st0\">&quot;Test&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;field2&quot;<\/span>, <span class=\"st0\">&quot;Igor&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @POST<br \/>\n&nbsp; &nbsp; @Consumes<span class=\"br0\">&#40;<\/span>MediaType.<span class=\"me1\">MULTIPART_FORM_DATA<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; @Transactional<br \/>\n&nbsp; &nbsp; @Path<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/segment&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> TemplateInstance segmentDisplay<span class=\"br0\">&#40;<\/span>@MultipartForm MessageForm messageForm<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment1<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment2<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messageForm.<span class=\"me1\">segment3<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment4<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messageForm.<span class=\"me1\">segment5<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment6<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; messageForm.<span class=\"me1\">segment7<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment8<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin01.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin02.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin04.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin05.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin06.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin07.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin09.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin10.<span class=\"me1\">setShutdownOptions<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span>, PinState.<span class=\"me1\">HIGH<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin01.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin02.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin04.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin05.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin06.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin07.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin09.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin10.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; display<span class=\"br0\">&#40;<\/span>messageForm<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> hello.<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;field1&quot;<\/span>, <span class=\"st0\">&quot;Test&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;field2&quot;<\/span>, <span class=\"st0\">&quot;Igor&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment1&quot;<\/span>, messageForm.<span class=\"me1\">segment1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment2&quot;<\/span>, messageForm.<span class=\"me1\">segment2<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment3&quot;<\/span>, messageForm.<span class=\"me1\">segment3<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment4&quot;<\/span>, messageForm.<span class=\"me1\">segment4<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment5&quot;<\/span>, messageForm.<span class=\"me1\">segment5<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment6&quot;<\/span>, messageForm.<span class=\"me1\">segment6<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment7&quot;<\/span>, messageForm.<span class=\"me1\">segment7<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span class=\"me1\">data<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;segment8&quot;<\/span>, messageForm.<span class=\"me1\">segment8<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> display<span class=\"br0\">&#40;<\/span>MessageForm messageForm<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment1<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment1<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin01.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin01.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment2<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment2<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin02.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin02.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment3<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment3<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin04.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin04.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment4<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment4<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin05.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin05.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment5<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment5<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin06.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin06.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment6<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment6<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin07.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin07.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment7<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment7<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin09.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin09.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>messageForm.<span class=\"me1\">segment8<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">&amp;&amp;<\/span> messageForm.<span class=\"me1\">segment8<\/span>.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;on&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin10.<span class=\"me1\">low<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pin10.<span class=\"me1\">high<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Disclaimer &#8211; I got the CSS from <a href=\"https:\/\/propjockey.github.io\/bcd7sdd\/\" rel=\"noopener\" target=\"_blank\">here<\/a><\/p>\n<p>You can get the full code on my <a href=\"https:\/\/github.com\/igfasouza\/qute-example-pi4j\" rel=\"noopener\" target=\"_blank\">GitHub<\/a>.<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/i576hpXrglQ\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/GEh4ejaLhWw\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/quarkus.io\/\" rel=\"noopener\" target=\"_blank\">https:\/\/quarkus.io\/<\/a><\/p>\n<p><a href=\"https:\/\/quarkus.io\/guides\/qute\" rel=\"noopener\" target=\"_blank\">https:\/\/quarkus.io\/guides\/qute<\/a><\/p>\n<p><a href=\"https:\/\/quarkus.io\/guides\/qute-reference\" rel=\"noopener\" target=\"_blank\">https:\/\/quarkus.io\/guides\/qute-reference<\/a><\/p>\n<p><a href=\"https:\/\/propjockey.github.io\/bcd7sdd\/\" rel=\"noopener\" target=\"_blank\">https:\/\/propjockey.github.io\/bcd7sdd\/<\/a><\/p>\n<p><a href=\"https:\/\/pi4j.com\/1.2\/index.html\" rel=\"noopener\" target=\"_blank\">https:\/\/pi4j.com\/1.2\/index.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey you! This post is to show how I created a Quarkus Qute demo with a Raspberry PI. This is another blog about Java on Raspberry PI. Quarkus is a full-stack, Kubernetes-native Java framework made for Java virtual machines (JVMs)&hellip; <a href=\"http:\/\/www.igfasouza.com\/blog\/quarkus-qute-with-raspberry-pi\/\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":806,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,24],"tags":[17,21,13],"class_list":["post-805","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-raspberry-pi","tag-java","tag-pi4j","tag-raspberry-pi"],"_links":{"self":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/comments?post=805"}],"version-history":[{"count":7,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/805\/revisions"}],"predecessor-version":[{"id":1214,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/805\/revisions\/1214"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media\/806"}],"wp:attachment":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media?parent=805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/categories?post=805"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/tags?post=805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}