Changeset 12743 in josm for trunk/src/org/openstreetmap/josm/gui
- Timestamp:
- 2017-09-05T21:13:21+02:00 (4 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
r12686 r12743 2 2 package org.openstreetmap.josm.gui; 3 3 4 import static org.openstreetmap.josm.tools.I18n.tr;5 6 import java.text.MessageFormat;7 8 import org.openstreetmap.josm.Main;9 4 import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent; 10 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener; 11 import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder; 5 import org.openstreetmap.josm.data.UserIdentityManager; 12 6 import org.openstreetmap.josm.data.osm.User; 13 7 import org.openstreetmap.josm.data.osm.UserInfo; 14 import org.openstreetmap.josm.data.preferences.StringSetting;15 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;16 import org.openstreetmap.josm.io.OnlineResource;17 import org.openstreetmap.josm.io.OsmApi;18 import org.openstreetmap.josm.io.OsmServerUserInfoReader;19 import org.openstreetmap.josm.io.OsmTransferException;20 import org.openstreetmap.josm.io.auth.CredentialsManager;21 import org.openstreetmap.josm.tools.CheckParameterUtil;22 import org.openstreetmap.josm.tools.JosmRuntimeException;23 import org.openstreetmap.josm.tools.Logging;24 8 25 9 /** … … 50 34 * <li>safely search for objects last touched by the current user based on its user id, not on its user name</li> 51 35 * </ul> 52 * 36 * @since 2689 (creation) 37 * @deprecated to be removed end of 2017. Use {@link UserIdentityManager} instead 53 38 */ 54 public final class JosmUserIdentityManager implements PreferenceChangedListener { 39 @Deprecated 40 public final class JosmUserIdentityManager { 55 41 56 42 private static JosmUserIdentityManager instance; … … 64 50 if (instance == null) { 65 51 instance = new JosmUserIdentityManager(); 66 if (OsmApi.isUsingOAuth() && OAuthAccessTokenHolder.getInstance().containsAccessToken() && 67 !Main.isOffline(OnlineResource.OSM_API)) { 68 try { 69 instance.initFromOAuth(); 70 } catch (JosmRuntimeException | IllegalArgumentException | IllegalStateException e) { 71 Logging.error(e); 72 // Fall back to preferences if OAuth identification fails for any reason 73 instance.initFromPreferences(); 74 } 75 } else { 76 instance.initFromPreferences(); 77 } 78 Main.pref.addPreferenceChangeListener(instance); 52 UserIdentityManager.getInstance(); 79 53 } 80 54 return instance; 81 55 } 82 83 private String userName;84 private UserInfo userInfo;85 private boolean accessTokenKeyChanged;86 private boolean accessTokenSecretChanged;87 56 88 57 private JosmUserIdentityManager() { … … 93 62 */ 94 63 public void setAnonymous() { 95 userName = null; 96 userInfo = null; 64 UserIdentityManager.getInstance().setAnonymous(); 97 65 } 98 66 … … 106 74 */ 107 75 public void setPartiallyIdentified(String userName) { 108 CheckParameterUtil.ensureParameterNotNull(userName, "userName"); 109 String trimmedUserName = userName.trim(); 110 if (trimmedUserName.isEmpty()) 111 throw new IllegalArgumentException( 112 MessageFormat.format("Expected non-empty value for parameter ''{0}'', got ''{1}''", "userName", userName)); 113 this.userName = trimmedUserName; 114 userInfo = null; 76 UserIdentityManager.getInstance().setPartiallyIdentified(userName); 115 77 } 116 78 … … 126 88 */ 127 89 public void setFullyIdentified(String userName, UserInfo userInfo) { 128 CheckParameterUtil.ensureParameterNotNull(userName, "userName"); 129 String trimmedUserName = userName.trim(); 130 if (trimmedUserName.isEmpty()) 131 throw new IllegalArgumentException(tr("Expected non-empty value for parameter ''{0}'', got ''{1}''", "userName", userName)); 132 CheckParameterUtil.ensureParameterNotNull(userInfo, "userInfo"); 133 this.userName = trimmedUserName; 134 this.userInfo = userInfo; 90 UserIdentityManager.getInstance().setFullyIdentified(userName, userInfo); 135 91 } 136 92 … … 141 97 */ 142 98 public boolean isAnonymous() { 143 return userName == null && userInfo == null;99 return UserIdentityManager.getInstance().isAnonymous(); 144 100 } 145 101 … … 150 106 */ 151 107 public boolean isPartiallyIdentified() { 152 return userName != null && userInfo == null;108 return UserIdentityManager.getInstance().isPartiallyIdentified(); 153 109 } 154 110 … … 159 115 */ 160 116 public boolean isFullyIdentified() { 161 return userName != null && userInfo != null;117 return UserIdentityManager.getInstance().isFullyIdentified(); 162 118 } 163 119 … … 168 124 */ 169 125 public String getUserName() { 170 return userName;126 return UserIdentityManager.getInstance().getUserName(); 171 127 } 172 128 … … 178 134 */ 179 135 public int getUserId() { 180 if (userInfo == null) return 0; 181 return userInfo.getId(); 136 return UserIdentityManager.getInstance().getUserId(); 182 137 } 183 138 … … 189 144 */ 190 145 public UserInfo getUserInfo() { 191 return userInfo;146 return UserIdentityManager.getInstance().getUserInfo(); 192 147 } 193 148 … … 198 153 */ 199 154 public User asUser() { 200 return isAnonymous() ? User.getAnonymous() : User.createOsmUser(userInfo != null ? userInfo.getId() : 0, userName);155 return UserIdentityManager.getInstance().asUser(); 201 156 } 202 157 … … 207 162 */ 208 163 public void initFromPreferences() { 209 String userName = CredentialsManager.getInstance().getUsername(); 210 if (isAnonymous()) { 211 if (userName != null && !userName.trim().isEmpty()) { 212 setPartiallyIdentified(userName); 213 } 214 } else { 215 if (userName != null && !userName.equals(this.userName)) { 216 setPartiallyIdentified(userName); 217 } 218 // else: same name in the preferences as JOSM already knows about. 219 // keep the state, be it partially or fully identified 220 } 164 UserIdentityManager.getInstance().initFromPreferences(); 221 165 } 222 166 … … 228 172 */ 229 173 public void initFromOAuth() { 230 try { 231 UserInfo info = new OsmServerUserInfoReader().fetchUserInfo(NullProgressMonitor.INSTANCE); 232 setFullyIdentified(info.getDisplayName(), info); 233 } catch (IllegalArgumentException | OsmTransferException e) { 234 Logging.error(e); 235 } 174 UserIdentityManager.getInstance().initFromOAuth(); 236 175 } 237 176 … … 243 182 */ 244 183 public boolean isCurrentUser(String username) { 245 return this.userName != null && this.userName.equals(username);184 return UserIdentityManager.getInstance().isCurrentUser(username); 246 185 } 247 186 248 187 /** 249 188 * Replies true if the current user is {@link #isFullyIdentified() fully identified} and the {@link #getUserId() user ids} match, 250 * or if the current user is not {@link #isFullyIdentified() fully identified} and the {@link # userNameuser names} match.189 * or if the current user is not {@link #isFullyIdentified() fully identified} and the {@link #getUserName() user names} match. 251 190 * 252 191 * @param user the user to test … … 254 193 */ 255 194 public boolean isCurrentUser(User user) { 256 if (user == null) { 257 return false; 258 } else if (isFullyIdentified()) { 259 return getUserId() == user.getId(); 260 } else { 261 return isCurrentUser(user.getName()); 262 } 263 } 264 265 /* ------------------------------------------------------------------- */ 266 /* interface PreferenceChangeListener */ 267 /* ------------------------------------------------------------------- */ 268 @Override 269 public void preferenceChanged(PreferenceChangeEvent evt) { 270 switch (evt.getKey()) { 271 case "osm-server.username": 272 String newUserName = null; 273 if (evt.getNewValue() instanceof StringSetting) { 274 newUserName = ((StringSetting) evt.getNewValue()).getValue(); 275 } 276 if (newUserName == null || newUserName.trim().isEmpty()) { 277 setAnonymous(); 278 } else { 279 if (!newUserName.equals(userName)) { 280 setPartiallyIdentified(newUserName); 281 } 282 } 283 return; 284 case "osm-server.url": 285 String newUrl = null; 286 if (evt.getNewValue() instanceof StringSetting) { 287 newUrl = ((StringSetting) evt.getNewValue()).getValue(); 288 } 289 if (newUrl == null || newUrl.trim().isEmpty()) { 290 setAnonymous(); 291 } else if (isFullyIdentified()) { 292 setPartiallyIdentified(getUserName()); 293 } 294 break; 295 case "oauth.access-token.key": 296 accessTokenKeyChanged = true; 297 break; 298 case "oauth.access-token.secret": 299 accessTokenSecretChanged = true; 300 break; 301 default: // Do nothing 302 } 303 304 if (accessTokenKeyChanged && accessTokenSecretChanged) { 305 accessTokenKeyChanged = false; 306 accessTokenSecretChanged = false; 307 if (OsmApi.isUsingOAuth()) { 308 getInstance().initFromOAuth(); 309 } 310 } 195 return UserIdentityManager.getInstance().isCurrentUser(user); 311 196 } 312 197 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
r12678 r12743 47 47 import org.openstreetmap.josm.actions.downloadtasks.ChangesetQueryTask; 48 48 import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler; 49 import org.openstreetmap.josm.data.UserIdentityManager; 49 50 import org.openstreetmap.josm.data.osm.Changeset; 50 51 import org.openstreetmap.josm.data.osm.ChangesetCache; … … 53 54 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive; 54 55 import org.openstreetmap.josm.gui.HelpAwareOptionPane; 55 import org.openstreetmap.josm.gui.JosmUserIdentityManager;56 56 import org.openstreetmap.josm.gui.MainApplication; 57 57 import org.openstreetmap.josm.gui.dialogs.changeset.query.ChangesetQueryDialog; … … 465 465 protected void updateEnabledState() { 466 466 List<Changeset> selected = model.getSelectedChangesets(); 467 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();467 UserIdentityManager im = UserIdentityManager.getInstance(); 468 468 for (Changeset cs: selected) { 469 469 if (cs.isOpen()) { -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
r12630 r12743 21 21 import org.openstreetmap.josm.Main; 22 22 import org.openstreetmap.josm.data.Bounds; 23 import org.openstreetmap.josm. gui.JosmUserIdentityManager;23 import org.openstreetmap.josm.data.UserIdentityManager; 24 24 import org.openstreetmap.josm.gui.MainApplication; 25 25 import org.openstreetmap.josm.gui.MapView; … … 158 158 // partially identified 159 159 lbl = lblQueries.get(BasicQuery.MY_OPEN_CHANGESETS); 160 if ( JosmUserIdentityManager.getInstance().isAnonymous()) {160 if (UserIdentityManager.getInstance().isAnonymous()) { 161 161 rbQueries.get(BasicQuery.MY_OPEN_CHANGESETS).setEnabled(false); 162 162 lbl.setText(tr("<html>Download my open changesets<br><em>Disabled. " + … … 232 232 BasicQuery q = getSelectedQuery(); 233 233 ChangesetQuery query = new ChangesetQuery(); 234 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();234 UserIdentityManager im = UserIdentityManager.getInstance(); 235 235 if (q == null) 236 236 return query; -
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UserRestrictionPanel.java
r11330 r12743 19 19 20 20 import org.openstreetmap.josm.Main; 21 import org.openstreetmap.josm.data.UserIdentityManager; 21 22 import org.openstreetmap.josm.gui.HelpAwareOptionPane; 22 import org.openstreetmap.josm.gui.JosmUserIdentityManager;23 23 import org.openstreetmap.josm.gui.help.HelpUtil; 24 24 import org.openstreetmap.josm.gui.preferences.server.UserNameValidator; … … 163 163 */ 164 164 public void startUserInput() { 165 if ( JosmUserIdentityManager.getInstance().isAnonymous()) {165 if (UserIdentityManager.getInstance().isAnonymous()) { 166 166 lblRestrictedToMyself.setText(tr("Only changesets owned by myself (disabled. JOSM is currently run by an anonymous user)")); 167 167 rbRestrictToMyself.setEnabled(false); … … 188 188 CheckParameterUtil.ensureParameterNotNull(query, "query"); 189 189 if (rbRestrictToMyself.isSelected()) { 190 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();190 UserIdentityManager im = UserIdentityManager.getInstance(); 191 191 if (im.isPartiallyIdentified()) { 192 192 query.forUser(im.getUserName()); … … 277 277 String v = Main.pref.get(PREF_QUERY_TYPE, "mine"); 278 278 if ("mine".equals(v)) { 279 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();279 UserIdentityManager im = UserIdentityManager.getInstance(); 280 280 if (im.isAnonymous()) { 281 281 rbRestrictToUid.setSelected(true); -
trunk/src/org/openstreetmap/josm/gui/download/BookmarkList.java
r12634 r12743 26 26 import org.openstreetmap.josm.actions.downloadtasks.ChangesetQueryTask; 27 27 import org.openstreetmap.josm.data.Bounds; 28 import org.openstreetmap.josm.data.UserIdentityManager; 28 29 import org.openstreetmap.josm.data.coor.LatLon; 29 30 import org.openstreetmap.josm.data.osm.Changeset; … … 32 33 import org.openstreetmap.josm.data.projection.Projection; 33 34 import org.openstreetmap.josm.data.projection.Projections; 34 import org.openstreetmap.josm.gui.JosmUserIdentityManager;35 35 import org.openstreetmap.josm.gui.MainApplication; 36 36 import org.openstreetmap.josm.gui.MapViewState; … … 193 193 setName(tr("Home location")); 194 194 setIcon(ImageProvider.get("help", "home", ImageSizes.SMALLICON)); 195 UserInfo info = JosmUserIdentityManager.getInstance().getUserInfo();195 UserInfo info = UserIdentityManager.getInstance().getUserInfo(); 196 196 if (info == null) { 197 197 throw new IllegalStateException("User not identified"); … … 251 251 final DefaultListModel<Bookmark> model = (DefaultListModel<Bookmark>) getModel(); 252 252 model.removeAllElements(); 253 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();253 UserIdentityManager im = UserIdentityManager.getInstance(); 254 254 // Add home location bookmark first, if user fully identified 255 255 if (im.isFullyIdentified()) { -
trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
r12495 r12743 24 24 import org.openstreetmap.josm.Main; 25 25 import org.openstreetmap.josm.data.Bounds; 26 import org.openstreetmap.josm. gui.JosmUserIdentityManager;26 import org.openstreetmap.josm.data.UserIdentityManager; 27 27 import org.openstreetmap.josm.gui.download.BookmarkList.Bookmark; 28 28 import org.openstreetmap.josm.gui.widgets.JMultilineLabel; … … 290 290 putValue(SMALL_ICON, ImageProvider.get("dialogs/changeset", "downloadchangeset")); 291 291 putValue(SHORT_DESCRIPTION, tr("Download bookmarks for my {0} last changesets", BookmarkList.MAX_CHANGESET_BOOKMARKS.get())); 292 setEnabled(! JosmUserIdentityManager.getInstance().isAnonymous());292 setEnabled(!UserIdentityManager.getInstance().isAnonymous()); 293 293 } 294 294 -
trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
r12636 r12743 11 11 12 12 import org.openstreetmap.josm.Main; 13 import org.openstreetmap.josm.data.UserIdentityManager; 13 14 import org.openstreetmap.josm.data.osm.Node; 14 15 import org.openstreetmap.josm.data.osm.OsmPrimitive; … … 35 36 import org.openstreetmap.josm.data.osm.history.HistoryWay; 36 37 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor; 37 import org.openstreetmap.josm.gui.JosmUserIdentityManager;38 38 import org.openstreetmap.josm.gui.MainApplication; 39 39 import org.openstreetmap.josm.gui.layer.Layer; … … 674 674 675 675 private static User getCurrentUser() { 676 UserInfo info = JosmUserIdentityManager.getInstance().getUserInfo();676 UserInfo info = UserIdentityManager.getInstance().getUserInfo(); 677 677 return info == null ? User.getAnonymous() : User.createOsmUser(info.getId(), info.getDisplayName()); 678 678 } -
trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
r12636 r12743 25 25 26 26 import org.openstreetmap.josm.Main; 27 import org.openstreetmap.josm.data.UserIdentityManager; 27 28 import org.openstreetmap.josm.data.osm.Changeset; 28 29 import org.openstreetmap.josm.data.osm.OsmPrimitive; 29 30 import org.openstreetmap.josm.data.osm.User; 30 31 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive; 31 import org.openstreetmap.josm.gui.JosmUserIdentityManager;32 32 import org.openstreetmap.josm.gui.MainApplication; 33 33 import org.openstreetmap.josm.gui.dialogs.ChangesetDialog; … … 256 256 } 257 257 } else { 258 String username = JosmUserIdentityManager.getInstance().getUserName();258 String username = UserIdentityManager.getInstance().getUserName(); 259 259 if (username == null) { 260 260 lblUser.setDescription(tr("anonymous")); -
trunk/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
r12620 r12743 14 14 15 15 import org.openstreetmap.josm.Main; 16 import org.openstreetmap.josm.data.UserIdentityManager; 16 17 import org.openstreetmap.josm.data.osm.Changeset; 17 18 import org.openstreetmap.josm.data.osm.ChangesetCache; 18 19 import org.openstreetmap.josm.data.osm.UserInfo; 19 20 import org.openstreetmap.josm.gui.ExceptionDialogUtil; 20 import org.openstreetmap.josm.gui.JosmUserIdentityManager;21 21 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 22 22 import org.openstreetmap.josm.gui.util.GuiHelper; … … 61 61 @Override 62 62 protected void finish() { 63 if ( JosmUserIdentityManager.getInstance().isAnonymous()) {63 if (UserIdentityManager.getInstance().isAnonymous()) { 64 64 String msg = tr("Could not retrieve the list of your open changesets because<br>" 65 65 + "JOSM does not know your identity.<br>" … … 96 96 */ 97 97 protected void refreshUserIdentity() { 98 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();98 UserIdentityManager im = UserIdentityManager.getInstance(); 99 99 try { 100 100 OsmServerUserInfoReader infoReader = new OsmServerUserInfoReader(); … … 122 122 protected void realRun() throws SAXException, IOException, OsmTransferException { 123 123 try { 124 JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();124 UserIdentityManager im = UserIdentityManager.getInstance(); 125 125 if (im.isAnonymous()) { 126 126 refreshUserIdentity();
Note: See TracChangeset
for help on using the changeset viewer.