<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Roboto;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Testo fumetto Carattere";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.StileMessaggioDiPostaElettronica17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.TestofumettoCarattere
        {mso-style-name:"Testo fumetto Carattere";
        mso-style-priority:99;
        mso-style-link:"Testo fumetto";
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:IT;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=IT link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hello again, <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>thank you for all the answers. I tried to follow the tips but I can’t still get the endpoints to listen. Here are the steps I followed: <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><a href="https://documentation.opencms.org/opencms-documentation/extending-opencms/development-setups/">https://documentation.opencms.org/opencms-documentation/extending-opencms/development-setups/</a><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I followed this guide to create a module, set the correct gradle configuration, added the classes JaxRsActivator and NewsResource, added to the OpenCMS web.xml the servlet configuration <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'><servlet><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    <servlet-name>Resteasy</servlet-name><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    <init-param><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>        <param-name>javax.ws.rs.Application</param-name><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>        <param-value>it.company.JaxRsActivator</param-value><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    </init-param><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'></servlet><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'><servlet-mapping><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    <servlet-name>Resteasy</servlet-name><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'>    <url-pattern>/api/*</url-pattern><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:Consolas;color:black'></servlet-mapping><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I am currently running OpenCMS locally on Tomcat, I don’t know if this can help to, I added the dependency on gradle for resteasy.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Any help would be greatly appreciated,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thank you <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#00A099'>Giovanni Andrea D’Aquino<o:p></o:p></span></p><p class=MsoNormal><b><span lang=EN-GB style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'>Software Engineer<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'><img border=0 width=150 height=43 id="Immagine_x0020_1" src="cid:image001.png@01D5EE3F.7997A7B0" alt="Descrizione: picturemessage_2w1anxdt.xg3 (1)"></span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:13.5pt;font-family:Roboto;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:13.5pt;font-family:"Calibri","sans-serif";color:#00A099'>INTELLISYNC Srl<br></span><span lang=EN-GB style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'>Via Sclafani, 40/B</span><span lang=EN-GB style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'>Free Mind Foundry Innovation Hub<br>95024 Acireale (CT) Italy<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#00A099'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'>Join our communities and get updated<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Calibri","sans-serif";color:#00A099'><o:p> </o:p></span></p><p class=MsoNormal><a href="https://www.linkedin.com/company/intellisync"><span style='font-size:10.0pt;font-family:"Calibri","sans-serif";text-decoration:none'><img border=0 width=23 height=23 id="Picture_x0020_2" src="cid:image002.png@01D5EE3F.7997A7B0" alt="linkedin_email"></span></a><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span lang=DE style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#194274'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:8.0pt;font-family:"Calibri","sans-serif";color:#00A099'>This email and any files transmitted with it are confidential and may be privileged and are intended solely for the use of the individual or entity to whom they are addressed. <br>If you are not an addressee, any unauthorized direct or indirect dissemination, distribution, publication or copying of this message and any attachments is strictly prohibited. <br>If you have received this email in error please notify the sender immediately, and delete this email from your system</span><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#00A099'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Segoe UI","sans-serif"'>Da:</span></b><span style='font-size:10.0pt;font-family:"Segoe UI","sans-serif"'> opencms-dev-bounces@opencms.org [mailto:opencms-dev-bounces@opencms.org] <b>Per conto di </b>Stephan Schrader<br><b>Inviato:</b> giovedì 27 febbraio 2020 11:54<br><b>A:</b> The OpenCms mailing list<br><b>Oggetto:</b> Re: [opencms-dev] Add REST API to OpenCMS<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Hello,<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>we also used JAX-RS as Antonio mentioned.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>You need to add a class to enable JAX-RS:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>import javax.ws.rs.ApplicationPath;<br>import javax.ws.rs.core.Application;<br><br>@ApplicationPath("/api")<br>public class JaxRsActivator extends Application {<br>    public JaxRsActivator() {}<br>}<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>And the classes for your endpoints:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>import org.opencms.file.CmsObject;<br><br>import javax.ws.rs.GET;<br>import javax.ws.rs.Path;<br>import javax.ws.rs.Produces;<br>import javax.ws.rs.core.Context;<br>import javax.ws.rs.core.Response;<br>import javax.ws.rs.ext.Providers;<br>import java.util.List;<br>import java.util.stream.Collectors;<br><br>@Path("news")<br>public class NewsResource {<br><br>    @Context<br>    private HttpServletRequest request;<br><br>    @GET<br>    @Produces("application/json")<br>    public Response getNews() {<br>        CmsObject cms = getCmsObject();<br>        <br>        // e.g. use Solr to get relevant News documents<br>        List<News> news...<br><br>        return Response.ok().entity(news).build();<br>    }<br><br>    public CmsObject getCmsObject() {<br>        CmsObject cmsObject;<br>        try {<br>            // try recover cms from session<br>            cmsObject = OpenCms.getAuthorizationHandler().initCmsObject(request, "oOo", "xXx");<br>        } catch (CmsAuthentificationException e) {<br>            cmsObject = OpenCms.initCmsObject(OpenCms.getDefaultUsers().getUserGuest());<br>        } catch (CmsException e) {<br>            throw new InternalServerErrorException("Failed to initialize CmsObject", e);<br>        }<br>        return cmsObject;<br>    }<br><br>}<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>With some Provider magic you could easily map exceptions to response codes or provide the CmsObject as context object.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>King Regards,<o:p></o:p></p></div><div><p class=MsoNormal>Stephan<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Am Di., 25. Feb. 2020 um 14:22 Uhr schrieb <<a href="mailto:giovanni.daquino@intellisync.it">giovanni.daquino@intellisync.it</a>>:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hello everyone, <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I am wondering if anybody has successfully implemented a REST or really any kind of APIs in OpenCMS. I would like to extend OpenCMS to use it headlessly. I think you should add one or more modules and have the module expose some endpoints. Is this correct?<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thank you,<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB style='color:#00A099'>Giovanni Andrea D’Aquino</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=EN-GB style='font-size:10.0pt;color:#00A099'>Software Engineer</span></b><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'><img border=0 width=150 height=43 id="gmail-m_-8362828557068443340Immagine_x0020_1" src="cid:image001.png@01D5EE3F.7997A7B0" alt="Descrizione: picturemessage_2w1anxdt.xg3 (1)"></span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:13.5pt;font-family:Roboto'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:13.5pt;color:#00A099'>INTELLISYNC Srl<br></span><span lang=EN-GB style='font-size:10.0pt;color:#00A099'>Via Sclafani, 40/B</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB style='font-size:10.0pt;color:#00A099'>Free Mind Foundry Innovation Hub<br>95024 Acireale (CT) Italy</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB style='font-size:10.0pt;color:#00A099'>Tel/Fax: (+39) 3475744346</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB style='color:#00A099'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:10.0pt;color:#00A099'>Join our communities and get updated</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:10.0pt;color:#00A099'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a href="https://www.linkedin.com/company/intellisync" target="_blank"><span style='font-size:10.0pt;text-decoration:none'><img border=0 width=23 height=23 id="gmail-m_-8362828557068443340Picture_x0020_2" src="cid:image002.png@01D5EE3F.7997A7B0" alt="linkedin_email"></span></a><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=DE style='color:#194274'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:8.0pt;color:#00A099'>This email and any files transmitted with it are confidential and may be privileged and are intended solely for the use of the individual or entity to whom they are addressed. <br>If you are not an addressee, any unauthorized direct or indirect dissemination, distribution, publication or copying of this message and any attachments is strictly prohibited. <br>If you have received this email in error please notify the sender immediately, and delete this email from your system</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div></div><p class=MsoNormal style='margin-bottom:12.0pt'>_______________________________________________<br>This mail is sent to you from the opencms-dev mailing list<br>To change your list options, or to unsubscribe from the list, please visit<br><a href="http://lists.opencms.org/cgi-bin/mailman/listinfo/opencms-dev" target="_blank">http://lists.opencms.org/cgi-bin/mailman/listinfo/opencms-dev</a><br><br><br><o:p></o:p></p></blockquote></div></div></body></html>