{"id":24503,"date":"2024-02-15T14:53:34","date_gmt":"2024-02-15T22:53:34","guid":{"rendered":"https:\/\/docs.extraview.com\/v25\/book\/java-interface-1\/"},"modified":"2025-02-17T17:45:44","modified_gmt":"2025-02-18T01:45:44","slug":"java-interface-1","status":"publish","type":"page","link":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/","title":{"rendered":"Java Interface"},"content":{"rendered":"<p><span class=\"fixedWidthFont\">UserCustom<\/span> is a Java class consisting of callback methods that are invoked by ExtraView. This class is extended to modify the functionality of ExtraView.<\/p>\n<p>The class facilitates integration with 3rd party systems and\/or additional data validation and provides for business rule customization over and above those provided by the base product.<\/p>\n<p><span class=\"fixedWidthFont\">UserCustom<\/span> extensions allow the programmer to alter the base functionality of many parts of ExtraView. To create a user custom class, inherit from this class and override the methods of interest. ExtraView Corporation has extended the base ExtraView product with many useful functions as part of its best practices implementation. If you want to take advantage of these functions, then extend <span class=\"fixedWidthFont\">CustomCodeBase.java<\/span> rather than <span class=\"fixedWidthFont\">UserCustom.java<\/span>. <span class=\"fixedWidthFont\">CustomCodeBase.java<\/span> itself extends <span class=\"fixedWidthFont\">UserCustom.java<\/span>. Given you have extended the <span class=\"fixedWidthFont\">CustomCodeBase.java<\/span> class, and you want to override the code in a method within that class as well as executing the same method name in your own class, then use the Java special variable super. This can be placed at different points in your own method, allowing you to decide whether to execute your own code first or last in sequence.<\/p>\n<p>The convention for naming user custom classes is to use the company name and optionally append a version. For example, if your company is named MyCo, name your user custom class as \u2013<\/p>\n<div class=\"fixedWidthFont\">\n\tMyCo.java<\/div>\n<p>\n\tThe beginning of a sample skeleton user custom class becomes:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"code\">\r\npackage com.extraview.usercustom;\r\n\r\nimport java.io.*;\r\nimport java.sql.*;\r\nimport java.text.*;\r\nimport java.util.*;\r\nimport javax.servlet.http.*;\r\nimport java.text.SimpleDateFormat;\r\n\r\nimport com.extraview.applogic.admin.*;\r\nimport com.extraview.applogic.layout.*;\r\nimport com.extraview.applogic.problem.*;\r\nimport com.extraview.applogic.report.*;\r\nimport com.extraview.applogic.security.*;\r\nimport com.extraview.common.datatype.EnumeratedDataType;\r\nimport com.extraview.common.*;\r\nimport com.extraview.util.*;\r\nimport com.sesame.misc.*;\r\nimport com.sesame.template.*;\r\nimport com.extraview.dbms.Sequence;\r\nimport com.extraview.presentation.*;\r\nimport com.extraview.presentation.chart.*;\r\nimport com.extraview.presentation.problem.*;\r\nimport com.extraview.presentation.search.EVHTMLWorkerFont;\r\nimport com.extraview.presentation.usercustom.*;\r\n\r\npublic class MyCo extends CustomCodeBase{\r\n. . . .\r\n. . . .\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>\n\tPrinciples<\/h3>\n<p>The <span class=\"fixedWidthFont\">UserCustom.java<\/span> class is the customer\u2019s way of extending the functionality and validation features within ExtraView. Working with this class implies that you will have intimate knowledge of the underlying database environment, the Java programming language, and the environment that ExtraView offers to programmers. In addition, familiarity with the ExtraView schema is assumed. ExtraView has considerable experience using this interface to custom write code for methods such as:<\/p>\n<ul>\n<li>\n\t\tProviding additional business rules that are not part of the base product<\/li>\n<li>\n\t\tDirectly linking ExtraView through sophisticated data management techniques to other Oracle database systems, such as CRM and SCM systems<\/li>\n<li>\n\t\tLink to remote applications of any type, through URL methods<\/li>\n<li>\n\t\tAllowing remote applications to call ExtraView and perform data extractions or data updates<\/li>\n<li>\n\t\tAllowing ExtraView to call remote applications and perform updates or data extractions. The principal functions of the UserCustom module allow the administrator to modify the behavior of ExtraView at many points during the process, for example \u2013<\/p>\n<ul>\n<li>\n\t\t\t\tBefore you insert a new issue<\/li>\n<li>\n\t\t\t\tBefore you update an existing issue<\/li>\n<li>\n\t\t\t\tAfter you insert a new issue<\/li>\n<li>\n\t\t\t\tAfter you update an issue.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>All code changes made within the UserCustom source code are limited to a single customer of ExtraView. They will not be overwritten by successive upgrades of the ExtraView product. However, care should be taken when upgrading to test that your functionality still works as expected.<\/p>\n<p>The interface can be used to extend ExtraView in virtually any direction, and can call other external packages and systems. It is assumed that the programmer has a working knowledge of the following:<\/p>\n<ul>\n<li>\n\t\tExtraView administration<\/li>\n<li>\n\t\tKnowledge of Java programming<\/li>\n<li>\n\t\tKnowledge of SQL programming<\/li>\n<li>\n\t\tKnowledge of HTML programming is useful, but not required<\/li>\n<li>\n\t\tKnowledge of web servers such as Apache is useful, but not required<\/li>\n<li>\n\t\tKnowledge of application servers such as Apache Tomcat is useful, but not required.<\/li>\n<\/ul>\n<p>The user exits are method calls to a Java class named <span class=\"fixedWidthFont\">UserCustom.java<\/span>. The method calls are made synchronously with the execution of a service in the servlet environment which runs under the application server. All code executed in the UserCustom methods is completed before responses are sent to the client browser; this should be taken into account when considering the use of long-running methods. Performance of the user interface is very important to the user\u2019s perception of speed of the entire application.<\/p>\n<p>Certain objects are passed to the UserCustom methods as defined by the UserCustom Interface object. These objects model the customer business objects within ExtraView and maintain the current object context, some of which may be modified by the customer programming the UserCustom methods. All object attribute modification must be done through setter methods; all inspection of object attributes must be done through getter methods. It is possible for the programmer to modify objects in ways that cause erroneous behavior with respect to the customer\u2019s business model; therefore, care must be taken to test and verify any programs that will be installed in a production system. Customers can consult with ExtraView about any aspect of proper or improper use.<\/p>\n<p>All code added to the UserCustom class must be thread-safe, since multiple threads will execute simultaneously on that code. This implies that all libraries called by UserCustom methods must also be thread-safe. All ExtraView methods are thread-safe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UserCustom is a Java class consisting of callback methods that are invoked by ExtraView. This class is extended to modify the functionality of ExtraView. The class facilitates integration with 3rd party systems and\/or additional data validation and provides for business rule customization over and above those provided by the base product. UserCustom extensions allow the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":24479,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_lmt_disableupdate":"no","_lmt_disable":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-24503","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Interface - Product Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Interface - Product Documentation\" \/>\n<meta property=\"og:description\" content=\"UserCustom is a Java class consisting of callback methods that are invoked by ExtraView. This class is extended to modify the functionality of ExtraView. The class facilitates integration with 3rd party systems and\/or additional data validation and provides for business rule customization over and above those provided by the base product. UserCustom extensions allow the...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Product Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-18T01:45:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/\",\"url\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/\",\"name\":\"Java Interface - Product Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\"},\"datePublished\":\"2024-02-15T22:53:34+00:00\",\"dateModified\":\"2025-02-18T01:45:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ExtraView 25\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"User Custom Guide\",\"item\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Java Interface\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"name\":\"ExtraView Product Documentation\",\"description\":\"ExtraView Documentation\",\"publisher\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\",\"name\":\"ExtraView Corporation\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"contentUrl\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"width\":512,\"height\":512,\"caption\":\"ExtraView Corporation\"},\"image\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java Interface - Product Documentation","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:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/","og_locale":"en_US","og_type":"article","og_title":"Java Interface - Product Documentation","og_description":"UserCustom is a Java class consisting of callback methods that are invoked by ExtraView. This class is extended to modify the functionality of ExtraView. The class facilitates integration with 3rd party systems and\/or additional data validation and provides for business rule customization over and above those provided by the base product. UserCustom extensions allow the...","og_url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/","og_site_name":"Product Documentation","article_modified_time":"2025-02-18T01:45:44+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/","url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/","name":"Java Interface - Product Documentation","isPartOf":{"@id":"https:\/\/docs.extraview.com\/v25\/#website"},"datePublished":"2024-02-15T22:53:34+00:00","dateModified":"2025-02-18T01:45:44+00:00","breadcrumb":{"@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/java-interface-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":2,"name":"ExtraView 25","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":3,"name":"User Custom Guide","item":"https:\/\/docs.extraview.com\/v25\/extraview-25\/user-custom-guide-1\/"},{"@type":"ListItem","position":4,"name":"Java Interface"}]},{"@type":"WebSite","@id":"https:\/\/docs.extraview.com\/v25\/#website","url":"https:\/\/docs.extraview.com\/v25\/","name":"ExtraView Product Documentation","description":"ExtraView Documentation","publisher":{"@id":"https:\/\/docs.extraview.com\/v25\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/docs.extraview.com\/v25\/#organization","name":"ExtraView Corporation","url":"https:\/\/docs.extraview.com\/v25\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/","url":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","contentUrl":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","width":512,"height":512,"caption":"ExtraView Corporation"},"image":{"@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/"}}]}},"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"carl.koppel","author_link":"https:\/\/docs.extraview.com\/v25\/author\/carl-koppel\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/comments?post=24503"}],"version-history":[{"count":0,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24503\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24479"}],"wp:attachment":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/media?parent=24503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}