Revision 47841

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.impl/src/main/java/org/gvsig/downloader/lib/impl/DownloaderManagerImpl.java
39 39
import org.gvsig.downloader.DownloaderCredentials;
40 40
import org.gvsig.downloader.DownloaderManager;
41 41
import static org.gvsig.downloader.DownloaderManager.urlStartsWith;
42
import org.gvsig.json.Json;
42 43
import org.slf4j.Logger;
43 44
import org.slf4j.LoggerFactory;
44 45

  
......
146 147
            }
147 148
        }
148 149
        DownloaderAuthenticationConfig config = this.getAuthenticationConfigurationService(url);
150
        if(config == null){
151
            return null;
152
        }
149 153
        for (DownloaderCredentials theCredentials : this.credentials) {
150 154
            DownloaderCredentials x = config.getCredentials(theCredentials);
151 155
            if(x != null) {
......
202 206
        }
203 207
        return null;
204 208
    }
205

  
209
        
206 210
    @Override
207 211
    public Collection<DownloaderAuthenticationFactory> getAuthenticationTypes() {
208 212
        return this.authenticationTypes.values();
......
224 228

  
225 229
    @Override
226 230
    public DownloaderAuthenticationFactory getDownloaderAuthenticationFactory(String providerName) {
227
        return this.authenticationTypes.get(providerName);
231
        return this.authenticationTypes.get(providerName.toLowerCase());
228 232
    }
233
    
234
    public void registerAuthenticationConfigurationService(String config) {
235
        if(StringUtils.isNotBlank(config)) {
236
            DownloaderAuthenticationConfig downloaderConfig = (DownloaderAuthenticationConfig) Json.toObject(config);
237
            if(downloaderConfig != null){
238
                this.registerAuthenticationConfigurationService(downloaderConfig);
239
            }
240
        }
241
    }
229 242

  
243
    public String getAuthenticationConfigurationServiceAsString(String baseUrl) {
244
        DownloaderAuthenticationConfig downloaderConfig = this.getAuthenticationConfigurationService(baseUrl);
245
        if(downloaderConfig != null){
246
            return downloaderConfig.toJson().toString();
247
        }
248
        return null;
249
    }
230 250
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.impl/src/main/java/org/gvsig/downloader/lib/impl/types/httpbasic/DownloaderHTTPBasicAuthenticationConfig.java
9 9
import org.gvsig.downloader.DownloaderAuthenticationRequester;
10 10
import org.gvsig.downloader.DownloaderCredentials;
11 11
import org.gvsig.downloader.DownloaderManager;
12
import static org.gvsig.downloader.lib.impl.types.httpbasic.DownloaderHTTPBasicAuthenticationFactory.HTTPBASIC_AUTHENTICATION_NAME;
12 13
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationConfig;
14
import org.gvsig.json.JsonObjectBuilder;
13 15

  
14 16

  
15 17
/**
......
21 23
        implements DownloaderAuthenticationConfig 
22 24
    {
23 25
    
26
    /**
27
     * Constructor necesario para la persistencia
28
     */
29
    public DownloaderHTTPBasicAuthenticationConfig() {
30
        this(null, null);
31
    }
32

  
24 33
    public DownloaderHTTPBasicAuthenticationConfig(DownloaderHTTPBasicAuthenticationFactory factory, String baseUrl) {
25
        super(factory, baseUrl);
34
        super(HTTPBASIC_AUTHENTICATION_NAME, factory, baseUrl);
26 35
    }
27 36
    
28 37
    @Override
......
51 60
        return null;
52 61
    }
53 62

  
63
    @Override
64
    public JsonObjectBuilder toJsonBuilder() {
65
        JsonObjectBuilder builder = super.toJsonBuilder();
66
        builder.add_class(this);
67
        return builder;
68
    }
