Changeset 12928 in josm for trunk/src


Ignore:
Timestamp:
2017-10-06T15:17:51+02:00 (7 years ago)
Author:
bastiK
Message:

see #15229 - do not copy the entire preferences list, just to set a custom server API in OAuth wizard

Location:
trunk/src/org/openstreetmap/josm
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/oauth/OAuthAccessTokenHolder.java

    r12841 r12928  
    77import org.openstreetmap.josm.io.auth.CredentialsAgent;
    88import org.openstreetmap.josm.io.auth.CredentialsAgentException;
     9import org.openstreetmap.josm.spi.preferences.Config;
    910import org.openstreetmap.josm.tools.CheckParameterUtil;
    1011import org.openstreetmap.josm.tools.Logging;
     
    143144     * credential manager.
    144145     *
     146     * @param cm the credential manager. Must not be null.
     147     * @throws IllegalArgumentException if cm is null
     148     */
     149    public void init(CredentialsAgent cm) {
     150        CheckParameterUtil.ensureParameterNotNull(cm, "cm");
     151        OAuthToken token = null;
     152        try {
     153            token = cm.lookupOAuthAccessToken();
     154        } catch (CredentialsAgentException e) {
     155            Logging.error(e);
     156            Logging.warn(tr("Failed to retrieve OAuth Access Token from credential manager"));
     157            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
     158        }
     159        saveToPreferences = Config.getPref().getBoolean("oauth.access-token.save-to-preferences", true);
     160        if (token != null) {
     161            accessTokenKey = token.getKey();
     162            accessTokenSecret = token.getSecret();
     163        }
     164    }
     165
     166    /**
     167     * Initializes the content of this holder from the Access Token managed by the
     168     * credential manager.
     169     *
    145170     * @param pref the preferences. Must not be null.
    146171     * @param cm the credential manager. Must not be null.
    147172     * @throws IllegalArgumentException if cm is null
    148      */
     173     * @deprecated (since 12928) replaced by {@link #init(org.openstreetmap.josm.io.auth.CredentialsAgent)}
     174     */
     175    @Deprecated
    149176    public void init(Preferences pref, CredentialsAgent cm) {
    150177        CheckParameterUtil.ensureParameterNotNull(pref, "pref");
     
    169196     * by a credential manager.
    170197     *
    171      * @param preferences the preferences. Must not be null.
    172198     * @param cm the credentials manager. Must not be null.
    173      * @throws IllegalArgumentException if preferences is null
    174      * @throws IllegalArgumentException if cm is null
    175      */
    176     public void save(Preferences preferences, CredentialsAgent cm) {
    177         CheckParameterUtil.ensureParameterNotNull(preferences, "preferences");
    178         CheckParameterUtil.ensureParameterNotNull(cm, "cm");
    179         preferences.putBoolean("oauth.access-token.save-to-preferences", saveToPreferences);
     199     * @throws IllegalArgumentException if cm is null
     200     */
     201    public void save(CredentialsAgent cm) {
     202        CheckParameterUtil.ensureParameterNotNull(cm, "cm");
     203        Config.getPref().putBoolean("oauth.access-token.save-to-preferences", saveToPreferences);
    180204        try {
    181205            if (!saveToPreferences) {
     
    192216
    193217    /**
     218     * Saves the content of this holder to the preferences and a credential store managed
     219     * by a credential manager.
     220     *
     221     * @param preferences the preferences. Must not be null.
     222     * @param cm the credentials manager. Must not be null.
     223     * @throws IllegalArgumentException if preferences is null
     224     * @throws IllegalArgumentException if cm is null
     225     * @deprecated (since 12928) replaced by {@link #save(org.openstreetmap.josm.io.auth.CredentialsAgent)}
     226     */
     227    @Deprecated
     228    public void save(Preferences preferences, CredentialsAgent cm) {
     229        CheckParameterUtil.ensureParameterNotNull(preferences, "preferences");
     230        CheckParameterUtil.ensureParameterNotNull(cm, "cm");
     231        preferences.putBoolean("oauth.access-token.save-to-preferences", saveToPreferences);
     232        try {
     233            if (!saveToPreferences) {
     234                cm.storeOAuthAccessToken(null);
     235            } else {
     236                cm.storeOAuthAccessToken(new OAuthToken(accessTokenKey, accessTokenSecret));
     237            }
     238        } catch (CredentialsAgentException e) {
     239            Logging.error(e);
     240            Logging.warn(tr("Failed to store OAuth Access Token to credentials manager"));
     241            Logging.warn(tr("Current credential manager is of type ''{0}''", cm.getClass().getName()));
     242        }
     243    }
     244
     245    /**
    194246     * Clears the content of this holder
    195247     */
  • trunk/src/org/openstreetmap/josm/data/oauth/OAuthParameters.java

    r10294 r12928  
    77import org.openstreetmap.josm.data.Preferences;
    88import org.openstreetmap.josm.io.OsmApi;
     9import org.openstreetmap.josm.spi.preferences.Config;
    910import org.openstreetmap.josm.tools.CheckParameterUtil;
    1011import org.openstreetmap.josm.tools.Utils;
     
    7980     * Replies a set of parameters as defined in the preferences.
    8081     *
     82     * @param apiUrl the API URL. Must not be null.
     83     * @return the parameters
     84     */
     85    public static OAuthParameters createFromApiUrl(String apiUrl) {
     86        OAuthParameters parameters = createDefault(apiUrl);
     87        return new OAuthParameters(
     88                Config.getPref().get("oauth.settings.consumer-key", parameters.getConsumerKey()),
     89                Config.getPref().get("oauth.settings.consumer-secret", parameters.getConsumerSecret()),
     90                Config.getPref().get("oauth.settings.request-token-url", parameters.getRequestTokenUrl()),
     91                Config.getPref().get("oauth.settings.access-token-url", parameters.getAccessTokenUrl()),
     92                Config.getPref().get("oauth.settings.authorise-url", parameters.getAuthoriseUrl()),
     93                Config.getPref().get("oauth.settings.osm-login-url", parameters.getOsmLoginUrl()),
     94                Config.getPref().get("oauth.settings.osm-logout-url", parameters.getOsmLogoutUrl()));
     95    }
     96
     97    /**
     98     * Replies a set of parameters as defined in the preferences.
     99     *
    81100     * @param pref the preferences
    82101     * @return the parameters
    83      */
     102     * @deprecated (since 12928) replaced by {@link #createFromApiUrl(java.lang.String)}
     103     */
     104    @Deprecated
    84105    public static OAuthParameters createFromPreferences(Preferences pref) {
    85106        OAuthParameters parameters = createDefault(pref.get("osm-server.url"));
     
    95116
    96117    /**
     118     * Remembers the current values in the preferences.
     119     */
     120    public void rememberPreferences() {
     121        Config.getPref().put("oauth.settings.consumer-key", getConsumerKey());
     122        Config.getPref().put("oauth.settings.consumer-secret", getConsumerSecret());
     123        Config.getPref().put("oauth.settings.request-token-url", getRequestTokenUrl());
     124        Config.getPref().put("oauth.settings.access-token-url", getAccessTokenUrl());
     125        Config.getPref().put("oauth.settings.authorise-url", getAuthoriseUrl());
     126        Config.getPref().put("oauth.settings.osm-login-url", getOsmLoginUrl());
     127        Config.getPref().put("oauth.settings.osm-logout-url", getOsmLogoutUrl());
     128    }
     129
     130    /**
    97131     * Remembers the current values in the preferences <code>pref</code>.
    98132     *
    99133     * @param pref the preferences. Must not be null.
    100134     * @throws IllegalArgumentException if pref is null.
    101      */
     135     * @deprecated (since 12928) replaced by {@link #rememberPreferences()}
     136     */
     137    @Deprecated
    102138    public void rememberPreferences(Preferences pref) {
    103139        CheckParameterUtil.ensureParameterNotNull(pref, "pref");
     
    129165     * @param osmLogoutUrl the OSM logout URL (for automatic mode)
    130166     * @see #createDefault
    131      * @see #createFromPreferences
     167     * @see #createFromApiUrl
    132168     * @since 9220
    133169     */
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r12923 r12928  
    981981        DefaultProxySelector proxySelector = new DefaultProxySelector(ProxySelector.getDefault());
    982982        ProxySelector.setDefault(proxySelector);
    983         OAuthAccessTokenHolder.getInstance().init(Main.pref, CredentialsManager.getInstance());
     983        OAuthAccessTokenHolder.getInstance().init(CredentialsManager.getInstance());
    984984
    985985        setupCallbacks();
  • trunk/src/org/openstreetmap/josm/gui/oauth/AbstractAuthorizationUI.java

    r10378 r12928  
    130130
    131131    /**
     132     * Initializes the authorisation UI.
     133     *
     134     * @param paramApiUrl the API URL. Must not be null.
     135     * @throws IllegalArgumentException if paramApiUrl is null
     136     */
     137    public void initialize(String paramApiUrl) {
     138        CheckParameterUtil.ensureParameterNotNull(paramApiUrl, "paramApiUrl");
     139        pnlAdvancedProperties.initialize(paramApiUrl);
     140    }
     141
     142    /**
    132143     * Initializes the authorisation UI with preference values in <code>pref</code>.
    133144     *
    134145     * @param pref the preferences. Must not be null.
    135146     * @throws IllegalArgumentException if pref is null
     147     * @deprecated (since 12928) replaced by {@link #initialize(java.lang.String)}
    136148     */
     149    @Deprecated
    137150    public void initFromPreferences(Preferences pref) {
    138151        CheckParameterUtil.ensureParameterNotNull(pref, "pref");
  • trunk/src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java

    r12841 r12928  
    2424import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
    2525import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
     26import org.openstreetmap.josm.spi.preferences.Config;
    2627import org.openstreetmap.josm.tools.CheckParameterUtil;
    2728import org.openstreetmap.josm.tools.ImageProvider;
     
    257258     * Initializes the panel from the values in the preferences <code>preferences</code>.
    258259     *
     260     * @param paramApiUrl the API URL. Must not be null.
     261     * @throws IllegalArgumentException if paramApiUrl is null
     262     */
     263    public void initialize(String paramApiUrl) {
     264        CheckParameterUtil.ensureParameterNotNull(paramApiUrl, "paramApiUrl");
     265        setApiUrl(paramApiUrl);
     266        boolean useDefault = Config.getPref().getBoolean("oauth.settings.use-default", true);
     267        ilUseDefault.setEnabled(false);
     268        if (useDefault) {
     269            resetToDefaultSettings();
     270        } else {
     271            setAdvancedParameters(OAuthParameters.createFromApiUrl(paramApiUrl));
     272        }
     273        ilUseDefault.setEnabled(true);
     274    }
     275
     276    /**
     277     * Initializes the panel from the values in the preferences <code>preferences</code>.
     278     *
    259279     * @param pref the preferences. Must not be null.
    260280     * @throws IllegalArgumentException if pref is null
    261      */
     281     * @deprecated (since 12928) replaced by {@link #initialize(java.lang.String)}
     282     */
     283    @Deprecated
    262284    public void initFromPreferences(Preferences pref) {
    263285        CheckParameterUtil.ensureParameterNotNull(pref, "pref");
     
    275297    /**
    276298     * Remembers the current values in the preferences <code>pref</code>.
     299     */
     300    public void rememberPreferences() {
     301        Config.getPref().putBoolean("oauth.settings.use-default", cbUseDefaults.isSelected());
     302        if (cbUseDefaults.isSelected()) {
     303            new OAuthParameters(null, null, null, null, null, null, null).rememberPreferences();
     304        } else {
     305            getAdvancedParameters().rememberPreferences();
     306        }
     307    }
     308
     309    /**
     310     * Remembers the current values in the preferences <code>pref</code>.
    277311     *
    278312     * @param pref the preferences. Must not be null.
    279313     * @throws IllegalArgumentException if pref is null.
    280      */
     314     * @deprecated (since 12928) replaced by {@link #rememberPreferences()}
     315     */
     316    @Deprecated
    281317    public void rememberPreferences(Preferences pref) {
    282318        CheckParameterUtil.ensureParameterNotNull(pref, "pref");
  • trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java

    r12620 r12928  
    169169    /**
    170170     * Initializes the panel with values from the preferences
     171     * @param paramApiUrl the API URL
     172     */
     173    @Override
     174    public void initialize(String paramApiUrl) {
     175        super.initialize(paramApiUrl);
     176        CredentialsAgent cm = CredentialsManager.getInstance();
     177        try {
     178            PasswordAuthentication pa = cm.lookup(RequestorType.SERVER, OsmApi.getOsmApi().getHost());
     179            if (pa == null) {
     180                tfUserName.setText("");
     181                tfPassword.setText("");
     182            } else {
     183                tfUserName.setText(pa.getUserName() == null ? "" : pa.getUserName());
     184                tfPassword.setText(pa.getPassword() == null ? "" : String.valueOf(pa.getPassword()));
     185            }
     186        } catch (CredentialsAgentException e) {
     187            Logging.error(e);
     188            tfUserName.setText("");
     189            tfPassword.setText("");
     190        }
     191    }
     192
     193    /**
     194     * Initializes the panel with values from the preferences
    171195     * @param pref Preferences structure
    172      */
     196     * @deprecated (since 12928) replaced by {@link #initialize(java.lang.String)}
     197     */
     198    @Deprecated
    173199    @Override
    174200    public void initFromPreferences(Preferences pref) {
  • trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java

    r12803 r12928  
    4040
    4141import org.openstreetmap.josm.Main;
    42 import org.openstreetmap.josm.data.Preferences;
    4342import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
    4443import org.openstreetmap.josm.data.oauth.OAuthParameters;
     
    309308     */
    310309    public void initFromPreferences() {
    311         // Copy current JOSM preferences to update API url with the one used in this wizard
    312         Preferences copyPref = new Preferences(Main.pref);
    313         copyPref.put("osm-server.url", apiUrl);
    314         pnlFullyAutomaticAuthorisationUI.initFromPreferences(copyPref);
    315         pnlSemiAutomaticAuthorisationUI.initFromPreferences(copyPref);
    316         pnlManualAuthorisationUI.initFromPreferences(copyPref);
     310        pnlFullyAutomaticAuthorisationUI.initialize(apiUrl);
     311        pnlSemiAutomaticAuthorisationUI.initialize(apiUrl);
     312        pnlManualAuthorisationUI.initialize(apiUrl);
    317313    }
    318314
  • trunk/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java

    r12846 r12928  
    134134
    135135    /**
    136      * Saves the current values to preferences
     136     * Saves the current values to the preferences
    137137     */
    138138    public final void saveToPreferences() {
     
    149149            pnlBasicAuthPreferences.saveToPreferences();
    150150            OAuthAccessTokenHolder.getInstance().clear();
    151             OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
     151            OAuthAccessTokenHolder.getInstance().save(CredentialsManager.getInstance());
    152152        } else if ("oauth".equals(authMethod)) {
    153153            // clear the password in the preferences
  • trunk/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java

    r12686 r12928  
    9696        gc.weighty = 1.0;
    9797        pnl.add(pnlAdvancedProperties, gc);
    98         pnlAdvancedProperties.initFromPreferences(Main.pref);
     98        pnlAdvancedProperties.initialize(OsmApi.getOsmApi().getServerUrl());
    9999        pnlAdvancedProperties.setBorder(
    100100                BorderFactory.createCompoundBorder(
     
    162162    public void saveToPreferences() {
    163163        OAuthAccessTokenHolder.getInstance().setSaveToPreferences(cbSaveToPreferences.isSelected());
    164         OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
    165         pnlAdvancedProperties.rememberPreferences(Main.pref);
     164        OAuthAccessTokenHolder.getInstance().save(CredentialsManager.getInstance());
     165        pnlAdvancedProperties.rememberPreferences();
    166166    }
    167167
     
    359359        public void actionPerformed(ActionEvent evt) {
    360360            OAuthToken token = OAuthAccessTokenHolder.getInstance().getAccessToken();
    361             OAuthParameters parameters = OAuthParameters.createFromPreferences(Main.pref);
     361            OAuthParameters parameters = OAuthParameters.createFromApiUrl(OsmApi.getOsmApi().getServerUrl());
    362362            TestAccessTokenTask task = new TestAccessTokenTask(
    363363                    OAuthAuthenticationPreferencesPanel.this,
  • trunk/src/org/openstreetmap/josm/io/OsmConnection.java

    r12869 r12928  
    114114    protected void addOAuthAuthorizationHeader(HttpClient connection) throws OsmTransferException {
    115115        if (oauthParameters == null) {
    116             oauthParameters = OAuthParameters.createFromPreferences(Main.pref);
     116            oauthParameters = OAuthParameters.createFromApiUrl(OsmApi.getOsmApi().getServerUrl());
    117117        }
    118118        OAuthConsumer consumer = oauthParameters.buildConsumer();
     
    146146            fetcher.obtainAccessToken(apiUrl);
    147147            OAuthAccessTokenHolder.getInstance().setSaveToPreferences(true);
    148             OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
     148            OAuthAccessTokenHolder.getInstance().save(CredentialsManager.getInstance());
    149149        } catch (MalformedURLException | InterruptedException | InvocationTargetException e) {
    150150            throw new MissingOAuthAccessTokenException(e);
Note: See TracChangeset for help on using the changeset viewer.