[
https://issues.jboss.org/browse/TEIIDDES-1518?page=com.atlassian.jira.plu...
]
Paul Richardson updated TEIIDDES-1518:
--------------------------------------
Summary: Decouple the teiid 8 client libraries and construct an SPI interface to
allow multiple teiid server version support (was: Declare the TeiidServer ExecutionAdmin
field private and remote its getter method)
Description:
Both the TeiidServer, transformation and query plugin code is dependent on a single
version of the teiid server-client libraries. This means that Designer is only able to
connect to a single version of Teiid Server. This is even more problematic as Teiid 7
server JBoss 5 and Teiid 8 servers JBoss 7 hence users would have to upgrade both JBoss
and Teiid if upgrading Designer.
To mitigate this, construct and spi plugin that provides interfaces for TeiidServer
ExecutionAdmin class, as well as the transformation language classes and query visitors.
The client Teiid plugins, will implement these interfaces which will be reachable via an
extension point, dependent on the version of the request default teiid server.
Although, the teiid client plugins will have a number of implemented classes, there
availability to other plugins should be strictly limited, ie. no other plugin should
depend on them. Classes should only be accessible via the services, factories and adapters
available via the extension point.
was:
The TeiidServer.getAdmin() method serves to allow code access to the business part of the
server, ie. deploying, creating data sources. However, the method itself has the 'if
(admin == null) create' pattern, which can cause a connection to occur even if other
code explicitly disconnected or never wanted a connection.
This issue has been exacerbated by the parent IServer needing to be connected to as well
in the UI to indicate that the server is available. Using getAdmin() in background
services like the PreviewManager has given rise to the server being connected but the UI
saying it is not connected. This is just wrong.
The getAdmin() method also has the potential to return null and is thus a source of
NullPointer exceptions throughout the code.
Better to hide the admin connection and instead invite other code to ask the TeiidServer a
question and use a callback to exec whatever custom applicable code. That way,
* admin can remain hidden
* the TeiidServer is always available so no NPEs
* if disconnected then the callback will be notified and react accordingly.
This will further server to limit dependencies on teiid client jars and move towards a
service architecture where multiple versions of teiid can be installed.
Decouple the teiid 8 client libraries and construct an SPI interface
to allow multiple teiid server version support
-------------------------------------------------------------------------------------------------------------------
Key: TEIIDDES-1518
URL:
https://issues.jboss.org/browse/TEIIDDES-1518
Project: Teiid Designer
Issue Type: Bug
Components: Teiid Integration
Affects Versions: 8.0
Reporter: Paul Richardson
Assignee: Paul Richardson
Fix For: 8.1
Both the TeiidServer, transformation and query plugin code is dependent on a single
version of the teiid server-client libraries. This means that Designer is only able to
connect to a single version of Teiid Server. This is even more problematic as Teiid 7
server JBoss 5 and Teiid 8 servers JBoss 7 hence users would have to upgrade both JBoss
and Teiid if upgrading Designer.
To mitigate this, construct and spi plugin that provides interfaces for TeiidServer
ExecutionAdmin class, as well as the transformation language classes and query visitors.
The client Teiid plugins, will implement these interfaces which will be reachable via an
extension point, dependent on the version of the request default teiid server.
Although, the teiid client plugins will have a number of implemented classes, there
availability to other plugins should be strictly limited, ie. no other plugin should
depend on them. Classes should only be accessible via the services, factories and adapters
available via the extension point.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira