diff --git a/404.html b/404.html index ff57b8fd..ade892d9 100644 --- a/404.html +++ b/404.html @@ -9,7 +9,7 @@ - + diff --git a/apidocs/allclasses-index.html b/apidocs/allclasses-index.html index 5cb8b4ed..e1331ca8 100644 --- a/apidocs/allclasses-index.html +++ b/apidocs/allclasses-index.html @@ -1,7 +1,7 @@ - + All Classes and Interfaces (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/allpackages-index.html b/apidocs/allpackages-index.html index 39aba820..37f9c10f 100644 --- a/apidocs/allpackages-index.html +++ b/apidocs/allpackages-index.html @@ -1,7 +1,7 @@ - + All Packages (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/BinderFactory.html b/apidocs/com/qubitpi/ws/jersey/template/application/BinderFactory.html index 304a1743..fe1f25dc 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/BinderFactory.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/BinderFactory.html @@ -1,7 +1,7 @@ - + BinderFactory (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/ResourceConfig.html b/apidocs/com/qubitpi/ws/jersey/template/application/ResourceConfig.html index aa16eef2..ed86b2e1 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/ResourceConfig.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/ResourceConfig.html @@ -1,7 +1,7 @@ - + ResourceConfig (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/class-use/BinderFactory.html b/apidocs/com/qubitpi/ws/jersey/template/application/class-use/BinderFactory.html index 8f42590e..2433f80f 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/class-use/BinderFactory.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/class-use/BinderFactory.html @@ -1,7 +1,7 @@ - + Uses of Class com.qubitpi.ws.jersey.template.application.BinderFactory (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/class-use/ResourceConfig.html b/apidocs/com/qubitpi/ws/jersey/template/application/class-use/ResourceConfig.html index 47929372..9c464243 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/class-use/ResourceConfig.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/class-use/ResourceConfig.html @@ -1,7 +1,7 @@ - + Uses of Class com.qubitpi.ws.jersey.template.application.ResourceConfig (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/package-summary.html b/apidocs/com/qubitpi/ws/jersey/template/application/package-summary.html index 2504c2d7..4eb41f31 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/package-summary.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/package-summary.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.application (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/package-tree.html b/apidocs/com/qubitpi/ws/jersey/template/application/package-tree.html index ed8f8157..75a77d95 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/package-tree.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/package-tree.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.application Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/application/package-use.html b/apidocs/com/qubitpi/ws/jersey/template/application/package-use.html index 1295ec82..0082404f 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/application/package-use.html +++ b/apidocs/com/qubitpi/ws/jersey/template/application/package-use.html @@ -1,7 +1,7 @@ - + Uses of Package com.qubitpi.ws.jersey.template.application (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/cache/LruCache.html b/apidocs/com/qubitpi/ws/jersey/template/cache/LruCache.html index 182dfd93..458a55ca 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/cache/LruCache.html +++ b/apidocs/com/qubitpi/ws/jersey/template/cache/LruCache.html @@ -1,7 +1,7 @@ - + LruCache (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/cache/class-use/LruCache.html b/apidocs/com/qubitpi/ws/jersey/template/cache/class-use/LruCache.html index 45727226..29d15422 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/cache/class-use/LruCache.html +++ b/apidocs/com/qubitpi/ws/jersey/template/cache/class-use/LruCache.html @@ -1,7 +1,7 @@ - + Uses of Class com.qubitpi.ws.jersey.template.cache.LruCache (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/cache/package-summary.html b/apidocs/com/qubitpi/ws/jersey/template/cache/package-summary.html index e9b0d4d2..344ddcaa 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/cache/package-summary.html +++ b/apidocs/com/qubitpi/ws/jersey/template/cache/package-summary.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.cache (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/cache/package-tree.html b/apidocs/com/qubitpi/ws/jersey/template/cache/package-tree.html index 3fc48127..119f6fb3 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/cache/package-tree.html +++ b/apidocs/com/qubitpi/ws/jersey/template/cache/package-tree.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.cache Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/cache/package-use.html b/apidocs/com/qubitpi/ws/jersey/template/cache/package-use.html index 80eeebc4..94a8a8ac 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/cache/package-use.html +++ b/apidocs/com/qubitpi/ws/jersey/template/cache/package-use.html @@ -1,7 +1,7 @@ - + Uses of Package com.qubitpi.ws.jersey.template.cache (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/config/ApplicationConfig.html b/apidocs/com/qubitpi/ws/jersey/template/config/ApplicationConfig.html index 8103b53e..c1370f27 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/config/ApplicationConfig.html +++ b/apidocs/com/qubitpi/ws/jersey/template/config/ApplicationConfig.html @@ -1,7 +1,7 @@ - + ApplicationConfig (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/config/class-use/ApplicationConfig.html b/apidocs/com/qubitpi/ws/jersey/template/config/class-use/ApplicationConfig.html index 63435357..f1e2f651 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/config/class-use/ApplicationConfig.html +++ b/apidocs/com/qubitpi/ws/jersey/template/config/class-use/ApplicationConfig.html @@ -1,7 +1,7 @@ - + Uses of Interface com.qubitpi.ws.jersey.template.config.ApplicationConfig (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/config/package-summary.html b/apidocs/com/qubitpi/ws/jersey/template/config/package-summary.html index 517c3c53..401c3a14 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/config/package-summary.html +++ b/apidocs/com/qubitpi/ws/jersey/template/config/package-summary.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.config (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/config/package-tree.html b/apidocs/com/qubitpi/ws/jersey/template/config/package-tree.html index bb63cd1c..4ba18be6 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/config/package-tree.html +++ b/apidocs/com/qubitpi/ws/jersey/template/config/package-tree.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.config Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/config/package-use.html b/apidocs/com/qubitpi/ws/jersey/template/config/package-use.html index 3fb0278a..70a40e43 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/config/package-use.html +++ b/apidocs/com/qubitpi/ws/jersey/template/config/package-use.html @@ -1,7 +1,7 @@ - + Uses of Package com.qubitpi.ws.jersey.template.config (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/DataServlet.html b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/DataServlet.html index e01e4b8b..efdef9c8 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/DataServlet.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/DataServlet.html @@ -1,7 +1,7 @@ - + DataServlet (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/class-use/DataServlet.html b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/class-use/DataServlet.html index f66fa3a9..47e3f7a6 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/class-use/DataServlet.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/class-use/DataServlet.html @@ -1,7 +1,7 @@ - + Uses of Class com.qubitpi.ws.jersey.template.web.endpoints.DataServlet (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-summary.html b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-summary.html index b9358637..3fe48bf2 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-summary.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-summary.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.web.endpoints (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-tree.html b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-tree.html index fb73b6ea..42a415f3 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-tree.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-tree.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.web.endpoints Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-use.html b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-use.html index 25cc04ac..79efb224 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-use.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/endpoints/package-use.html @@ -1,7 +1,7 @@ - + Uses of Package com.qubitpi.ws.jersey.template.web.endpoints (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/filters/CorsFilter.html b/apidocs/com/qubitpi/ws/jersey/template/web/filters/CorsFilter.html index d0df69e5..d61861a4 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/filters/CorsFilter.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/filters/CorsFilter.html @@ -1,7 +1,7 @@ - + CorsFilter (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/filters/class-use/CorsFilter.html b/apidocs/com/qubitpi/ws/jersey/template/web/filters/class-use/CorsFilter.html index 9156b0a2..c93f8e7d 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/filters/class-use/CorsFilter.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/filters/class-use/CorsFilter.html @@ -1,7 +1,7 @@ - + Uses of Class com.qubitpi.ws.jersey.template.web.filters.CorsFilter (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-summary.html b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-summary.html index a1d8ba07..674a4f27 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-summary.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-summary.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.web.filters (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-tree.html b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-tree.html index 8d6e3f60..354db0de 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-tree.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-tree.html @@ -1,7 +1,7 @@ - + com.qubitpi.ws.jersey.template.web.filters Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-use.html b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-use.html index fa34d554..e7749a80 100644 --- a/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-use.html +++ b/apidocs/com/qubitpi/ws/jersey/template/web/filters/package-use.html @@ -1,7 +1,7 @@ - + Uses of Package com.qubitpi.ws.jersey.template.web.filters (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/help-doc.html b/apidocs/help-doc.html index ad077aba..652b91bc 100644 --- a/apidocs/help-doc.html +++ b/apidocs/help-doc.html @@ -1,7 +1,7 @@ - + API Help (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/index-all.html b/apidocs/index-all.html index 796d2566..3f4c61de 100644 --- a/apidocs/index-all.html +++ b/apidocs/index-all.html @@ -1,7 +1,7 @@ - + Index (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/index.html b/apidocs/index.html index 70cda3c4..c5d00070 100644 --- a/apidocs/index.html +++ b/apidocs/index.html @@ -1,7 +1,7 @@ - + Overview (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/overview-summary.html b/apidocs/overview-summary.html index 542971c7..5300fff8 100644 --- a/apidocs/overview-summary.html +++ b/apidocs/overview-summary.html @@ -1,7 +1,7 @@ - + Jersey Webservice Template 1.0-SNAPSHOT API diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html index b8e0a314..0adc2676 100644 --- a/apidocs/overview-tree.html +++ b/apidocs/overview-tree.html @@ -1,7 +1,7 @@ - + Class Hierarchy (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/apidocs/serialized-form.html b/apidocs/serialized-form.html index 2592ccf7..55df3ae3 100644 --- a/apidocs/serialized-form.html +++ b/apidocs/serialized-form.html @@ -1,7 +1,7 @@ - + Serialized Form (Jersey Webservice Template 1.0-SNAPSHOT API) diff --git a/assets/images/instantiation-2-20664380f27ede09ea7e61fe278aa40b.png b/assets/images/instantiation-2-20664380f27ede09ea7e61fe278aa40b.png new file mode 100644 index 00000000..5ecd4c57 Binary files /dev/null and b/assets/images/instantiation-2-20664380f27ede09ea7e61fe278aa40b.png differ diff --git a/assets/images/instantiation-2-3889ab292ac428acff23f1e06526634d.png b/assets/images/instantiation-2-3889ab292ac428acff23f1e06526634d.png deleted file mode 100644 index df3b8591..00000000 Binary files a/assets/images/instantiation-2-3889ab292ac428acff23f1e06526634d.png and /dev/null differ diff --git a/assets/js/0e8e9734.117169f6.js b/assets/js/0e8e9734.117169f6.js deleted file mode 100644 index 27d5ef7b..00000000 --- a/assets/js/0e8e9734.117169f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2554],{7237:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var a=t(4848),i=t(8453),r=t(1470),s=t(9365);const l={sidebar_position:1,title:"Getting Started",description:"Standing up a CRUD webservice in a minute"},o=void 0,d={id:"crud/index",title:"Getting Started",description:"Standing up a CRUD webservice in a minute",source:"@site/docs/crud/index.mdx",sourceDirName:"crud",slug:"/crud/",permalink:"/jersey-webservice-template/docs/crud/",draft:!1,unlisted:!1,editUrl:"https://github.com/QubitPi/jersey-webservice-template/tree/master/docs/docs/crud/index.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Getting Started",description:"Standing up a CRUD webservice in a minute"},sidebar:"tutorialSidebar",previous:{title:"CRUD Webservice",permalink:"/jersey-webservice-template/docs/category/crud-webservice"},next:{title:"Elide Library Documentation",permalink:"/jersey-webservice-template/docs/category/elide-library-documentation"}},c={},u=[{value:"So You Want An API?",id:"so-you-want-an-api",level:2},{value:"Instantiating the Template",id:"instantiating-the-template",level:2},{value:"Creating Models",id:"creating-models",level:2},{value:"Loading Data Models",id:"loading-data-models",level:2},{value:"Running",id:"running",level:2},{value:"Writing Data",id:"writing-data",level:2},{value:"Inserting Data",id:"inserting-data",level:3},{value:"Looking at Our Data",id:"looking-at-our-data",level:3},{value:"Modifying Data",id:"modifying-data",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:(0,a.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/",children:(0,a.jsx)(n.img,{src:"https://img.shields.io/badge/EC2-%E2%89%A5t2.small-FF9902?style=for-the-badge&logo=amazonec2&logoColor=white",alt:"AWS EC2 min size"})})}),"\n",(0,a.jsx)(n.h2,{id:"so-you-want-an-api",children:"So You Want An API?"}),"\n",(0,a.jsx)(n.admonition,{title:"Please make sure JDK 17, Maven, and Docker Engine have been installed \ud83e\udd17",type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["We offer ",(0,a.jsx)(n.a,{href:"../setup#installing-java--maven-on-mac",children:"instruction"})," on how to install JDK 17 and Maven"]}),"\n",(0,a.jsxs)(n.li,{children:["We also offer ",(0,a.jsx)(n.a,{href:"../setup#installing-docker-engine",children:"links to Docker Engine installation"})]}),"\n"]})}),"\n",(0,a.jsx)(n.h2,{id:"instantiating-the-template",children:"Instantiating the Template"}),"\n",(0,a.jsxs)(n.p,{children:["Please visit ",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template",children:"JWT GitHub"})," and either"]}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["clone the repo with ",(0,a.jsx)(n.code,{children:"git clone https://github.com/QubitPi/jersey-webservice-template.git"}),", or"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"make it a template instantiation with our own webservice name by doing the following:"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.img,{alt:"Error loading instantiation-1.png",src:t(9502).A+"",width:"3584",height:"836"}),"\n",(0,a.jsx)(n.img,{alt:"Error loading instantiation-2.png",src:t(9877).A+"",width:"3584",height:"1992"})]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"creating-models",children:"Creating Models"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"https://qubitpi.github.io/jersey-webservice-template/",children:"Jersey Webservice Template"})," models are some of the most important code in any webservice project. Our models are the\nview of our data that we wish to expose. In this example we will be modeling a ",(0,a.jsx)(n.em,{children:"book"})," since most people have a\nhigh-level familiarity with books in life."]}),"\n",(0,a.jsxs)(n.p,{children:["Our ",(0,a.jsx)(n.em,{children:"Book"})," model looks something like this:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-java",children:'import com.yahoo.elide.annotation.Include;\n\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.GeneratedValue;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\n@Entity\n@Table(name = "book")\n@Include(rootLevel = true, name = "book", description = "book entity", friendlyName = "book")\npublic class Book {\n\n @Id\n @GeneratedValue\n public long id;\n\n public String title = "";\n}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Models are usually packaged as ",(0,a.jsx)(n.strong,{children:"JAR"})," file in a separate Maven project. Here is a complete\n",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"example"})]})}),"\n",(0,a.jsxs)(n.p,{children:["In the end, run ",(0,a.jsx)(n.code,{children:"mvn clean install"})," to install our model"]}),"\n",(0,a.jsxs)(n.admonition,{type:"info",children:[(0,a.jsxs)(n.p,{children:["From this point on, we assume ",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"this example data model"})," is used"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/QubitPi/jersey-webservice-template-jpa-data-models.git\ncd jersey-webservice-template-jpa-data-models\nmvn clean install\n"})})]}),"\n",(0,a.jsx)(n.h2,{id:"loading-data-models",children:"Loading Data Models"}),"\n",(0,a.jsxs)(n.p,{children:["So now we have some models, but without an API it is not very useful. Now we need to instruct our ",(0,a.jsx)(n.em,{children:"my-webservice"})," to\nload ",(0,a.jsx)(n.a,{href:"#creating-models",children:"data models"})," via Maven config file, i.e. ",(0,a.jsx)(n.strong,{children:"~/.m2/settings.xml"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-xml",children:'\n\n \n \n jwt-data-models\n \n io.github.qubitpi\n jersey-webservice-template-jpa-data-models\n 1.0.1\n \n \n \n\n \n jwt-data-models\n \n\n'})}),"\n",(0,a.jsx)(n.h2,{id:"running",children:"Running"}),"\n",(0,a.jsxs)(n.p,{children:["With data models defined, can run ",(0,a.jsx)(n.em,{children:"my-webservice"})]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd my-webservice\nmvn clean package\nMODEL_PACKAGE_NAME=io.github.qubitpi.ws.jersey.template.models docker compose up --build --force-recreate\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.code,{children:"io.github.qubitpi.ws.jersey.template.models"})," is the name of the model in the aforementioned\n",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"data model project"})]})}),"\n",(0,a.jsx)(n.h2,{id:"writing-data",children:"Writing Data"}),"\n",(0,a.jsx)(n.h3,{id:"inserting-data",children:"Inserting Data"}),"\n",(0,a.jsx)(n.p,{children:"We have defined our views on the database and exposed those views over HTTP. Next let's use cURL to put data in the\ndatabase."}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST http://localhost:8080/v1/data/book \\\n -H "Content-Type: application/vnd.api+json" \\\n -H "Accept: application/vnd.api+json" \\\n -d \'{"data": {"type": "book", "attributes": { "title": "Pride and Prejudice" }}}\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "mutation { book(op: UPSERT, data:{title: \\"Pride & Prejudice\\"}) { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:'mutation {\n book(op: UPSERT, data:{title: "Pride & Prejudice"}) {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n'})})})]}),"\n",(0,a.jsx)(n.p,{children:"When we run that cURL call we should see a bunch of JSON returned, that is our newly inserted object!"}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n "data":{\n "type":"book",\n "id":"1",\n "attributes":{\n "title":"Pride and Prejudice"\n }\n }\n}\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n "data":{\n "book":{\n "edges":[\n {\n "node":{\n "id":"4",\n "title":"Pride & Prejudice"\n }\n }\n ]\n }\n }\n}\n'})})})]}),"\n",(0,a.jsx)(n.h3,{id:"looking-at-our-data",children:"Looking at Our Data"}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsxs)(s.A,{value:"browser",label:"Web Browser",default:!0,children:[(0,a.jsxs)(n.p,{children:["Simply open up our favorite browser and hit ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"http://localhost:8080/v1/data/book",children:"http://localhost:8080/v1/data/book"})})]}),(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["It is recommended to view result with some\n",(0,a.jsx)(n.a,{href:"https://chromewebstore.google.com/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa",children:"JSON formatter"})," browser\nextension for better viewing experience"]})})]}),(0,a.jsx)(s.A,{value:"json-api",label:"JSON-API",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl "http://localhost:8080/v1/data/book"\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "{ book { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:"{\n book {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n"})})})]}),"\n",(0,a.jsx)(n.h3,{id:"modifying-data",children:"Modifying Data"}),"\n",(0,a.jsx)(n.p,{children:"Notice that, when we created it, we did not set any of the attributes of our new book record. Updating our data to help\nour users is just as easy as it is to add new data. Let's update our model with the following cURL call."}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X PATCH http://localhost:8080/v1/data/book/1 \\\n -H "Content-Type: application/vnd.api+json" \\\n -H "Accept: application/vnd.api+json" \\\n -d \'{"data": {"type": "book", "id": "1", "attributes": { "title": "Emma" }}}\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "mutation { book(op: UPSERT, data: {id: \\"1\\", title: \\"Emma\\"}) { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:'mutation {\n book(op: UPSERT, data: {id: "1", title: "Emma"}) {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(53);const i={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(i.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var a=t(6540),i=t(53),r=t(3104),s=t(6347),l=t(205),o=t(7485),d=t(1682),c=t(9466);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:i}}=e;return{value:n,label:t,attributes:a,default:i}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const i=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(i.location.search);n.set(r,e),i.replace({...i.location,search:n.toString()})}),[r,i])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:i}=e,r=h(e),[s,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=m({queryString:t,groupId:i}),[g,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,r]=(0,c.Dv)(t);return[i,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:i}),j=(()=>{const e=d??g;return p({value:e,tabValues:r})?e:null})();(0,l.A)((()=>{j&&o(j)}),[j]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=t(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function v(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=o.indexOf(n),i=l[t].value;i!==a&&(d(n),s(i))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:u,onClick:c,...r,className:(0,i.A)("tabs__item",j.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function f(e){let{lazy:n,children:t,selectedValue:i}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===i));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function w(e){const n=g(e);return(0,x.jsxs)("div",{className:(0,i.A)("tabs-container",j.tabList),children:[(0,x.jsx)(v,{...e,...n}),(0,x.jsx)(f,{...e,...n})]})}function y(e){const n=(0,b.A)();return(0,x.jsx)(w,{...e,children:u(e.children)},String(n))}},9502:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/instantiation-1-8a45c5a0f1bc5f7232d08bfb82f1336b.png"},9877:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/instantiation-2-3889ab292ac428acff23f1e06526634d.png"},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>l});var a=t(6540);const i={},r=a.createContext(i);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0e8e9734.a2024893.js b/assets/js/0e8e9734.a2024893.js new file mode 100644 index 00000000..18ee0497 --- /dev/null +++ b/assets/js/0e8e9734.a2024893.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2554],{7237:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var a=t(4848),i=t(8453),r=t(1470),s=t(9365);const l={sidebar_position:1,title:"Getting Started",description:"Standing up a CRUD webservice in a minute"},o=void 0,d={id:"crud/index",title:"Getting Started",description:"Standing up a CRUD webservice in a minute",source:"@site/docs/crud/index.mdx",sourceDirName:"crud",slug:"/crud/",permalink:"/jersey-webservice-template/docs/crud/",draft:!1,unlisted:!1,editUrl:"https://github.com/QubitPi/jersey-webservice-template/tree/master/docs/docs/crud/index.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"Getting Started",description:"Standing up a CRUD webservice in a minute"},sidebar:"tutorialSidebar",previous:{title:"CRUD Webservice",permalink:"/jersey-webservice-template/docs/category/crud-webservice"},next:{title:"Elide Library Documentation",permalink:"/jersey-webservice-template/docs/category/elide-library-documentation"}},c={},u=[{value:"So You Want An API?",id:"so-you-want-an-api",level:2},{value:"Instantiating the Template",id:"instantiating-the-template",level:2},{value:"Creating Models",id:"creating-models",level:2},{value:"Loading Data Models",id:"loading-data-models",level:2},{value:"Running",id:"running",level:2},{value:"Writing Data",id:"writing-data",level:2},{value:"Inserting Data",id:"inserting-data",level:3},{value:"Looking at Our Data",id:"looking-at-our-data",level:3},{value:"Modifying Data",id:"modifying-data",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:(0,a.jsx)(n.a,{href:"https://aws.amazon.com/ec2/instance-types/",children:(0,a.jsx)(n.img,{src:"https://img.shields.io/badge/EC2-%E2%89%A5t2.small-FF9902?style=for-the-badge&logo=amazonec2&logoColor=white",alt:"AWS EC2 min size"})})}),"\n",(0,a.jsx)(n.h2,{id:"so-you-want-an-api",children:"So You Want An API?"}),"\n",(0,a.jsx)(n.admonition,{title:"Please make sure JDK 17, Maven, and Docker Engine have been installed \ud83e\udd17",type:"info",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["We offer ",(0,a.jsx)(n.a,{href:"../setup#installing-java--maven-on-mac",children:"instruction"})," on how to install JDK 17 and Maven"]}),"\n",(0,a.jsxs)(n.li,{children:["We also offer ",(0,a.jsx)(n.a,{href:"../setup#installing-docker-engine",children:"links to Docker Engine installation"})]}),"\n"]})}),"\n",(0,a.jsx)(n.h2,{id:"instantiating-the-template",children:"Instantiating the Template"}),"\n",(0,a.jsxs)(n.p,{children:["Please visit ",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template",children:"JWT GitHub"})," and either"]}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["clone the repo with ",(0,a.jsx)(n.code,{children:"git clone https://github.com/QubitPi/jersey-webservice-template.git"})," and switch to the\n",(0,a.jsx)(n.code,{children:"jpa-elide"})," branch using ",(0,a.jsx)(n.code,{children:"git checkout jpa-elide"}),", or"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"make it a template instantiation with our own webservice name by doing the following:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Error loading instantiation-1.png",src:t(9502).A+"",width:"3584",height:"836"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:['Please make sure the "',(0,a.jsx)(n.strong,{children:"Include all branches"}),'" is checked']})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Error loading instantiation-2.png",src:t(9877).A+"",width:"2120",height:"840"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"creating-models",children:"Creating Models"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"https://qubitpi.github.io/jersey-webservice-template/",children:"Jersey Webservice Template"})," models are some of the most important code in any webservice project. Our models are the\nview of our data that we wish to expose. In this example we will be modeling a ",(0,a.jsx)(n.em,{children:"book"})," since most people have a\nhigh-level familiarity with books in life."]}),"\n",(0,a.jsxs)(n.p,{children:["Our ",(0,a.jsx)(n.em,{children:"Book"})," model looks something like this:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-java",children:'import com.yahoo.elide.annotation.Include;\n\nimport jakarta.persistence.Entity;\nimport jakarta.persistence.GeneratedValue;\nimport jakarta.persistence.Id;\nimport jakarta.persistence.Table;\n\n@Entity\n@Table(name = "book")\n@Include(rootLevel = true, name = "book", description = "book entity", friendlyName = "book")\npublic class Book {\n\n @Id\n @GeneratedValue\n public long id;\n\n public String title = "";\n}\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Models are usually packaged as ",(0,a.jsx)(n.strong,{children:"JAR"})," file in a separate Maven project. Here is a complete\n",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"example"})]})}),"\n",(0,a.jsxs)(n.p,{children:["In the end, run ",(0,a.jsx)(n.code,{children:"mvn clean install"})," to install our model"]}),"\n",(0,a.jsxs)(n.admonition,{type:"info",children:[(0,a.jsxs)(n.p,{children:["From this point on, we assume ",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"this example data model"})," is used, which can\nbe installed locally using the following commands:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/QubitPi/jersey-webservice-template-jpa-data-models.git\ncd jersey-webservice-template-jpa-data-models\nmvn clean install\n"})})]}),"\n",(0,a.jsx)(n.h2,{id:"loading-data-models",children:"Loading Data Models"}),"\n",(0,a.jsxs)(n.p,{children:["So now we have some models, but without an API it is not very useful. Now we need to instruct our ",(0,a.jsx)(n.em,{children:"my-webservice"})," to\nload ",(0,a.jsx)(n.a,{href:"#creating-models",children:"data models"})," via Maven config file, i.e. ",(0,a.jsx)(n.strong,{children:"settings.xml"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-xml",children:'\n\n \n \n jwt-data-models\n \n io.github.qubitpi\n jersey-webservice-template-jpa-data-models\n 1.0.1\n \n \n \n\n \n jwt-data-models\n \n\n'})}),"\n",(0,a.jsx)(n.h2,{id:"running",children:"Running"}),"\n",(0,a.jsxs)(n.p,{children:["With data models defined, can run ",(0,a.jsx)(n.em,{children:"my-webservice"})]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd my-webservice\nmvn clean package --settings settings.xml\nMODEL_PACKAGE_NAME=io.github.qubitpi.ws.jersey.template.models docker compose up --build --force-recreate\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Note that the ",(0,a.jsx)(n.code,{children:"settings.xml"})," is the ",(0,a.jsx)(n.a,{href:"#loading-data-models",children:"Maven config file for loading the data model"})]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.code,{children:"io.github.qubitpi.ws.jersey.template.models"})," is the name of the model in the aforementioned\n",(0,a.jsx)(n.a,{href:"https://github.com/QubitPi/jersey-webservice-template-jpa-data-models",children:"data model project"})]})}),"\n",(0,a.jsx)(n.h2,{id:"writing-data",children:"Writing Data"}),"\n",(0,a.jsx)(n.h3,{id:"inserting-data",children:"Inserting Data"}),"\n",(0,a.jsx)(n.p,{children:"We have defined our views on the database and exposed those views over HTTP. Next let's use cURL to put data in the\ndatabase."}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST http://localhost:8080/v1/data/book \\\n -H "Content-Type: application/vnd.api+json" \\\n -H "Accept: application/vnd.api+json" \\\n -d \'{"data": {"type": "book", "attributes": { "title": "Pride and Prejudice" }}}\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "mutation { book(op: UPSERT, data:{title: \\"Pride & Prejudice\\"}) { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:'mutation {\n book(op: UPSERT, data:{title: "Pride & Prejudice"}) {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n'})})})]}),"\n",(0,a.jsx)(n.p,{children:"When we run that cURL call we should see a bunch of JSON returned, that is our newly inserted object!"}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n "data":{\n "type":"book",\n "id":"1",\n "attributes":{\n "title":"Pride and Prejudice"\n }\n }\n}\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n "data":{\n "book":{\n "edges":[\n {\n "node":{\n "id":"4",\n "title":"Pride & Prejudice"\n }\n }\n ]\n }\n }\n}\n'})})})]}),"\n",(0,a.jsx)(n.h3,{id:"looking-at-our-data",children:"Looking at Our Data"}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsxs)(s.A,{value:"browser",label:"Web Browser",default:!0,children:[(0,a.jsxs)(n.p,{children:["Simply open up our favorite browser and hit ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"http://localhost:8080/v1/data/book",children:"http://localhost:8080/v1/data/book"})})]}),(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["It is recommended to view result with some\n",(0,a.jsx)(n.a,{href:"https://chromewebstore.google.com/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa",children:"JSON formatter"})," browser\nextension for better viewing experience"]})})]}),(0,a.jsx)(s.A,{value:"json-api",label:"JSON-API",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl "http://localhost:8080/v1/data/book"\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "{ book { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:"{\n book {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n"})})})]}),"\n",(0,a.jsx)(n.h3,{id:"modifying-data",children:"Modifying Data"}),"\n",(0,a.jsx)(n.p,{children:"Notice that, when we created it, we did not set any of the attributes of our new book record. Updating our data to help\nour users is just as easy as it is to add new data. Let's update our model with the following cURL call."}),"\n",(0,a.jsxs)(r.A,{children:[(0,a.jsx)(s.A,{value:"jsonapi",label:"JSON-API",default:!0,children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X PATCH http://localhost:8080/v1/data/book/1 \\\n -H "Content-Type: application/vnd.api+json" \\\n -H "Accept: application/vnd.api+json" \\\n -d \'{"data": {"type": "book", "id": "1", "attributes": { "title": "Emma" }}}\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql",label:"GraphQL",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'curl -X POST "http://localhost:8080/v1/data" \\\n -H "Content-Type: application/json" \\\n -H "Accept: application/json" \\\n -d \'{ "query" : "mutation { book(op: UPSERT, data: {id: \\"1\\", title: \\"Emma\\"}) { edges { node { id title } } } }" }\'\n'})})}),(0,a.jsx)(s.A,{value:"graphql-query",label:"(GraphQL) Query",children:(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-graphql",children:'mutation {\n book(op: UPSERT, data: {id: "1", title: "Emma"}) {\n edges {\n node {\n id\n title\n }\n }\n }\n}\n'})})})]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(53);const i={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(i.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>y});var a=t(6540),i=t(53),r=t(3104),s=t(6347),l=t(205),o=t(7485),d=t(1682),c=t(9466);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:i}}=e;return{value:n,label:t,attributes:a,default:i}}))}(t);return function(e){const n=(0,d.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const i=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,o.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(i.location.search);n.set(r,e),i.replace({...i.location,search:n.toString()})}),[r,i])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:i}=e,r=h(e),[s,o]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=m({queryString:t,groupId:i}),[g,j]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,r]=(0,c.Dv)(t);return[i,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:i}),b=(()=>{const e=d??g;return p({value:e,tabValues:r})?e:null})();(0,l.A)((()=>{b&&o(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),j(e)}),[u,j,r]),tabValues:r}}var j=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var x=t(4848);function v(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:l}=e;const o=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=o.indexOf(n),i=l[t].value;i!==a&&(d(n),s(i))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=o.indexOf(e.currentTarget)+1;n=o[t]??o[0];break}case"ArrowLeft":{const t=o.indexOf(e.currentTarget)-1;n=o[t]??o[o.length-1];break}}n?.focus()};return(0,x.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,x.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>o.push(e),onKeyDown:u,onClick:c,...r,className:(0,i.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function f(e){let{lazy:n,children:t,selectedValue:i}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===i));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,x.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function w(e){const n=g(e);return(0,x.jsxs)("div",{className:(0,i.A)("tabs-container",b.tabList),children:[(0,x.jsx)(v,{...e,...n}),(0,x.jsx)(f,{...e,...n})]})}function y(e){const n=(0,j.A)();return(0,x.jsx)(w,{...e,children:u(e.children)},String(n))}},9502:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/instantiation-1-8a45c5a0f1bc5f7232d08bfb82f1336b.png"},9877:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/instantiation-2-20664380f27ede09ea7e61fe278aa40b.png"},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>l});var a=t(6540);const i={},r=a.createContext(i);function s(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.9fb10690.js b/assets/js/runtime~main.7c068302.js similarity index 99% rename from assets/js/runtime~main.9fb10690.js rename to assets/js/runtime~main.7c068302.js index 88c669ee..cabac152 100644 --- a/assets/js/runtime~main.9fb10690.js +++ b/assets/js/runtime~main.7c068302.js @@ -1 +1 @@ -(()=>{"use strict";var e,f,c,d,a,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(f,c,d,a)=>{if(!c){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[c,d,a]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};f=f||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(a,b),a},r.d=(e,f)=>{for(var c in f)r.o(f,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:f[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,c)=>(r.f[c](e,f),f)),[])),r.u=e=>"assets/js/"+({5:"8202ecb4",25:"afef3b27",40:"be06bf6d",61:"9c9866af",130:"58b2d929",202:"5532a01d",207:"d3a5e8e1",338:"3be6df1b",373:"ee23de4d",423:"65998a66",451:"23a15255",513:"9e15c67d",732:"2fb8fd14",935:"f2eaf5af",989:"8986ab40",1015:"a07d0309",1083:"3c618eb2",1119:"31d1c956",1192:"7e881839",1278:"301ab1eb",1350:"7c26d4a0",1376:"95a7d8e6",1599:"569c7e78",1603:"ffa324e9",1765:"69ec54b8",1843:"f193a7dc",1944:"dc718134",2138:"1a4e3797",2363:"14801c25",2375:"e63c8e4f",2516:"cf780f3f",2530:"c32cfe41",2554:"0e8e9734",2711:"9e4087bc",2858:"8477c7d5",2985:"a8fe10c8",3138:"7f9b406a",3206:"33f5a029",3249:"ccc49370",3253:"55c88f21",3401:"95c88355",3509:"4693ed8c",3568:"3e93d4e0",3697:"348887ec",3884:"a8f74324",3936:"ab9f284a",3976:"0e384e19",4077:"bddc7183",4134:"393be207",4214:"8b81c793",4267:"a25f9825",4336:"03751d98",4362:"dd3399a6",4423:"8f030830",4583:"1df93b7f",4724:"5a0dfef8",4789:"7cffda2c",4813:"6875c492",4816:"1412db6a",4819:"2f4b3249",5017:"dcb320db",5157:"f4ccecdb",5232:"dfd458d2",5235:"cbb899e4",5336:"0f2d05bd",5403:"33df8b1e",5456:"c62a11e2",5480:"2e1e1f94",5514:"ce6992b1",5775:"9f4f599f",5811:"8d9c266b",5827:"4cb94163",5845:"4366c484",5854:"6b767667",6028:"92cd3f2f",6061:"1f391b9e",6076:"af66285c",6214:"3847b3ea",6447:"cb9e1f71",6486:"0fe8a094",6578:"b0c4e38f",6667:"0a2d206c",6763:"0d8d076a",6783:"61d14240",6837:"ab918728",6899:"9ce18c27",6913:"318cf6b3",6969:"14eb3368",6998:"53d9e20a",7098:"a7bd4aaa",7138:"2e2753e0",7142:"e020da85",7228:"95fef0bb",7299:"ccdd54c8",7391:"069c4011",7437:"704ec906",7472:"814f3328",7643:"a6aa9e1f",7701:"db261029",7786:"f3e840dc",7793:"dfd0adcf",8042:"20ee3b95",8198:"67e1a4a6",8209:"01a85c17",8359:"3adf0bec",8379:"41fee3ee",8401:"17896441",8499:"0ed972dc",8571:"88b9697e",8581:"935f2afb",8606:"209c82fc",8723:"4696b8cd",8805:"bbe2f409",9048:"a94703ab",9137:"0efae421",9454:"7dfce774",9459:"dfdcf51a",9647:"5e95c892",9709:"c58c19e8",9814:"b1a04edd",9841:"90acd7ea"}[e]||e)+"."+{5:"cdfcb725",25:"7db4911c",40:"964bc269",61:"a90f64c5",130:"6eca5988",202:"e61d1be3",207:"39efc239",338:"9cb2fd14",373:"bdea7007",416:"5a82d981",423:"acd38e55",451:"3750dd50",513:"7821d432",732:"4c7ee79f",935:"22dfacaa",989:"40663d1f",1015:"945e7abf",1083:"2ab148ae",1119:"be0ce5ca",1192:"0902b7fa",1278:"80697b85",1350:"2470fb20",1376:"790328ad",1407:"ebe0128e",1599:"eae264fd",1603:"8b8e9559",1765:"d6f3b38b",1843:"76c352f2",1944:"f93ee066",2138:"65c94461",2237:"2eacc1d3",2363:"d946a279",2375:"9da1c890",2516:"53cc5998",2530:"35451b59",2554:"117169f6",2711:"db222057",2858:"9c8a2bd3",2985:"2603861d",3138:"3c419568",3206:"76c9e71f",3249:"1056ba5a",3253:"be59cf2a",3401:"afb7108a",3509:"e9fce01f",3568:"c7ced6c1",3697:"27999c10",3884:"e3d4f282",3936:"9e74c575",3976:"3d543a44",4077:"36a80886",4134:"699268d3",4214:"165801bb",4267:"7076bdb3",4336:"2c90a85e",4362:"eae36133",4423:"f87bf991",4583:"a9096fb1",4724:"0014aa1d",4789:"7c58b9f6",4813:"b4a416b4",4816:"a791fef8",4819:"7b43e222",5017:"9123c9e3",5157:"feb68fd3",5232:"a99c1037",5235:"89438bb5",5336:"028458a5",5403:"32e6f9e6",5456:"3aae9c95",5480:"cdc013c1",5514:"2138b1bb",5775:"71f3b9f2",5811:"2139d14c",5827:"8eb9c45e",5845:"fad50440",5854:"3f98511e",6028:"1c20d516",6061:"4c6dcd0f",6076:"67031613",6214:"3a8de082",6447:"c7beebb1",6486:"bb3fdf19",6578:"2eecb0ee",6667:"5c837fea",6763:"8b496d69",6783:"debcc131",6837:"9ad0a782",6899:"81cce167",6913:"86265c6f",6969:"81aa9054",6998:"3953f120",7098:"93739b00",7138:"beaed4c6",7142:"7d261d15",7228:"d6e91775",7299:"e3eafe68",7391:"1114a6d2",7437:"ef6d0f4d",7472:"7c3c0523",7643:"801176cc",7701:"e9b9a8cd",7786:"1befe965",7793:"1c300094",8042:"d1ccae70",8198:"714907e3",8209:"c0013e13",8359:"8ca7e1c6",8379:"d97dc3fe",8401:"93d2a197",8499:"b427c181",8571:"e55e6205",8581:"7ed1d15d",8606:"100184fd",8723:"69d0936d",8747:"cfcdb05c",8805:"c7d7c44b",8913:"64e5ee35",9048:"be18be68",9137:"fe9a2f77",9454:"af1fcd0a",9459:"4d5ef8cd",9462:"d587a550",9647:"cca88e5b",9709:"75fbc9df",9814:"17bc57a8",9841:"a784ad5c"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},a="docs:",r.l=(e,f,c,b)=>{if(d[e])d[e].push(f);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(c))),f)return f(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/jersey-webservice-template/",r.gca=function(e){return e={17896441:"8401","8202ecb4":"5",afef3b27:"25",be06bf6d:"40","9c9866af":"61","58b2d929":"130","5532a01d":"202",d3a5e8e1:"207","3be6df1b":"338",ee23de4d:"373","65998a66":"423","23a15255":"451","9e15c67d":"513","2fb8fd14":"732",f2eaf5af:"935","8986ab40":"989",a07d0309:"1015","3c618eb2":"1083","31d1c956":"1119","7e881839":"1192","301ab1eb":"1278","7c26d4a0":"1350","95a7d8e6":"1376","569c7e78":"1599",ffa324e9:"1603","69ec54b8":"1765",f193a7dc:"1843",dc718134:"1944","1a4e3797":"2138","14801c25":"2363",e63c8e4f:"2375",cf780f3f:"2516",c32cfe41:"2530","0e8e9734":"2554","9e4087bc":"2711","8477c7d5":"2858",a8fe10c8:"2985","7f9b406a":"3138","33f5a029":"3206",ccc49370:"3249","55c88f21":"3253","95c88355":"3401","4693ed8c":"3509","3e93d4e0":"3568","348887ec":"3697",a8f74324:"3884",ab9f284a:"3936","0e384e19":"3976",bddc7183:"4077","393be207":"4134","8b81c793":"4214",a25f9825:"4267","03751d98":"4336",dd3399a6:"4362","8f030830":"4423","1df93b7f":"4583","5a0dfef8":"4724","7cffda2c":"4789","6875c492":"4813","1412db6a":"4816","2f4b3249":"4819",dcb320db:"5017",f4ccecdb:"5157",dfd458d2:"5232",cbb899e4:"5235","0f2d05bd":"5336","33df8b1e":"5403",c62a11e2:"5456","2e1e1f94":"5480",ce6992b1:"5514","9f4f599f":"5775","8d9c266b":"5811","4cb94163":"5827","4366c484":"5845","6b767667":"5854","92cd3f2f":"6028","1f391b9e":"6061",af66285c:"6076","3847b3ea":"6214",cb9e1f71:"6447","0fe8a094":"6486",b0c4e38f:"6578","0a2d206c":"6667","0d8d076a":"6763","61d14240":"6783",ab918728:"6837","9ce18c27":"6899","318cf6b3":"6913","14eb3368":"6969","53d9e20a":"6998",a7bd4aaa:"7098","2e2753e0":"7138",e020da85:"7142","95fef0bb":"7228",ccdd54c8:"7299","069c4011":"7391","704ec906":"7437","814f3328":"7472",a6aa9e1f:"7643",db261029:"7701",f3e840dc:"7786",dfd0adcf:"7793","20ee3b95":"8042","67e1a4a6":"8198","01a85c17":"8209","3adf0bec":"8359","41fee3ee":"8379","0ed972dc":"8499","88b9697e":"8571","935f2afb":"8581","209c82fc":"8606","4696b8cd":"8723",bbe2f409:"8805",a94703ab:"9048","0efae421":"9137","7dfce774":"9454",dfdcf51a:"9459","5e95c892":"9647",c58c19e8:"9709",b1a04edd:"9814","90acd7ea":"9841"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(f,c)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(f))e[f]=0;else{var a=new Promise(((c,a)=>d=e[f]=[c,a]));c.push(d[2]=a);var b=r.p+r.u(f),t=new Error;r.l(b,(c=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var a=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+f+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,c)=>{var d,a,b=c[0],t=c[1],o=c[2],n=0;if(b.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(c);n{"use strict";var e,f,c,d,a,b={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(f,c,d,a)=>{if(!c){var b=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[c,d,a]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var b={};f=f||[null,c({}),c([]),c(c)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,r.d(a,b),a},r.d=(e,f)=>{for(var c in f)r.o(f,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:f[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,c)=>(r.f[c](e,f),f)),[])),r.u=e=>"assets/js/"+({5:"8202ecb4",25:"afef3b27",40:"be06bf6d",61:"9c9866af",130:"58b2d929",202:"5532a01d",207:"d3a5e8e1",338:"3be6df1b",373:"ee23de4d",423:"65998a66",451:"23a15255",513:"9e15c67d",732:"2fb8fd14",935:"f2eaf5af",989:"8986ab40",1015:"a07d0309",1083:"3c618eb2",1119:"31d1c956",1192:"7e881839",1278:"301ab1eb",1350:"7c26d4a0",1376:"95a7d8e6",1599:"569c7e78",1603:"ffa324e9",1765:"69ec54b8",1843:"f193a7dc",1944:"dc718134",2138:"1a4e3797",2363:"14801c25",2375:"e63c8e4f",2516:"cf780f3f",2530:"c32cfe41",2554:"0e8e9734",2711:"9e4087bc",2858:"8477c7d5",2985:"a8fe10c8",3138:"7f9b406a",3206:"33f5a029",3249:"ccc49370",3253:"55c88f21",3401:"95c88355",3509:"4693ed8c",3568:"3e93d4e0",3697:"348887ec",3884:"a8f74324",3936:"ab9f284a",3976:"0e384e19",4077:"bddc7183",4134:"393be207",4214:"8b81c793",4267:"a25f9825",4336:"03751d98",4362:"dd3399a6",4423:"8f030830",4583:"1df93b7f",4724:"5a0dfef8",4789:"7cffda2c",4813:"6875c492",4816:"1412db6a",4819:"2f4b3249",5017:"dcb320db",5157:"f4ccecdb",5232:"dfd458d2",5235:"cbb899e4",5336:"0f2d05bd",5403:"33df8b1e",5456:"c62a11e2",5480:"2e1e1f94",5514:"ce6992b1",5775:"9f4f599f",5811:"8d9c266b",5827:"4cb94163",5845:"4366c484",5854:"6b767667",6028:"92cd3f2f",6061:"1f391b9e",6076:"af66285c",6214:"3847b3ea",6447:"cb9e1f71",6486:"0fe8a094",6578:"b0c4e38f",6667:"0a2d206c",6763:"0d8d076a",6783:"61d14240",6837:"ab918728",6899:"9ce18c27",6913:"318cf6b3",6969:"14eb3368",6998:"53d9e20a",7098:"a7bd4aaa",7138:"2e2753e0",7142:"e020da85",7228:"95fef0bb",7299:"ccdd54c8",7391:"069c4011",7437:"704ec906",7472:"814f3328",7643:"a6aa9e1f",7701:"db261029",7786:"f3e840dc",7793:"dfd0adcf",8042:"20ee3b95",8198:"67e1a4a6",8209:"01a85c17",8359:"3adf0bec",8379:"41fee3ee",8401:"17896441",8499:"0ed972dc",8571:"88b9697e",8581:"935f2afb",8606:"209c82fc",8723:"4696b8cd",8805:"bbe2f409",9048:"a94703ab",9137:"0efae421",9454:"7dfce774",9459:"dfdcf51a",9647:"5e95c892",9709:"c58c19e8",9814:"b1a04edd",9841:"90acd7ea"}[e]||e)+"."+{5:"cdfcb725",25:"7db4911c",40:"964bc269",61:"a90f64c5",130:"6eca5988",202:"e61d1be3",207:"39efc239",338:"9cb2fd14",373:"bdea7007",416:"5a82d981",423:"acd38e55",451:"3750dd50",513:"7821d432",732:"4c7ee79f",935:"22dfacaa",989:"40663d1f",1015:"945e7abf",1083:"2ab148ae",1119:"be0ce5ca",1192:"0902b7fa",1278:"80697b85",1350:"2470fb20",1376:"790328ad",1407:"ebe0128e",1599:"eae264fd",1603:"8b8e9559",1765:"d6f3b38b",1843:"76c352f2",1944:"f93ee066",2138:"65c94461",2237:"2eacc1d3",2363:"d946a279",2375:"9da1c890",2516:"53cc5998",2530:"35451b59",2554:"a2024893",2711:"db222057",2858:"9c8a2bd3",2985:"2603861d",3138:"3c419568",3206:"76c9e71f",3249:"1056ba5a",3253:"be59cf2a",3401:"afb7108a",3509:"e9fce01f",3568:"c7ced6c1",3697:"27999c10",3884:"e3d4f282",3936:"9e74c575",3976:"3d543a44",4077:"36a80886",4134:"699268d3",4214:"165801bb",4267:"7076bdb3",4336:"2c90a85e",4362:"eae36133",4423:"f87bf991",4583:"a9096fb1",4724:"0014aa1d",4789:"7c58b9f6",4813:"b4a416b4",4816:"a791fef8",4819:"7b43e222",5017:"9123c9e3",5157:"feb68fd3",5232:"a99c1037",5235:"89438bb5",5336:"028458a5",5403:"32e6f9e6",5456:"3aae9c95",5480:"cdc013c1",5514:"2138b1bb",5775:"71f3b9f2",5811:"2139d14c",5827:"8eb9c45e",5845:"fad50440",5854:"3f98511e",6028:"1c20d516",6061:"4c6dcd0f",6076:"67031613",6214:"3a8de082",6447:"c7beebb1",6486:"bb3fdf19",6578:"2eecb0ee",6667:"5c837fea",6763:"8b496d69",6783:"debcc131",6837:"9ad0a782",6899:"81cce167",6913:"86265c6f",6969:"81aa9054",6998:"3953f120",7098:"93739b00",7138:"beaed4c6",7142:"7d261d15",7228:"d6e91775",7299:"e3eafe68",7391:"1114a6d2",7437:"ef6d0f4d",7472:"7c3c0523",7643:"801176cc",7701:"e9b9a8cd",7786:"1befe965",7793:"1c300094",8042:"d1ccae70",8198:"714907e3",8209:"c0013e13",8359:"8ca7e1c6",8379:"d97dc3fe",8401:"93d2a197",8499:"b427c181",8571:"e55e6205",8581:"7ed1d15d",8606:"100184fd",8723:"69d0936d",8747:"cfcdb05c",8805:"c7d7c44b",8913:"64e5ee35",9048:"be18be68",9137:"fe9a2f77",9454:"af1fcd0a",9459:"4d5ef8cd",9462:"d587a550",9647:"cca88e5b",9709:"75fbc9df",9814:"17bc57a8",9841:"a784ad5c"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},a="docs:",r.l=(e,f,c,b)=>{if(d[e])d[e].push(f);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var a=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),a&&a.forEach((e=>e(c))),f)return f(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/jersey-webservice-template/",r.gca=function(e){return e={17896441:"8401","8202ecb4":"5",afef3b27:"25",be06bf6d:"40","9c9866af":"61","58b2d929":"130","5532a01d":"202",d3a5e8e1:"207","3be6df1b":"338",ee23de4d:"373","65998a66":"423","23a15255":"451","9e15c67d":"513","2fb8fd14":"732",f2eaf5af:"935","8986ab40":"989",a07d0309:"1015","3c618eb2":"1083","31d1c956":"1119","7e881839":"1192","301ab1eb":"1278","7c26d4a0":"1350","95a7d8e6":"1376","569c7e78":"1599",ffa324e9:"1603","69ec54b8":"1765",f193a7dc:"1843",dc718134:"1944","1a4e3797":"2138","14801c25":"2363",e63c8e4f:"2375",cf780f3f:"2516",c32cfe41:"2530","0e8e9734":"2554","9e4087bc":"2711","8477c7d5":"2858",a8fe10c8:"2985","7f9b406a":"3138","33f5a029":"3206",ccc49370:"3249","55c88f21":"3253","95c88355":"3401","4693ed8c":"3509","3e93d4e0":"3568","348887ec":"3697",a8f74324:"3884",ab9f284a:"3936","0e384e19":"3976",bddc7183:"4077","393be207":"4134","8b81c793":"4214",a25f9825:"4267","03751d98":"4336",dd3399a6:"4362","8f030830":"4423","1df93b7f":"4583","5a0dfef8":"4724","7cffda2c":"4789","6875c492":"4813","1412db6a":"4816","2f4b3249":"4819",dcb320db:"5017",f4ccecdb:"5157",dfd458d2:"5232",cbb899e4:"5235","0f2d05bd":"5336","33df8b1e":"5403",c62a11e2:"5456","2e1e1f94":"5480",ce6992b1:"5514","9f4f599f":"5775","8d9c266b":"5811","4cb94163":"5827","4366c484":"5845","6b767667":"5854","92cd3f2f":"6028","1f391b9e":"6061",af66285c:"6076","3847b3ea":"6214",cb9e1f71:"6447","0fe8a094":"6486",b0c4e38f:"6578","0a2d206c":"6667","0d8d076a":"6763","61d14240":"6783",ab918728:"6837","9ce18c27":"6899","318cf6b3":"6913","14eb3368":"6969","53d9e20a":"6998",a7bd4aaa:"7098","2e2753e0":"7138",e020da85:"7142","95fef0bb":"7228",ccdd54c8:"7299","069c4011":"7391","704ec906":"7437","814f3328":"7472",a6aa9e1f:"7643",db261029:"7701",f3e840dc:"7786",dfd0adcf:"7793","20ee3b95":"8042","67e1a4a6":"8198","01a85c17":"8209","3adf0bec":"8359","41fee3ee":"8379","0ed972dc":"8499","88b9697e":"8571","935f2afb":"8581","209c82fc":"8606","4696b8cd":"8723",bbe2f409:"8805",a94703ab:"9048","0efae421":"9137","7dfce774":"9454",dfdcf51a:"9459","5e95c892":"9647",c58c19e8:"9709",b1a04edd:"9814","90acd7ea":"9841"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(f,c)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(f))e[f]=0;else{var a=new Promise(((c,a)=>d=e[f]=[c,a]));c.push(d[2]=a);var b=r.p+r.u(f),t=new Error;r.l(b,(c=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var a=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+f+" failed.\n("+a+": "+b+")",t.name="ChunkLoadError",t.type=a,t.request=b,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,c)=>{var d,a,b=c[0],t=c[1],o=c[2],n=0;if(b.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(c);n