import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Iterator;
import java.util.List;
import java.util.ResourceBundle;
// Add additional documents used by the current version
for (Relation usesRel : doc.getRelations(UsesRelation.class)) {
Document used = (Document) usesRel.getTo();
- if (!_defuses.contains(getPublicationService().getLastVersion(used, tag.getOwner()))) {
- _defuses.add(used);
+ Document lastVersion = getPublicationService().getLastVersion(used, tag.getOwner());
+ if (lastVersion != null && !_defuses.contains(lastVersion)) {
+ _defuses.add(lastVersion);
}
}
// Avoid recursive using of the document
if (_defuses.contains(doc)) {
_defuses.remove(doc);
}
+
+ // Avoid using of documents dependent on the current version of the document being versioned
+ // (This case is possible only if both documents belong to the step of the same Project Element)
+ for(Iterator<Document> document = _defuses.iterator(); document.hasNext(); ) {
+ Publication pub = tag.getOwner().getPublication(document.next());
+ if(pub != null && pub.getRelations(UsesRelation.class).contains(tag)) {
+ document.remove();
+ }
+ }
+
// Setup dependencies
_usedby.addAll(tag.getRelations(UsedByRelation.class));