69

  
70

  
54 71
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.impl/src/main/java/org/gvsig/downloader/lib/impl/types/httpbasic/DownloaderHTTPBasicAuthenticationFactory.java
4 4
import org.gvsig.downloader.DownloaderAuthenticationFactory;
5 5
import org.gvsig.downloader.DownloaderManager;
6 6
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationFactory;
7
import org.gvsig.json.Json;
7 8
import static org.gvsig.tools.util.CachedValue.LOGGER;
8 9

  
9 10

  
......
38 39
        try {
39 40
            DownloaderManager downloader = (DownloaderManager) CompatLocator.getDownloader();
40 41
            downloader.registerAuthenticationType(new DownloaderHTTPBasicAuthenticationFactory());
42
            Json.registerSerializer(DownloaderHTTPBasicAuthenticationConfig.class);
41 43
        } catch(Throwable t) {
42 44
            LOGGER.warn("Can't register http-basic downloader authentication factory ",t);
43 45
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.api/src/main/java/org/gvsig/downloader/DownloaderAuthenticationConfig.java
1 1
package org.gvsig.downloader;
2 2

  
3 3
import org.gvsig.json.SupportJson;
4
import org.gvsig.tools.persistence.Persistent;
4 5

  
5 6
/**
6 7
 *
......
9 10
public interface DownloaderAuthenticationConfig 
10 11
        extends 
11 12
            org.gvsig.tools.lang.Cloneable,
12
            SupportJson
13
            SupportJson, 
14
            Persistent
13 15
    {
14 16

  
15 17
    public static final String CONFIG_PROVIDERNAME_NAME = "factory";
16 18
    public static final String CONFIG_SERVICEURL_NAME = "serviceUrl";
19
    public static final String PERSISTENT_DEFINITION_NAME = "DownloaderAuthenticationConfig";
17 20
    
18 21
    public String getProviderName();
19 22

  
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.api/src/main/java/org/gvsig/downloader/DownloaderManager.java
113 113
    public void registerAuthenticationConfigurationService(DownloaderAuthenticationConfig config);
114 114
    
115 115
    public void registerAuthenticationType(DownloaderAuthenticationFactory factory);
116

  
117
    public void registerAuthenticationConfigurationService(String config);
118

  
119
    public String getAuthenticationConfigurationServiceAsString(String url);
116 120
    
117 121
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.api/src/main/java/org/gvsig/downloader/spi/AbstractDownloaderAuthenticationConfig.java
14 14
import org.gvsig.downloader.DownloaderManager;
15 15
import org.gvsig.json.Json;
16 16
import org.gvsig.json.JsonObjectBuilder;
17
import org.gvsig.tools.ToolsLocator;
18
import org.gvsig.tools.dynobject.DynStruct;
19
import org.gvsig.tools.persistence.PersistenceManager;
20
import org.gvsig.tools.persistence.PersistentState;
21
import org.gvsig.tools.persistence.exception.PersistenceException;
17 22

  
18 23
/**
19 24
 *
......
23 28
        implements DownloaderAuthenticationConfig
24 29
    {
25 30

  
26
    protected String providerName;
27
    protected DownloaderAuthenticationFactory factory;
31
    protected final String providerName;
32
    private DownloaderAuthenticationFactory factory;
28 33
    protected String serviceUrl;
29 34

  
30
    protected AbstractDownloaderAuthenticationConfig(DownloaderAuthenticationFactory factory, String serviceUrl) {
35
    protected AbstractDownloaderAuthenticationConfig(String providerName, DownloaderAuthenticationFactory factory, String serviceUrl) {
36
        this(providerName);
31 37
        this.factory = factory;
32 38
        this.serviceUrl = this.getUrlWithoutQuery(serviceUrl);
33
        this.providerName = factory.getProviderName();
34 39
    }
35 40

  
41
    protected AbstractDownloaderAuthenticationConfig(String providerName) {
42
        this.providerName = providerName;
43
        if(StringUtils.isBlank(this.providerName)){
44
            throw new IllegalArgumentException("providerName can't be blank");
45
        }
46
        this.factory = null;
47
        this.serviceUrl = null;
48
    }
49

  
36 50
//    public AbstractDownloaderAuthenticationConfig(String providerName, String baseUrl) {
37 51
//        this(
38 52
//                DownloaderLocator.getDownloaderManager().getAuthenticationType(providerName),
......
47 61

  
48 62
    @Override
49 63
    public DownloaderAuthenticationFactory getFactory() {
64
        if( this.factory == null ) {
65
            DownloaderManager manager = DownloaderLocator.getDownloaderManager();
66
            this.factory = manager.getDownloaderAuthenticationFactory(this.providerName);
67
        } 
68
        
50 69
        return this.factory;
51 70
    }
52 71

  
......
77 96

  
78 97
    @Override
79 98
    public void fromJson(JsonObject json) {
80
        DownloaderManager manager = DownloaderLocator.getDownloaderManager();
81
        
82
//        if( json.containsKey("type") ) {
83
//            String url = json.getString(CONFIG_URLONLINE_NAME,null);
84
//            if( url!=null ) {
85
//                this.urlOnline = url;
86
//            }
87
//        } else {
88
            this.serviceUrl = json.getString(CONFIG_SERVICEURL_NAME,null);
89
//        }
99
        this.serviceUrl = json.getString(CONFIG_SERVICEURL_NAME,null);
90 100
        String providerName = json.getString(CONFIG_PROVIDERNAME_NAME, null);
91 101
        if( providerName != null ) {
92 102
            if( !StringUtils.equalsIgnoreCase(this.providerName, providerName) ) {
93 103
                throw new IllegalArgumentException("this json can't be restored in a config of '"+this.providerName+"' (need a '"+providerName+"')");
94 104
            }
95 105
        }
96
        if( this.factory == null ) {
97
            this.factory = manager.getDownloaderAuthenticationFactory(this.providerName);
98
        } 
99 106
    }
100 107

  
101 108
    @Override
102 109
    public JsonObjectBuilder toJsonBuilder() {
103 110
        JsonObjectBuilder builder = Json.createObjectBuilder();
104 111
        builder.add(CONFIG_PROVIDERNAME_NAME, this.getFactory().getProviderName());
105
//        builder.add("urlOnline",this.getUrlOnline());
112
        builder.add("serviceUrl",this.serviceUrl);
106 113
        
107 114
        return builder;        
108 115
    }
......
124 131
        }
125 132
    }
126 133
    
134
    public static void selfRegister() {
135
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
136
        if (manager.getDefinition(PERSISTENT_DEFINITION_NAME) == null) {
137
            DynStruct definition = manager.addDefinition(DownloaderAuthenticationConfig.class,
138
                    PERSISTENT_DEFINITION_NAME, 
139
                    "DownloaderAuthenticationConfig persistence definition", null, null
140
            );            
141
            definition.addDynFieldString(CONFIG_PROVIDERNAME_NAME);
142
            definition.addDynFieldString(CONFIG_SERVICEURL_NAME);
143
        }
144
    }
145

  
146
    @Override
147
    public void saveToState(PersistentState state) throws PersistenceException {
148
        state.set(CONFIG_PROVIDERNAME_NAME,this.providerName);
149
        state.set(CONFIG_SERVICEURL_NAME,this.serviceUrl);
150
    }
151

  
152
    @Override
153
    public void loadFromState(PersistentState state) throws PersistenceException {
154
        String providerName = state.getString(CONFIG_PROVIDERNAME_NAME);
155
        if( providerName != null ) {
156
            if( !StringUtils.equalsIgnoreCase(this.providerName, providerName) ) {
157
                throw new IllegalArgumentException("this state can't be restored in a config of '"+this.providerName+"' (need a '"+providerName+"')");
158
            }
159
        }
160
        
161
        this.serviceUrl = state.getString(CONFIG_SERVICEURL_NAME);
162
    }
127 163
    
164
    
165
    
128 166
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.lib/org.gvsig.downloader.lib.api/src/main/java/org/gvsig/downloader/DownloaderLibrary.java
25 25
package org.gvsig.downloader;
26 26

  
27 27
import org.gvsig.compat.CompatLibrary;
28
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationConfig;
28 29
import org.gvsig.tools.library.AbstractLibrary;
29 30
import org.gvsig.tools.library.LibraryException;
30 31
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
......
44 45

  
45 46
    @Override
46 47
    protected void doInitialize() throws LibraryException {
47
        // Do nothing
48
        AbstractDownloaderAuthenticationConfig.selfRegister();
48 49
    }
49 50

  
50 51
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.impl/src/main/java/org/gvsig/downloader/swing/impl/config/DownloaderConfigPanelImpl.java
85 85
        
86 86
        @Override
87 87
        public Object getValueAt(int rowIndex, int columnIndex) {
88
            if( rowIndex<0 || this.services==null || rowIndex>=this.services.size()) {
88
            try {
89
                if (rowIndex < 0 || this.services == null || rowIndex >= this.services.size()) {
90
                    return null;
91
                }
92
                DownloaderAuthenticationConfig service = this.services.get(rowIndex);
93
                switch (columnIndex) {
94
                    case 0:
95
                        return service.getServiceUrl();
96
                    case 1:
97
                        return service.getFactory().getProviderName();
98
                    default:
99
                        return null;
100
                }
101
            } catch (Exception ex) {
89 102
                return null;
90 103
            }
91
            DownloaderAuthenticationConfig service = this.services.get(rowIndex);
92
            switch(columnIndex) {
93
                case 0:
94
                    return service.getServiceUrl();
95
                case 1:
96
                    return service.getFactory().getProviderName();
97
                default:
98
                    return null;
99
            }
100 104
        }
101 105

  
102 106
        private DownloaderAuthenticationConfig getConfig(int row) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.scribejava/src/main/java/org/gvsig/downloader/swing/scribejava/keycloak/DownloaderAuthenticationKeycloakConfig.java
10 10
import org.apache.commons.lang3.StringUtils;
11 11
import org.gvsig.downloader.DownloaderAuthenticationConfig;
12 12
import org.gvsig.downloader.DownloaderCredentials;
13
import org.gvsig.downloader.DownloaderLocator;
14 13
import org.gvsig.downloader.DownloaderManager;
15 14
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationConfig;
16 15
import static org.gvsig.downloader.swing.scribejava.keycloak.DownloaderAuthenticationKeycloakFactory.AUTH_MODE_KEYCLOAK;
16
import org.gvsig.json.Json;
17 17
import org.gvsig.json.JsonObjectBuilder;
18 18
import org.gvsig.tools.ToolsLocator;
19 19
import org.gvsig.tools.dynobject.DynStruct;
......
33 33
 */
34 34
public class DownloaderAuthenticationKeycloakConfig 
35 35
        extends AbstractDownloaderAuthenticationConfig
36
        implements DownloaderAuthenticationConfig, Persistent, LabeledValue<DownloaderAuthenticationConfig>
36
        implements DownloaderAuthenticationConfig, LabeledValue<DownloaderAuthenticationConfig>
37 37
    {
38 38
    
39 39
    private static final String DEFAULT_CLIENTID = "gvsigdesktop";
......
44 44
    
45 45
    private String clientid;
46 46
    private String realm;
47
    private String baseurl;
47
    private String keycloakBaseurl;
48 48
    private int localPort;
49 49
    private String scope;
50 50

  
51
    public DownloaderAuthenticationKeycloakConfig(DownloaderAuthenticationKeycloakFactory factory, String urlOnline) {
52
        super(factory,urlOnline);
51
    public DownloaderAuthenticationKeycloakConfig(DownloaderAuthenticationKeycloakFactory factory, String serviceUrl) {
52
        super(AUTH_MODE_KEYCLOAK, factory,serviceUrl);
53 53
        this.clientid = DEFAULT_CLIENTID;
54 54
        this.scope = DEFAULT_SCOPE;
55 55
        this.localPort = DEFAULT_LOCALPORT;
56 56
        this.realm = null;
57
        this.baseurl = null;
57
        this.keycloakBaseurl = null;
58 58
    }
59 59
    
60 60
    public DownloaderAuthenticationKeycloakConfig() {
......
74 74
        builder.append("clientid=").append(this.clientid).append(";");
75 75
        builder.append("scope=").append(this.scope).append(";");
76 76
        builder.append("realm=").append(this.realm).append(";");
77
        builder.append("baseurl=").append(this.baseurl).append(";");
77
        builder.append("baseurl=").append(this.keycloakBaseurl).append(";");
78 78
        return builder.toString();        
79 79
    }
80 80

  
......
82 82
        return localPort;
83 83
    }
84 84

  
85
    public String getBaseurl() {
86
        return baseurl;
85
    public String getKeycloakBaseurl() {
86
        return keycloakBaseurl;
87 87
    }
88 88

  
89 89
    public String getRealm() {
......
98 98
        return scope;
99 99
    }
100 100

  
101
    public void setBaseurl(String baseurl) {
102
        this.baseurl = baseurl;
101
    public void setKeycloakBaseurl(String keycloakBaseurl) {
102
        this.keycloakBaseurl = keycloakBaseurl;
103 103
    }
104 104

  
105 105
    public void setLocalPort(int localPort) {
......
126 126
        if( StringUtils.isBlank(realm) ) {
127 127
            return null;
128 128
        }
129
        if( StringUtils.isBlank(baseurl) ) {
129
        if( StringUtils.isBlank(keycloakBaseurl) ) {
130 130
            return null;
131 131
        }
132 132
        if( localPort<1024  ) {
......
162 162

  
163 163
    @Override
164 164
    public void fromJson(JsonObject json) {
165
        DownloaderManager manager = DownloaderLocator.getDownloaderManager();
165
//        DownloaderManager manager = DownloaderLocator.getDownloaderManager();
166 166
        String type = json.getString("type", null);
167 167
        if( type!=null ) {
168 168
            if( !StringUtils.equalsIgnoreCase(type, "OAuth") ) {
169 169
                throw new IllegalArgumentException("Invalid value of type '"+type+"' for '"+AUTH_MODE_KEYCLOAK+"'.");
170 170
            }
171
            this.factory = manager.getDownloaderAuthenticationFactory(AUTH_MODE_KEYCLOAK);
171
//            this.factory = manager.getDownloaderAuthenticationFactory(AUTH_MODE_KEYCLOAK);
172 172
            this.realm = json.getString("realm", null);
173
            this.baseurl = json.getString("url", null);
174
            if( StringUtils.isNotBlank(this.baseurl) ) {
175
                if( this.baseurl.endsWith("/") ) {
176
                    this.baseurl = this.baseurl+"realms";
173
            this.keycloakBaseurl = json.getString("url", null);
174
            if( StringUtils.isNotBlank(this.keycloakBaseurl) ) {
175
                if( this.keycloakBaseurl.endsWith("/") ) {
176
                    this.keycloakBaseurl = this.keycloakBaseurl+"realms";
177 177
                } else {
178
                    this.baseurl = this.baseurl+"/realms";
178
                    this.keycloakBaseurl = this.keycloakBaseurl+"/realms";
179 179
                }
180 180
            }
181 181
        } else {
......
183 183
            this.clientid = json.getString("clientid", null);
184 184
            this.scope = json.getString("scope", null);
185 185
            this.realm = json.getString("realm", null);
186
            this.baseurl = json.getString("baseurl", null);
186
            this.keycloakBaseurl = json.getString("baseurl", null);
187 187
            this.localPort = json.getInt("localPort", 0);                
188 188
        }
189 189
    }
......
191 191
    @Override
192 192
    public JsonObjectBuilder toJsonBuilder() {
193 193
        JsonObjectBuilder builder = super.toJsonBuilder();
194
        builder.add_class(this);
194 195
        builder.add("clientid", this.clientid);
195 196
        builder.add("scope", this.scope);
196 197
        builder.add("realm", this.realm);
197
        builder.add("baseurl", this.baseurl);
198
        builder.add("baseurl", this.keycloakBaseurl);
198 199
        builder.add("localPort", this.localPort);
199 200
        return builder;
200 201
    }
201 202

  
202 203
    @Override
203 204
    public void saveToState(PersistentState state) throws PersistenceException {
204
        state.set("factory",this.factory.getProviderName());
205
        super.saveToState(state);
205 206
        state.set("clientid",this.clientid);
206 207
        state.set("scope",this.scope);
207
//        state.set("urlOnline",this.urlOnline);
208
        state.set("baseurl",this.baseurl);
208
        state.set("baseurl",this.keycloakBaseurl);
209 209
        state.set("realm",this.realm);
210 210
        state.set("localPort",this.localPort);
211 211
    }
212 212

  
213 213
    @Override
214 214
    public void loadFromState(PersistentState state) throws PersistenceException {
215
        String factoryName = state.getString("factory");
216
        this.factory = DownloaderLocator.getDownloaderManager().getDownloaderAuthenticationFactory(factoryName);
215
        super.loadFromState(state);
217 216
        this.clientid = state.getString("clientid");
218 217
        this.scope = state.getString("scope");
219
//        this.urlOnline = state.getString("urlOnline");
220
        this.baseurl = state.getString("baseurl");
218
        this.keycloakBaseurl = state.getString("baseurl");
221 219
        this.realm = state.getString("realm");
222 220
        this.localPort = state.getInt("localPort");
223 221
    }
......
227 225
        if (manager.getDefinition(PERSISTENT_DEFINITION_NAME) == null) {
228 226
            DynStruct definition = manager.addDefinition(DownloaderAuthenticationKeycloakConfig.class,
229 227
                    PERSISTENT_DEFINITION_NAME, 
230
                    "UserIdentificationKeycloakConfig persistence definition", null, null
231
            );            
232
            definition.addDynFieldString("factory");
228
                    "DownloaderAuthenticationKeycloakConfig persistence definition", null, null
229
            );     
230
            definition.extend(
231
                PersistenceManager.PERSISTENCE_NAMESPACE, 
232
                DownloaderAuthenticationConfig.PERSISTENT_DEFINITION_NAME
233
            );
233 234
            definition.addDynFieldString("clientid");
234 235
            definition.addDynFieldString("scope");
235
//            definition.addDynFieldString("urlOnline");
236 236
            definition.addDynFieldString("baseurl");
237 237
            definition.addDynFieldString("realm");
238 238
            definition.addDynFieldInt("localPort");
239 239
        }
240
        Json.registerSerializer(DownloaderAuthenticationKeycloakConfig.class);
240 241
    }
241 242

  
242 243
    @Override
243 244
    public String getLabel() {
244
        return String.format("%s - %s", this.baseurl, this.realm);
245
        return String.format("%s - %s", this.keycloakBaseurl, this.realm);
245 246
    }
246 247

  
247 248
    @Override
......
251 252

  
252 253
    @Override
253 254
    public String toString() {
254
        return String.format(
255
//           "Factory: %s\ngvSIG online URL: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", 
255
        return String.format(//           "Factory: %s\ngvSIG online URL: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", 
256 256
           "Factory: %s\nKeycloak URL:%s\nRealm: %s\nLocal port:%d", 
257 257
           this.getFactory().getProviderName(),
258 258
//           this.getUrlOnline(),
259
           this.getBaseurl(),
259
this.getKeycloakBaseurl(),
260 260
           this.getRealm(),
261 261
           this.getLocalPort()
262 262
        );
......
270 270
        DownloaderKeycloakCredentials theCredentials = (DownloaderKeycloakCredentials)credentials;
271 271
        DownloaderAuthenticationKeycloakConfig otherConfig = theCredentials.getConfig();
272 272
        
273
        if (!DownloaderManager.areSameURLs(this.getBaseurl(), otherConfig.getBaseurl())) {
273
        if (!DownloaderManager.areSameURLs(this.getKeycloakBaseurl(), otherConfig.getKeycloakBaseurl())) {
274 274
            return null;
275 275
        }
276 276
        if (!StringUtils.equals(this.getRealm(), otherConfig.getRealm())) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.scribejava/src/main/java/org/gvsig/downloader/swing/scribejava/keycloak/DownloaderAuthenticationKeycloakConfigPanel.java
43 43
    public void put(DownloaderAuthenticationKeycloakConfig config) {
44 44
        this.factory = config.getFactory();
45 45
        this.txtServiceUrl.setText(config.getServiceUrl());
46
        this.txtUrlKeycloak.setText(config.getBaseurl());
46
        this.txtUrlKeycloak.setText(config.getKeycloakBaseurl());
47 47
        this.txtRealm.setText(config.getRealm());
48 48
        this.txtScope.setText(config.getScope());
49 49
        this.txtClientid.setText(config.getClientid());
......
54 54
        if( config == null ) {
55 55
            config = this.factory.create(this.txtServiceUrl);
56 56
        }
57
        config.setBaseurl(StringUtils.defaultIfBlank(this.txtUrlKeycloak.getText(), null));
57
        config.setKeycloakBaseurl(StringUtils.defaultIfBlank(this.txtUrlKeycloak.getText(), null));
58 58
        config.setRealm(StringUtils.defaultIfBlank(this.txtRealm.getText(), null));
59 59
        config.setClientid(StringUtils.defaultIfBlank(this.txtClientid.getText(), null));
60 60
        config.setScope(StringUtils.defaultIfBlank(this.txtScope.getText(), null));
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.scribejava/src/main/java/org/gvsig/downloader/swing/scribejava/keycloak/DownloaderAuthenticationKeycloakFactory.java
8 8
import org.gvsig.downloader.DownloaderLocator;
9 9
import org.gvsig.downloader.DownloaderManager;
10 10
import org.gvsig.downloader.spi.AbstractDownloaderAuthenticationFactory;
11
import org.gvsig.json.Json;
11 12

  
12 13
/**
13 14
 *
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.swing/org.gvsig.downloader.swing.scribejava/src/main/java/org/gvsig/downloader/swing/scribejava/keycloak/DownloaderAuthenticationKeycloakRequester.java
176 176
    }
177 177
    
178 178
    private OAuth20Service createService(String authCallback) {
179
        final String baseUrl = this.getConfig().getBaseurl();
179
        final String baseUrl = this.getConfig().getKeycloakBaseurl();
180 180
        final String realm = this.getConfig().getRealm();
181 181
        final String scope = this.getConfig().getScope(); //"offline_access";
182 182

  
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.app/org.gvsig.downloader.app.mainplugin/src/main/java/org/gvsig/downloader/app/mainplugin/DownloaderExtension.java
24 24
package org.gvsig.downloader.app.mainplugin;
25 25

  
26 26
import java.util.ArrayList;
27
import java.util.Collection;
27 28
import java.util.List;
28 29
import org.gvsig.andami.IconThemeHelper;
30
import org.gvsig.andami.PluginsLocator;
31
import org.gvsig.andami.PluginsManager;
29 32
import org.gvsig.andami.plugins.Extension;
30 33
import org.gvsig.andami.preferences.IPreference;
31 34
import org.gvsig.andami.preferences.IPreferenceExtension;
35
import org.gvsig.downloader.DownloaderAuthenticationConfig;
36
import org.gvsig.downloader.DownloaderLocator;
37
import org.gvsig.downloader.DownloaderManager;
38
import org.gvsig.tools.dynobject.DynObject;
32 39

  
33 40
/**
34 41
 *
......
43 50

  
44 51
    @Override
45 52
    public void postInitialize() {
53
        PluginsManager pluginsManager = PluginsLocator.getPluginsManager();
54
        pluginsManager.addShutdownTask(
55
            "saveDownloaderPreferences",
56
            () -> {doSaveDownloaderPreferences();},
57
            false,
58
            100
59
        );
60
        doLoadDownloaderPreferences();
46 61
    }
62
    
63
    private void doSaveDownloaderPreferences() {
64
        DynObject props = this.getPlugin().getPluginProperties();
65
        DownloaderManager downloader = DownloaderLocator.getDownloaderManager();
66
        Collection<DownloaderAuthenticationConfig> serviceConfigs = downloader.getAuthenticationConfigurationServices();
67
        List<DownloaderAuthenticationConfig> x = new ArrayList<>(serviceConfigs);
68
        props.setDynValue("serviceConfigs", x);
69
    }
47 70

  
71
    private void doLoadDownloaderPreferences() {
72
        DynObject props = this.getPlugin().getPluginProperties();
73
        DownloaderManager downloader = DownloaderLocator.getDownloaderManager();
74
        List serviceConfigs = (List) props.getDynValue("serviceConfigs");
75
        if(serviceConfigs == null) {
76
            return;
77
        }
78
        for (Object serviceConfig : serviceConfigs) {
79
            downloader.registerAuthenticationConfigurationService((DownloaderAuthenticationConfig) serviceConfig);
80
        }
81
    }
82

  
48 83
    @Override
49 84
    public void execute(String action) {
50 85
        if( action == null ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.downloader/org.gvsig.downloader.app/org.gvsig.downloader.app.mainplugin/src/main/resources-plugin/plugin-persistence.def
1
<?xml version="1.0"?>
2
<definitions>
3
  <version>1.0.0</version>
4
  <classes>
5
    <class name="org.gvsig.downloader.app.mainplugin">
6
      <description>Persistence for the downloader manager of gvSIG desktop</description>
7
      <fields>
8
          <field name="serviceConfigs" type="List" classOfItems="org.gvsig.downloader.DownloaderAuthenticationConfig" mandatory="false">
9
              <description></description>
10
          </field>
11
      </fields>
12
    </class>
13
  </classes>
14
</definitions>  

Also available in: Unified diff