You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2013/07/22 14:25:47 UTC
svn commit: r1505675 -
/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java
Author: stefanegli
Date: Mon Jul 22 12:25:47 2013
New Revision: 1505675
URL: http://svn.apache.org/r1505675
Log:
SLING-2967 : make topology announcement independent of machine time: reverting previous change but instead now resetting created time on persistTo
Modified:
sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java
Modified: sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java?rev=1505675&r1=1505674&r2=1505675&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/topology/announcement/Announcement.java Mon Jul 22 12:25:47 2013
@@ -241,6 +241,7 @@ public class Announcement {
final JSONArray subAnnouncements = announcement
.getJSONArray("topologyAnnouncements");
+ final Long created = announcement.getLong("created");
if (announcement.has("inherited")) {
final Boolean inherited = announcement.getBoolean("inherited");
result.inherited = inherited;
@@ -249,6 +250,7 @@ public class Announcement {
String serverInfo = announcement.getString("serverInfo");
result.serverInfo = serverInfo;
}
+ result.created = created;
result.setLocalCluster(localClusterView);
for (int i = 0; i < subAnnouncements.length(); i++) {
String subAnnouncementJSON = subAnnouncements.getString(i);
@@ -369,18 +371,38 @@ public class Announcement {
public void persistTo(Resource announcementsResource)
throws PersistenceException, JSONException {
Resource announcementChildResource = announcementsResource.getChild(getPrimaryKey());
- if (announcementChildResource==null) {
+ // SLING-2967 : when persisting, reset 'created' to the current time
+ resetCreatedTime();
+ final String announcementJson = asJSON();
+ if (announcementChildResource==null) {
final ResourceResolver resourceResolver = announcementsResource.getResourceResolver();
Map<String, Object> properties = new HashMap<String, Object>();
- properties.put("topologyAnnouncement", asJSON());
+ properties.put("topologyAnnouncement", announcementJson);
resourceResolver.create(announcementsResource, getPrimaryKey(), properties);
} else {
final ModifiableValueMap announcementChildMap = announcementChildResource.adaptTo(ModifiableValueMap.class);
- announcementChildMap.put("topologyAnnouncement", asJSON());
+ announcementChildMap.put("topologyAnnouncement", announcementJson);
}
}
/**
+ * SLING-2967 : Reset the field 'created' to the current local machine time
+ */
+ private void resetCreatedTime() {
+ created = System.currentTimeMillis();
+ if (incomings!=null) {
+ // also loop through the incoming announcements,
+ // as those contain created times of maybe even other
+ // machines
+ final Iterator<Announcement> it = incomings.iterator();
+ while(it.hasNext()) {
+ Announcement incomingAnnouncement = it.next();
+ incomingAnnouncement.resetCreatedTime();
+ }
+ }
+ }
+
+ /**
* Remove all announcements that match the given owner Id
*/
public void removeInherited(final String ownerId) {