{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Overview Of API Changes In INTViewer 4 5 2","description":"Accelerate E&P application development and protect your innovation by consuming our Data and Domain APIs / Platform APIs.","lang":"en-US","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":false}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"overview-of-api-changes-in-intviewer-4-5-2","__idx":0},"children":["Overview Of API Changes In INTViewer 4 5 2"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview-of-api-changes-in-intviewer-452","__idx":1},"children":["Overview of API changes in INTViewer 4.5.2"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"new-java-api","__idx":2},"children":["New Java API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["INTViewer 4.5.2 brings a new set of functionalities that have been made available through the API:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API to synchronize trace processors: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/intviewer/api-reference"},"children":["ISeismicLayer.SEISMIC_PROCESSORS_SYNC"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API to enable and synchronize trace spacing: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/intviewer/api-reference"},"children":["ISeismicLayer.TRACE_SPACING_TYPE"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API to create and view fault datasets"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The horizon (and fault) picking managers are pluggable"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Generic Data Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The com.interactive.intviewerapi.data.IDataFactory.createNewInstance method has been typed:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public IData createNewInstance(String dataPath, Class<T extends IData> dataKlass) throws Exception;\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["became"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public <T extends IData> T createNewInstance(String dataPath, Class<T> dataKlass) throws Exception;\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, lines like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ISeismicData seismicData = (ISeismicData) IData.factory.createNewInstance(path, ISeismicData.class);\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["can be written simply:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ISeismicData  seismicData = IData.factory.createNewInstance(path, ISeismicData.class);\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Generic Window Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The com.interactive.intviewerapi.windows.ILayeredWindowFactory class has been typed:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface ILayeredWindowFactory {\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["became"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface ILayeredWindowFactory<T extends ILayeredWindow> {\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, lines like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapWindow mapWindow = (IMapWindow) IMapWindow.factory.createWindow();\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["can be written simply:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapWindow mapWindow = IMapWindow.factory.createWindow();\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Generic Layer Types"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The com.interactive.intviewerapi.layers.ILayerFactory class has been typed:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface ILayerFactory {\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["became"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface ILayerFactory<T extends ILayer2D, U extends IData, V extends ILayeredWindow> {\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, lines like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapHorizonLayer mapLayer = (IMapHorizonLayer) IMapHorizonLayer.factory.createLayer(mapWindow, data, props, false);\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["can be written simply:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapHorizonLayer mapLayer = IMapHorizonLayer.factory.createLayer(mapWindow, data, props, false);\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The same change has been implemented for com.interactive.intviewerapi.objects3d.IObject3DFactory."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The com.interactive.intviewerapi.IVisual class has been typed as well:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface IVisual\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["became"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"public interface IVisual<U extends IData, V extends IViewerWindow>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, lines like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapHorizonLayer mapLayer = ...\nIMapWindow window = (IMapWindow) mapLayer.getViewerWindow();\nIHorizonData data = (IHorizonData) mapLayer.getData();\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["can be written simply:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IMapHorizonLayer mapLayer = ...\nIMapWindow window = mapLayer.getViewerWindow();\nIHorizonData data = mapLayer.getData();\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These changes are backward compatible, no change to your existing code should be needed. However, they might require your plugins to be recompiled against INTViewer 4.5.2."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"important","__idx":3},"children":["Important:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In INTViewer 5.1, the types U and V of ILayerFactory and IObject3DFactory will match the type of data and window each layer type is supposed to use. As this is a backward incompatible change, it is scheduled for INTViewer 5.1 so developers have time to prepare."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The factory for ISeismicLayer is currently defined as:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ILayerFactory<ISeismicLayer, IData, ILayeredWindow> factory = ...\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["will be defined in future releases as:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ILayerFactory<ISeismicLayer, ISeismicData, IXSectionWindow> factory = ...\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, the following lines that compile today will no longer compile in future releases:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ILayeredWindow window = ...\nIData data = ....\nISeismicLayer layer = ISeismicLayer.factory.createLayer(window , data, new NamedProps(), false)\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["and should be changed to:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"IXSectionWindow window = ...\nISeismicData data = ....\nISeismicLayer layer = ISeismicLayer.factory.createLayer(window , data, new NamedProps(), false)\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Also, the methods IVisual.setData and AbstractLayer2D.onSetData currently defined as:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"    public void setData(IData data) throws Exception;\n    protected void onSetData(IData data) throws Exception;\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["will be defined in future releases as:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"    public void setData(U data) throws Exception;\n    protected void onSetData(U data) throws Exception;\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["U being the type of IData returned by the IVisual.getData() method."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As a result, the following lines that compile today will no longer compile in INTViewer 5.1:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"ISeismicLayer layer = ...\nIData data = ...\nlayer.setData(data)\nand should be changed to:\nISeismicLayer layer = ...\nISeismicData data = ...\nlayer.setData(data)\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"incompatibilities-with-451","__idx":4},"children":["Incompatibilities with 4.5.1"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A set of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/intviewer/intviewer-platform-and-modules/incompatible-api-changes-in-intviewer-4-5-2"},"children":["API incompatibilities"]}," have been introduced as part of this release."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See also: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-4-5-1"},"children":["Overview of API changes in INTViewer 4.5.1"]}]}]},"headings":[{"value":"Overview Of API Changes In INTViewer 4 5 2","id":"overview-of-api-changes-in-intviewer-4-5-2","depth":1},{"value":"Overview of API changes in INTViewer 4.5.2","id":"overview-of-api-changes-in-intviewer-452","depth":2},{"value":"New Java API","id":"new-java-api","depth":3},{"value":"Important:","id":"important","depth":3},{"value":"Incompatibilities with 4.5.1","id":"incompatibilities-with-451","depth":3}],"frontmatter":{"title":"Overview Of API Changes In INTViewer 4 5 2","pageId":"intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-4-5-2","seo":{"title":"Overview Of API Changes In INTViewer 4 5 2"}},"lastModified":"2026-10-22T14:32:05.577Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solutions/intviewer/intviewer-platform-and-modules/overview-of-api-changes-in-intviewer-4-5-2","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}