[jbosstools-issues] [JBoss JIRA] (JBIDE-22426) Connection: authorization strategy is always overwritten (in the client) upon #isConnected

Andre Dietisheim (JIRA) issues at jboss.org
Wed May 25 17:19:00 EDT 2016


    [ https://issues.jboss.org/browse/JBIDE-22426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13242865#comment-13242865 ] 

Andre Dietisheim edited comment on JBIDE-22426 at 5/25/16 5:18 PM:
-------------------------------------------------------------------

these are internal changes and added tests and changes in the client library (OSJC-256). Nothing for QE to verify, closing


was (Author: adietish):
these are internal changes and added tests. Nothing for QE to verify, closing

> Connection: authorization strategy is always overwritten (in the client) upon #isConnected 
> -------------------------------------------------------------------------------------------
>
>                 Key: JBIDE-22426
>                 URL: https://issues.jboss.org/browse/JBIDE-22426
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: openshift
>    Affects Versions: 4.4.0.Alpha3
>            Reporter: Andre Dietisheim
>            Assignee: Andre Dietisheim
>              Labels: connection, openshift_v3
>             Fix For: 4.4.0.Alpha3
>
>
> The current implementation of Connection#isConnected() will always overwrite the authorization strategy in the client that it is using. This seems wrong given that #getResources, #createResource, #updateResource (and other methods) also set it but check if it already exists beforehand. Making sure that they dont overwrite an existing strategy.
> {code:title=Connection#isConnected}
> 	public boolean isConnected(IProgressMonitor monitor) {
> 		client.setAuthorizationStrategy(getAuthorizationStrategy());
> 		try {
> {code}
> {code:title=Connection#createResource}
> 	public <T extends IResource> T createResource(T resource) {
> 		try {
> 			if(client.getAuthorizationStrategy() == null) {
> 				client.setAuthorizationStrategy(getAuthorizationStrategy());
> 			}
> 			return client.create(resource);
> {code}
> A very likely side-effect of this is in Connection#ownsResource which compares clients (the one in the connection and the one attached to the given resource. The 2 clients are compared with the authorization strategy:
> {code:title=com.openshift.internal.restclient.DefaultClient#equals}
> 	@Override
> 	public boolean equals(Object obj) {
> 		...
> 		return ObjectUtils.equals(strategy, other.strategy);
> {code}
> the lookup for a connection for a given resource in ConnectionRegistryUtils#safeGetConnectionFor will therefore fail after a Connection#isConnected:
> {code:title=ConnectionsRegistryUtil#safeGetConnectionFor(IResource)} 
> 	public static Connection safeGetConnectionFor(IResource resource) {
> 		Collection<Connection> all = ConnectionsRegistrySingleton.getInstance().getAll(Connection.class);
> 		for (Connection connection : all) {
> 			if(connection.ownsResource(resource)) {
> 				return connection;
> 			}
> 		}
> 		return null;
> 	}
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jbosstools-issues mailing list