Changeset 11878 in josm for trunk


Ignore:
Timestamp:
2017-04-10T00:14:42+02:00 (8 years ago)
Author:
Don-vip
Message:

findbugs - EI_EXPOSE_REP2 + javadoc

Location:
trunk
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java

    r11746 r11878  
    77import java.util.HashMap;
    88import java.util.Iterator;
    9 import java.util.List;
    109import java.util.Map;
    1110import java.util.Map.Entry;
     
    2524import org.openstreetmap.josm.data.osm.PrimitiveId;
    2625import org.openstreetmap.josm.data.osm.RelationData;
    27 import org.openstreetmap.josm.data.osm.RelationMemberData;
    2826import org.openstreetmap.josm.data.osm.WayData;
    2927import org.openstreetmap.josm.data.osm.history.History;
     
    8078    }
    8179
     80    /**
     81     * OsmChange download task.
     82     */
    8283    protected class DownloadTask extends DownloadOsmTask.DownloadTask {
    8384
    84         public DownloadTask(boolean newLayer, OsmServerReader reader,
    85                 ProgressMonitor progressMonitor) {
     85        /**
     86         * Constructs a new {@code DownloadTask}.
     87         * @param newLayer if {@code true}, force download to a new layer
     88         * @param reader OSM data reader
     89         * @param progressMonitor progress monitor
     90         */
     91        public DownloadTask(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
    8692            super(newLayer, reader, progressMonitor);
    8793        }
     
    154160                        switch (p.getType()) {
    155161                        case NODE:
    156                             data = new NodeData();
    157                             ((NodeData) data).setCoor(((HistoryNode) hp).getCoords());
     162                            data = ((HistoryNode) hp).fillPrimitiveData(new NodeData());
    158163                            break;
    159164                        case WAY:
    160                             data = new WayData();
    161                             List<Long> nodeIds = ((HistoryWay) hp).getNodes();
    162                             ((WayData) data).setNodes(nodeIds);
     165                            data = ((HistoryWay) hp).fillPrimitiveData(new WayData());
    163166                            // Find incomplete nodes to load at next run
    164                             for (Long nodeId : nodeIds) {
     167                            for (Long nodeId : ((HistoryWay) hp).getNodes()) {
    165168                                if (p.getDataSet().getPrimitiveById(nodeId, OsmPrimitiveType.NODE) == null) {
    166169                                    Node n = new Node(nodeId);
     
    171174                            break;
    172175                        case RELATION:
    173                             data = new RelationData();
    174                             List<RelationMemberData> members = ((HistoryRelation) hp).getMembers();
    175                             ((RelationData) data).setMembers(members);
     176                            data = ((HistoryRelation) hp).fillPrimitiveData(new RelationData());
    176177                            break;
    177178                        default: throw new AssertionError("Unknown primitive type");
    178179                        }
    179 
    180                         data.setUser(hp.getUser());
    181                         try {
    182                             data.setVisible(hp.isVisible());
    183                         } catch (IllegalStateException e) {
    184                             Main.error(e, "Cannot change visibility for "+p+':');
    185                         }
    186                         data.setTimestamp(hp.getTimestamp());
    187                         data.setKeys(hp.getTags());
    188                         data.setOsmId(hp.getId(), (int) hp.getVersion());
    189180
    190181                        // Load the history data
  • trunk/src/org/openstreetmap/josm/data/notes/Note.java

    r11821 r11878  
    1111
    1212import org.openstreetmap.josm.data.coor.LatLon;
     13import org.openstreetmap.josm.tools.date.DateUtils;
    1314
    1415/**
     
    9899    /** @return Date that this note was submitted */
    99100    public Date getCreatedAt() {
    100         return cloneDate(createdAt);
     101        return DateUtils.cloneDate(createdAt);
    101102    }
    102103
     
    106107     */
    107108    public void setCreatedAt(Date createdAt) {
    108         this.createdAt = cloneDate(createdAt);
     109        this.createdAt = DateUtils.cloneDate(createdAt);
    109110    }
    110111
    111112    /** @return Date that this note was closed. Null if it is still open. */
    112113    public Date getClosedAt() {
    113         return cloneDate(closedAt);
     114        return DateUtils.cloneDate(closedAt);
    114115    }
    115116
     
    119120     */
    120121    public void setClosedAt(Date closedAt) {
    121         this.closedAt = cloneDate(closedAt);
     122        this.closedAt = DateUtils.cloneDate(closedAt);
    122123    }
    123124
     
    172173    public void updateWith(Note note) {
    173174        this.comments = note.comments;
    174         this.createdAt = cloneDate(note.createdAt);
     175        this.createdAt = DateUtils.cloneDate(note.createdAt);
    175176        this.id = note.id;
    176177        this.state = note.state;
     
    197198        return tr("Note") + ' ' + id + ": " + getFirstComment();
    198199    }
    199 
    200     /**
    201      * Null-safe date cloning method.
    202      * @param d date to clone, or null
    203      * @return cloned date, or null
    204      */
    205     static Date cloneDate(Date d) {
    206         return d != null ? (Date) d.clone() : null;
    207     }
    208200}
  • trunk/src/org/openstreetmap/josm/data/notes/NoteComment.java

    r11821 r11878  
    66
    77import org.openstreetmap.josm.data.osm.User;
     8import org.openstreetmap.josm.tools.date.DateUtils;
    89
    910/**
     
    5253        this.text = commentText;
    5354        this.user = user;
    54         this.commentTimestamp = Note.cloneDate(createDate);
     55        this.commentTimestamp = DateUtils.cloneDate(createDate);
    5556        this.action = action;
    5657        this.isNew = isNew;
     
    6970    /** @return The time at which this comment was created */
    7071    public Date getCommentTimestamp() {
    71         return Note.cloneDate(commentTimestamp);
     72        return DateUtils.cloneDate(commentTimestamp);
    7273    }
    7374
  • trunk/src/org/openstreetmap/josm/data/osm/Changeset.java

    r11332 r11878  
    1515import org.openstreetmap.josm.data.osm.visitor.Visitor;
    1616import org.openstreetmap.josm.tools.CheckParameterUtil;
     17import org.openstreetmap.josm.tools.date.DateUtils;
    1718
    1819/**
     
    177178     */
    178179    public Date getCreatedAt() {
    179         return createdAt;
     180        return DateUtils.cloneDate(createdAt);
    180181    }
    181182
     
    185186     */
    186187    public void setCreatedAt(Date createdAt) {
    187         this.createdAt = createdAt;
     188        this.createdAt = DateUtils.cloneDate(createdAt);
    188189    }
    189190
     
    193194     */
    194195    public Date getClosedAt() {
    195         return closedAt;
     196        return DateUtils.cloneDate(closedAt);
    196197    }
    197198
     
    201202     */
    202203    public void setClosedAt(Date closedAt) {
    203         this.closedAt = closedAt;
     204        this.closedAt = DateUtils.cloneDate(closedAt);
    204205    }
    205206
     
    426427            return;
    427428        this.user = other.user;
    428         this.createdAt = other.createdAt;
    429         this.closedAt = other.closedAt;
     429        this.createdAt = DateUtils.cloneDate(other.createdAt);
     430        this.closedAt = DateUtils.cloneDate(other.closedAt);
    430431        this.open = other.open;
    431432        this.min = other.min;
  • trunk/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java

    r11115 r11878  
    1717public class ChangesetDataSet {
    1818
     19    /**
     20     * Type of primitive modification.
     21     */
    1922    public enum ChangesetModificationType {
     23        /** The primitive has been created */
    2024        CREATED,
     25        /** The primitive has been updated */
    2126        UPDATED,
     27        /** The primitive has been deleted */
    2228        DELETED
    2329    }
    2430
     31    /**
     32     * An entry in the changeset dataset.
     33     */
    2534    public interface ChangesetDataSetEntry {
     35
     36        /**
     37         * Returns the type of modification.
     38         * @return the type of modification
     39         */
    2640        ChangesetModificationType getModificationType();
    2741
     42        /**
     43         * Returns the affected history primitive.
     44         * @return the affected history primitive
     45         */
    2846        HistoryOsmPrimitive getPrimitive();
    2947    }
     
    133151
    134152    /**
    135      * Replies the {@link HistoryOsmPrimitive} with id <code>id</code> from this
    136      * dataset. null, if there is no such primitive in the data set.
    137      *
    138      * @param id the id
    139      * @return  the {@link HistoryOsmPrimitive} with id <code>id</code> from this
    140      * dataset
     153     * Replies the {@link HistoryOsmPrimitive} with id <code>id</code> from this dataset.
     154     * null, if there is no such primitive in the data set.
     155     *
     156     * @param id the id
     157     * @return the {@link HistoryOsmPrimitive} with id <code>id</code> from this dataset
    141158     */
    142159    public HistoryOsmPrimitive getPrimitive(PrimitiveId id) {
     
    145162    }
    146163
     164    /**
     165     * Returns an iterator over dataset entries.
     166     * @return an iterator over dataset entries
     167     */
    147168    public Iterator<ChangesetDataSetEntry> iterator() {
    148169        return new DefaultIterator();
     
    184205        public ChangesetDataSetEntry next() {
    185206            Entry<PrimitiveId, ChangesetModificationType> next = typeIterator.next();
    186             ChangesetModificationType type = next.getValue();
    187             HistoryOsmPrimitive primitive = primitives.get(next.getKey());
    188             return new DefaultChangesetDataSetEntry(type, primitive);
     207            return new DefaultChangesetDataSetEntry(next.getValue(), primitives.get(next.getKey()));
    189208        }
    190209
  • trunk/src/org/openstreetmap/josm/data/osm/ChangesetDiscussionComment.java

    r7937 r11878  
    33
    44import java.util.Date;
     5
     6import org.openstreetmap.josm.tools.date.DateUtils;
    57
    68/**
     
    2325     */
    2426    public ChangesetDiscussionComment(Date date, User user) {
    25         this.date = date;
     27        this.date = DateUtils.cloneDate(date);
    2628        this.user = user;
    2729    }
     
    4850     */
    4951    public final Date getDate() {
    50         return date;
     52        return DateUtils.cloneDate(date);
    5153    }
    5254
  • trunk/src/org/openstreetmap/josm/data/osm/PrimitiveData.java

    r10946 r11878  
    7575    }
    7676
     77    /**
     78     * Returns a filtered list for a given primitive type.
     79     * @param <T> primitive type
     80     * @param list list to filter
     81     * @param type primitive type
     82     * @return a filtered list for given primitive type
     83     */
    7784    @SuppressWarnings("unchecked")
    7885    public static <T extends PrimitiveData> List<T> getFilteredList(Collection<T> list, OsmPrimitiveType type) {
  • trunk/src/org/openstreetmap/josm/data/osm/RelationData.java

    r9891 r11878  
    77import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
    88
     9/**
     10 * Relation data.
     11 * @since 2284
     12 */
    913public class RelationData extends PrimitiveData implements IRelation {
    1014
     
    2832    }
    2933
     34    /**
     35     * Returns relation members.
     36     * @return relation members
     37     */
    3038    public List<RelationMemberData> getMembers() {
    3139        return members;
    3240    }
    3341
     42    /**
     43     * Sets relation members.
     44     * @param memberData relation members
     45     */
    3446    public void setMembers(List<RelationMemberData> memberData) {
    3547        members = new ArrayList<>(memberData);
  • trunk/src/org/openstreetmap/josm/data/osm/UserInfo.java

    r11349 r11878  
    66
    77import org.openstreetmap.josm.data.coor.LatLon;
     8import org.openstreetmap.josm.tools.date.DateUtils;
    89
    910/**
     
    7374     */
    7475    public Date getAccountCreated() {
    75         return accountCreated;
     76        return DateUtils.cloneDate(accountCreated);
    7677    }
    7778
     
    8182     */
    8283    public void setAccountCreated(Date accountCreated) {
    83         this.accountCreated = accountCreated;
     84        this.accountCreated = DateUtils.cloneDate(accountCreated);
    8485    }
    8586
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryNode.java

    r11608 r11878  
    66import org.openstreetmap.josm.data.coor.LatLon;
    77import org.openstreetmap.josm.data.osm.Node;
     8import org.openstreetmap.josm.data.osm.NodeData;
    89import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    910import org.openstreetmap.josm.data.osm.User;
     
    8990        return formatter.format(this);
    9091    }
     92
     93    /**
     94     * Fills the node attributes with values from this history.
     95     * @param data node data to fill
     96     * @return filled node data
     97     * @since 11878
     98     */
     99    public NodeData fillPrimitiveData(NodeData data) {
     100        super.fillPrimitiveCommonData(data);
     101        data.setCoor(coords);
     102        return data;
     103    }
    91104}
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryOsmPrimitive.java

    r11608 r11878  
    1313import java.util.Objects;
    1414
     15import org.openstreetmap.josm.Main;
    1516import org.openstreetmap.josm.data.osm.Changeset;
    1617import org.openstreetmap.josm.data.osm.Node;
    1718import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1819import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     20import org.openstreetmap.josm.data.osm.PrimitiveData;
    1921import org.openstreetmap.josm.data.osm.PrimitiveId;
    2022import org.openstreetmap.josm.data.osm.Relation;
     
    2426import org.openstreetmap.josm.data.osm.Way;
    2527import org.openstreetmap.josm.tools.CheckParameterUtil;
     28import org.openstreetmap.josm.tools.date.DateUtils;
    2629
    2730/**
     
    8588        this.user = user;
    8689        this.changesetId = changesetId;
    87         this.timestamp = timestamp;
    88         tags = new HashMap<>();
     90        this.timestamp = DateUtils.cloneDate(timestamp);
     91        this.tags = new HashMap<>();
    8992    }
    9093
     
    159162     */
    160163    public Date getTimestamp() {
    161         return timestamp;
     164        return DateUtils.cloneDate(timestamp);
    162165    }
    163166
     
    170173    }
    171174
     175    /**
     176     * Checks that value is positive.
     177     * @param value value to check
     178     * @param name parameter name for error message
     179     * @throws IllegalArgumentException if {@code value <= 0}
     180     */
    172181    protected final void ensurePositiveLong(long value, String name) {
    173182        if (value <= 0) {
     
    176185    }
    177186
     187    /**
     188     * Determines if this history matches given id and version.
     189     * @param id Primitive identifier
     190     * @param version Primitive version
     191     * @return {@code true} if this history matches given id and version
     192     */
    178193    public boolean matches(long id, long version) {
    179194        return this.id == id && this.version == version;
    180195    }
    181196
     197    /**
     198     * Determines if this history matches given id.
     199     * @param id Primitive identifier
     200     * @return {@code true} if this history matches given id
     201     */
    182202    public boolean matches(long id) {
    183203        return this.id == id;
     
    325345    }
    326346
     347    /**
     348     * Fills the attributes common to all primitives with values from this history.
     349     * @param data primitive data to fill
     350     */
     351    protected void fillPrimitiveCommonData(PrimitiveData data) {
     352        data.setUser(user);
     353        try {
     354            data.setVisible(visible);
     355        } catch (IllegalStateException e) {
     356            Main.error(e, "Cannot change visibility for "+data+':');
     357        }
     358        data.setTimestamp(timestamp);
     359        data.setKeys(tags);
     360        data.setOsmId(id, (int) version);
     361    }
     362
    327363    @Override
    328364    public int hashCode() {
     
    335371        if (obj == null || getClass() != obj.getClass()) return false;
    336372        HistoryOsmPrimitive that = (HistoryOsmPrimitive) obj;
    337         return id == that.id &&
    338                 version == that.version;
     373        return id == that.id && version == that.version;
    339374    }
    340375
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java

    r11608 r11878  
    1010import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1111import org.openstreetmap.josm.data.osm.Relation;
     12import org.openstreetmap.josm.data.osm.RelationData;
    1213import org.openstreetmap.josm.data.osm.RelationMemberData;
    1314import org.openstreetmap.josm.data.osm.User;
     
    141142        return formatter.format(this);
    142143    }
     144
     145    /**
     146     * Fills the relation attributes with values from this history.
     147     * @param data relation data to fill
     148     * @return filled relation data
     149     * @since 11878
     150     */
     151    public RelationData fillPrimitiveData(RelationData data) {
     152        super.fillPrimitiveCommonData(data);
     153        data.setMembers(members);
     154        return data;
     155    }
    143156}
  • trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java

    r11608 r11878  
    1212import org.openstreetmap.josm.data.osm.User;
    1313import org.openstreetmap.josm.data.osm.Way;
     14import org.openstreetmap.josm.data.osm.WayData;
    1415import org.openstreetmap.josm.tools.CheckParameterUtil;
    1516
     
    143144        return formatter.format(this);
    144145    }
     146
     147    /**
     148     * Fills the way attributes with values from this history.
     149     * @param data way data to fill
     150     * @return filled way data
     151     * @since 11878
     152     */
     153    public WayData fillPrimitiveData(WayData data) {
     154        super.fillPrimitiveCommonData(data);
     155        data.setNodes(nodeIds);
     156        return data;
     157    }
    145158}
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableCellRenderer.java

    r8510 r11878  
    1717public class ChangesetContentTableCellRenderer extends AbstractCellRenderer {
    1818
     19    /**
     20     * Renders primitive modification type.
     21     * @param type modification type
     22     */
    1923    protected void renderModificationType(ChangesetModificationType type) {
    2024        switch(type) {
     
    3539        switch(column) {
    3640        case 0:
    37             ChangesetModificationType type = (ChangesetModificationType) value;
    38             renderModificationType(type);
     41            renderModificationType((ChangesetModificationType) value);
    3942            break;
    4043        case 1:
    41             HistoryOsmPrimitive primitive = (HistoryOsmPrimitive) value;
    42             renderId(primitive.getId());
     44            renderId(((HistoryOsmPrimitive) value).getId());
    4345            break;
    4446        default:
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java

    r10619 r11878  
    1818/**
    1919 * This is the table model for the content of a changeset.
    20  *
     20 * @since 2689
    2121 */
    2222public class ChangesetContentTableModel extends AbstractTableModel {
     
    2525    private final DefaultListSelectionModel selectionModel;
    2626
     27    /**
     28     * Constructs a new {@code ChangesetContentTableModel}.
     29     * @param selectionModel selection model
     30     */
    2731    public ChangesetContentTableModel(DefaultListSelectionModel selectionModel) {
    2832        this.selectionModel = selectionModel;
     
    3842    }
    3943
     44    /**
     45     * Selects a single item by its index.
     46     * @param row index
     47     */
    4048    public void setSelectedByIdx(int row) {
    4149        selectionModel.setSelectionInterval(row, row);
     
    5058    }
    5159
     60    /**
     61     * Returns the selected history primitives.
     62     * @return the selected history primitives
     63     */
    5264    public Set<HistoryOsmPrimitive> getSelectedPrimitives() {
    5365        Set<HistoryOsmPrimitive> ret = new HashSet<>();
     
    7890    }
    7991
     92    /**
     93     * Sort data.
     94     */
    8095    protected void sort() {
    8196        data.sort((c1, c2) -> {
     
    130145     * The type used internally to keep information about {@link HistoryOsmPrimitive}
    131146     * with their {@link ChangesetModificationType}.
    132      *
    133147     */
    134148    private static class ChangesetContentEntry implements ChangesetDataSetEntry {
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java

    r11848 r11878  
    1717import java.text.DateFormat;
    1818import java.util.Collections;
     19import java.util.Date;
    1920import java.util.HashSet;
    2021import java.util.Set;
     
    238239        DateFormat sdf = DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.SHORT);
    239240
    240         tfCreatedOn.setText(cs.getCreatedAt() == null ? "" : sdf.format(cs.getCreatedAt()));
    241         tfClosedOn.setText(cs.getClosedAt() == null ? "" : sdf.format(cs.getClosedAt()));
     241        Date createdDate = cs.getCreatedAt();
     242        Date closedDate = cs.getClosedAt();
     243        tfCreatedOn.setText(createdDate == null ? "" : sdf.format(createdDate));
     244        tfClosedOn.setText(closedDate == null ? "" : sdf.format(closedDate));
    242245    }
    243246
  • trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java

    r11059 r11878  
    231231        protected final Pair<LatLon, LatLon> getCoordinates() {
    232232            HistoryOsmPrimitive p = getPrimitive();
     233            if (!(p instanceof HistoryNode)) return null;
    233234            HistoryOsmPrimitive opposite = getOppositePrimitive();
    234             if (!(p instanceof HistoryNode)) return null;
    235235            if (!(opposite instanceof HistoryNode)) return null;
    236236            HistoryNode node = (HistoryNode) p;
  • trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java

    r11848 r11878  
    66import java.awt.Component;
    77import java.text.DateFormat;
     8import java.util.Date;
    89
    910import javax.swing.ImageIcon;
     
    3738        StringBuilder sb = new StringBuilder(64);
    3839        sb.append("<html><strong>").append(tr("Changeset id:")).append("</strong>").append(cs.getId()).append("<br>");
    39         if (cs.getCreatedAt() != null) {
     40        Date createdDate = cs.getCreatedAt();
     41        if (createdDate != null) {
    4042            sb.append("<strong>").append(tr("Created at:")).append("</strong>").append(
    41                     DateUtils.formatDateTime(cs.getCreatedAt(), DateFormat.SHORT, DateFormat.SHORT)).append("<br>");
     43                    DateUtils.formatDateTime(createdDate, DateFormat.SHORT, DateFormat.SHORT)).append("<br>");
    4244        }
    4345        String comment = cs.get("comment");
  • trunk/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java

    r10611 r11878  
    9191
    9292    public void setRange(Date dateMin, Date dateMax) {
    93         this.dateMin = dateMin;
    94         this.dateMax = dateMax;
     93        this.dateMin = DateUtils.cloneDate(dateMin);
     94        this.dateMax = DateUtils.cloneDate(dateMax);
    9595    }
    9696
    9797    public void setDate(Date date) {
    98         spinner.setValue(date);
     98        spinner.setValue(DateUtils.cloneDate(date));
    9999    }
    100100
    101101    public Date getDate() {
    102         return (Date) spinner.getValue();
     102        return DateUtils.cloneDate((Date) spinner.getValue());
    103103    }
    104104
  • trunk/src/org/openstreetmap/josm/io/ChangesetClosedException.java

    r8836 r11878  
    121121        this.source = source == null ? Source.UNSPECIFIED : source;
    122122        this.changesetId = changesetId;
    123         this.closedOn = closedOn;
     123        this.closedOn = DateUtils.cloneDate(closedOn);
    124124    }
    125125
     
    139139     */
    140140    public Date getClosedOn() {
    141         return closedOn;
     141        return DateUtils.cloneDate(closedOn);
    142142    }
    143143
  • trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java

    r11381 r11878  
    184184    public ChangesetQuery closedAfter(Date d) {
    185185        CheckParameterUtil.ensureParameterNotNull(d, "d");
    186         this.closedAfter = d;
     186        this.closedAfter = DateUtils.cloneDate(d);
    187187        return this;
    188188    }
     
    202202        CheckParameterUtil.ensureParameterNotNull(closedAfter, "closedAfter");
    203203        CheckParameterUtil.ensureParameterNotNull(createdBefore, "createdBefore");
    204         this.closedAfter = closedAfter;
    205         this.createdBefore = createdBefore;
     204        this.closedAfter = DateUtils.cloneDate(closedAfter);
     205        this.createdBefore = DateUtils.cloneDate(createdBefore);
    206206        return this;
    207207    }
  • trunk/src/org/openstreetmap/josm/io/OsmWriter.java

    r11709 r11878  
    88import java.util.Collection;
    99import java.util.Comparator;
     10import java.util.Date;
    1011import java.util.List;
    1112import java.util.Map.Entry;
     
    242243            out.print(" uid='"+cs.getUser().getId() +'\'');
    243244        }
    244         if (cs.getCreatedAt() != null) {
    245             out.print(" created_at='"+DateUtils.fromDate(cs.getCreatedAt()) +'\'');
    246         }
    247         if (cs.getClosedAt() != null) {
    248             out.print(" closed_at='"+DateUtils.fromDate(cs.getClosedAt()) +'\'');
     245        Date createdDate = cs.getCreatedAt();
     246        if (createdDate != null) {
     247            out.print(" created_at='"+DateUtils.fromDate(createdDate) +'\'');
     248        }
     249        Date closedDate = cs.getClosedAt();
     250        if (closedDate != null) {
     251            out.print(" closed_at='"+DateUtils.fromDate(closedDate) +'\'');
    249252        }
    250253        out.print(" open='"+ (cs.isOpen() ? "true" : "false") +'\'');
  • trunk/src/org/openstreetmap/josm/tools/HttpClient.java

    r11553 r11878  
    1414import java.net.HttpURLConnection;
    1515import java.net.URL;
     16import java.util.Arrays;
    1617import java.util.Collections;
    1718import java.util.List;
     
    558559     */
    559560    public HttpClient setRequestBody(byte[] requestBody) {
    560         this.requestBody = requestBody;
     561        this.requestBody = Arrays.copyOf(requestBody, requestBody.length);
    561562        return this;
    562563    }
  • trunk/src/org/openstreetmap/josm/tools/date/DateUtils.java

    r11620 r11878  
    163163    }
    164164
     165    /**
     166     * Null-safe date cloning method.
     167     * @param d date to clone, or null
     168     * @return cloned date, or null
     169     * @since 11878
     170     */
     171    public static Date cloneDate(Date d) {
     172        return d != null ? (Date) d.clone() : null;
     173    }
     174
    165175    private static boolean checkLayout(String text, String pattern) {
    166176        if (text.length() != pattern.length())
  • trunk/test/unit/org/openstreetmap/josm/data/osm/ChangesetDataSetTest.java

    r11121 r11878  
    5353        // object with various items and modification types, fetch for CREATED
    5454        // => list containing only the CREATED item
    55         HistoryOsmPrimitive prim1 = new HistoryNode(1, 1, true, User.getAnonymous(), 1, new Date(), LatLon.ZERO);
    56         HistoryOsmPrimitive prim2 = new HistoryNode(2, 1, true, User.createLocalUser("test"), 1, new Date(), LatLon.NORTH_POLE);
    57         HistoryOsmPrimitive prim3 = new HistoryNode(3, 1, true, User.getAnonymous(), 1, new Date(), LatLon.SOUTH_POLE);
     55        HistoryNode prim1 = new HistoryNode(1, 1, true, User.getAnonymous(), 1, new Date(), LatLon.ZERO);
     56        HistoryNode prim2 = new HistoryNode(2, 1, true, User.createLocalUser("test"), 1, new Date(), LatLon.NORTH_POLE);
     57        HistoryNode prim3 = new HistoryNode(3, 1, true, User.getAnonymous(), 1, new Date(), LatLon.SOUTH_POLE);
    5858        cds.put(prim1, ChangesetModificationType.CREATED);
    5959        cds.put(prim2, ChangesetModificationType.DELETED);
Note: See TracChangeset for help on using the changeset viewer.