{"id":1075,"date":"2012-04-23T21:00:00","date_gmt":"2012-04-23T21:00:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/soa-example-application.html"},"modified":"2012-10-21T23:27:22","modified_gmt":"2012-10-21T23:27:22","slug":"soa-example-application","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html","title":{"rendered":"SOA example application"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\"><i>SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns between description, implementation, and binding, provide a new level of flexibility.  <\/i>  <\/p>\n<p>Service Oriented Architecture terminology has spread in recent years, at least among people who were involved in most of the Information Technology activities. The guidelines suggested by this methodology are granted as major factors to succeed in different distributable systems domains.<br \/>\nJust as the definition is clear and easy to understand, so is its implementation into a real project, being intuitive, concise and elegant.   <\/p>\n<p>I have <a href=\"https:\/\/github.com\/gfrison\/rewards\" target=\"_blank\" title=\"rewards on Github\">released<\/a> an application demonstrating how SOA?s principles can be applied into a small project making use of EIP (Enterprise Integration Pattern), IoC (Inversion of Control), and a building tool and scripting language such as Groovy.<br \/>\nI analized a <a href=\"https:\/\/github.com\/gfrison\/rewards\/wiki\" target=\"_blank\" title=\"Scenario\">simple business case<\/a>: an entertainment provider who wanted to dispatch rewards and bonuses to some of its customers, depending on customer service?s subscriptions.<br \/>\nThe process sequence is simple:   <\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"https:\/\/github.com\/gfrison\/rewards\"><img decoding=\"async\" alt=\"\" height=\"151\" src=\"http:\/\/i.imgur.com\/dIuHJ.png\" width=\"509\" \/><\/a><\/div>\n<p>&nbsp; <i>It is required to provide an implementation of a RewardsService. The service accepts as input a customer account number and a portfolio containing channels subscriptions.The Customer Status team is currently developing the EligibilityService which accepts the account number as an input.   <\/i>  <div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>I set up an infrastructure to write acceptance tests for this first meaningful feature. This is what could be defined as a ?walking skeleton,? a prototype with the essential aspect that it could be built, deployed and tested after being easily downloaded from <a href=\"https:\/\/github.com\/gfrison\/rewards\" target=\"_blank\" title=\"rewards on Github\">Github<\/a>.   <\/p>\n<div class=\"separator\" style=\"clear: both;text-align: center\"><a href=\"https:\/\/github.com\/gfrison\/rewards\"><img decoding=\"async\" alt=\"\" src=\"http:\/\/giancarlof.files.wordpress.com\/2012\/01\/soa.png?w=560\" \/><\/a><\/div>\n<p> <a href=\"https:\/\/github.com\/gfrison\/rewards\/blob\/master\/src\/main\/groovy\/com\/gfrison\/services\/RewardService.groovy\" target=\"_blank\">RewardService<\/a> is invoked by the client and it calls, in turn, the eligibility service whichhowever, in this case is not implemented. As many real scenarios expect external services, this proof-of-concept refers the eligibility service to a black-box, where only request\/response interface is known.   <\/p>\n<p>The <a href=\"https:\/\/github.com\/gfrison\/rewards\/blob\/master\/src\/test\/groovy\/com\/gfrison\/RewardServiceTest.groovy\" target=\"_blank\">unit test<\/a>simulates the eligibility servicebehaviorsmocking the end-point through the Camel Testing Framework. However, if you want to run the application on your local machine<a href=\"https:\/\/github.com\/gfrison\/rewards\/blob\/master\/src\/main\/resources\/conf\/beans.groovy\" target=\"_blank\" title=\"Configuration DSL\">I set up<\/a>, within a line of code, a faux eligibility service that merelyreturns a positive response:    <\/p>\n<pre class=\"brush:java\">def alwaysEligible = {exchange -&gt; if(exchange){exchange.getOut().setBody('CUSTOMER_ELIGIBLE')}} as Processor<\/pre>\n<p>The entry point is an HTTP Restful interface built upon the Apache CXF, and is easily set up within few lines in the<a href=\"https:\/\/github.com\/gfrison\/rewards\/blob\/master\/src\/main\/resources\/conf\/beans.groovy\" target=\"_blank\" title=\"Configuration DSL\">configuration<\/a>. CXF is initialized by Spring in this following way:  <\/p>\n<pre class=\"brush:java\">jaxrs.'server'(id:'restService',address:'http:\/\/${http.host}:${http.port}') {jaxrs.'serviceBeans'{ ref(bean:'rewardService')} }<\/pre>\n<p>Services are connected by Apache Camel. RewardService contains only the reference of the ESB context \u2013 an instance of <a href=\"http:\/\/camel.apache.org\/producertemplate.html\" target=\"_blank\">ProducerTemplate<\/a>. Such solution allows a complete separation between the linking system and the business services.The Camel context represents the SOA\u2019s wiring, and is configured through a DSL as in the example below:    <\/p>\n<pre class=\"brush:java\">from('direct:rewards').to(eligibilityServiceEndpoint)<\/pre>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/gfrison.com\/2012\/01\/25\/soa-example-application\/\">SOA example application<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> Giancarlo Frison at the <a href=\"http:\/\/gfrison.com\/\">Making Things Simple Through The Complex<\/a> blog. <\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns between description, implementation, and binding, provide a new level of flexibility. Service Oriented Architecture terminology has spread in recent years, at least among people who were involved in most of the Information Technology activities. The &hellip;<\/p>\n","protected":false},"author":215,"featured_media":52,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[357,433],"class_list":["post-1075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-camel","tag-soa"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SOA example application - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOA example application - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2012-04-23T21:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T23:27:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Giancarlo Frison\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/gfrison\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Giancarlo Frison\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html\"},\"author\":{\"name\":\"Giancarlo Frison\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/bcb40d71c9bc88c49f406c2d7786c443\"},\"headline\":\"SOA example application\",\"datePublished\":\"2012-04-23T21:00:00+00:00\",\"dateModified\":\"2012-10-21T23:27:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html\"},\"wordCount\":443,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"keywords\":[\"Apache Camel\",\"SOA\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html\",\"name\":\"SOA example application - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"datePublished\":\"2012-04-23T21:00:00+00:00\",\"dateModified\":\"2012-10-21T23:27:22+00:00\",\"description\":\"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-camel-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2012\\\/04\\\/soa-example-application.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"SOA example application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/bcb40d71c9bc88c49f406c2d7786c443\",\"name\":\"Giancarlo Frison\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g\",\"caption\":\"Giancarlo Frison\"},\"description\":\"He learned gwbasic at 11 and clearing browsing data at 20. He believes that Schr\u00f6dinger cat is half-dead. He hates corn and PPT.\",\"sameAs\":[\"http:\\\/\\\/gfrison.com\\\/\",\"http:\\\/\\\/it.linkedin.com\\\/in\\\/gfrison\",\"https:\\\/\\\/x.com\\\/http:\\\/\\\/twitter.com\\\/gfrison\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Giancarlo-Frison\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SOA example application - Java Code Geeks","description":"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html","og_locale":"en_US","og_type":"article","og_title":"SOA example application - Java Code Geeks","og_description":"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns","og_url":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2012-04-23T21:00:00+00:00","article_modified_time":"2012-10-21T23:27:22+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","type":"image\/jpeg"}],"author":"Giancarlo Frison","twitter_card":"summary_large_image","twitter_creator":"@http:\/\/twitter.com\/gfrison","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Giancarlo Frison","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html"},"author":{"name":"Giancarlo Frison","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/bcb40d71c9bc88c49f406c2d7786c443"},"headline":"SOA example application","datePublished":"2012-04-23T21:00:00+00:00","dateModified":"2012-10-21T23:27:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html"},"wordCount":443,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","keywords":["Apache Camel","SOA"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html","url":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html","name":"SOA example application - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","datePublished":"2012-04-23T21:00:00+00:00","dateModified":"2012-10-21T23:27:22+00:00","description":"SOA describes a set of patterns for creating loosely coupled, standards-based business-aligned services that, because of the separation of concerns","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-camel-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2012\/04\/soa-example-application.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"SOA example application"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/bcb40d71c9bc88c49f406c2d7786c443","name":"Giancarlo Frison","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8b18149cfe2f25181da9fe70b9e1f839645851f85307ab3dfe21b5a03944811a?s=96&d=mm&r=g","caption":"Giancarlo Frison"},"description":"He learned gwbasic at 11 and clearing browsing data at 20. He believes that Schr\u00f6dinger cat is half-dead. He hates corn and PPT.","sameAs":["http:\/\/gfrison.com\/","http:\/\/it.linkedin.com\/in\/gfrison","https:\/\/x.com\/http:\/\/twitter.com\/gfrison"],"url":"https:\/\/www.javacodegeeks.com\/author\/Giancarlo-Frison"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/1075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/215"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=1075"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/1075\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/52"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=1075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=1075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=1075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}