From b5b2e0919eae05202949c29c95dcdc480f739371 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 24 Dec 2012 21:17:47 +0400 Subject: [PATCH] IDEA-72105 User defined maven archetypes won't updates --- .../maven/indices/MavenIndicesManager.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java index ce2793d3d28b..5ede2581b2cd 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java @@ -324,7 +324,15 @@ public class MavenIndicesManager { public synchronized void addArchetype(MavenArchetype archetype) { ensureInitialized(); - myUserArchetypes.add(archetype); + + int idx = myUserArchetypes.indexOf(archetype); + if (idx >= 0) { + myUserArchetypes.set(idx, archetype); + } + else { + myUserArchetypes.add(archetype); + } + saveUserArchetypes(); } @@ -336,8 +344,14 @@ public class MavenIndicesManager { Document doc = JDOMUtil.loadDocument(file); Element root = doc.getRootElement(); if (root == null) return; - List result = new ArrayList(); - for (Element each : (Iterable)root.getChildren(ELEMENT_ARCHETYPE)) { + + // Store artifact to set to remove duplicate created by old IDEA (http://youtrack.jetbrains.com/issue/IDEA-72105) + Collection result = new LinkedHashSet(); + + List children = root.getChildren(ELEMENT_ARCHETYPE); + for (int i = children.size() - 1; i >= 0; i--) { + Element each = children.get(i); + String groupId = each.getAttributeValue(ELEMENT_GROUP_ID); String artifactId = each.getAttributeValue(ELEMENT_ARTIFACT_ID); String version = each.getAttributeValue(ELEMENT_VERSION); @@ -353,7 +367,10 @@ public class MavenIndicesManager { result.add(new MavenArchetype(groupId, artifactId, version, repository, description)); } - myUserArchetypes = result; + ArrayList listResult = new ArrayList(result); + Collections.reverse(listResult); + + myUserArchetypes = listResult; } catch (IOException e) { MavenLog.LOG.warn(e);