Lines 46-52
Link Here
|
46 |
import java.awt.event.ActionEvent; |
46 |
import java.awt.event.ActionEvent; |
47 |
import java.beans.PropertyChangeEvent; |
47 |
import java.beans.PropertyChangeEvent; |
48 |
import java.beans.PropertyChangeListener; |
48 |
import java.beans.PropertyChangeListener; |
49 |
import java.io.IOException; |
|
|
50 |
import java.lang.reflect.Method; |
49 |
import java.lang.reflect.Method; |
51 |
import java.util.ArrayList; |
50 |
import java.util.ArrayList; |
52 |
import java.util.Arrays; |
51 |
import java.util.Arrays; |
Lines 107-113
Link Here
|
107 |
import org.netbeans.modules.maven.model.pom.Scm; |
106 |
import org.netbeans.modules.maven.model.pom.Scm; |
108 |
import org.netbeans.modules.maven.model.pom.Site; |
107 |
import org.netbeans.modules.maven.model.pom.Site; |
109 |
import org.netbeans.modules.maven.model.pom.StringList; |
108 |
import org.netbeans.modules.maven.model.pom.StringList; |
110 |
import org.netbeans.modules.xml.xam.Model; |
|
|
111 |
import org.openide.nodes.AbstractNode; |
109 |
import org.openide.nodes.AbstractNode; |
112 |
import org.openide.nodes.Children; |
110 |
import org.openide.nodes.Children; |
113 |
import org.openide.nodes.Node; |
111 |
import org.openide.nodes.Node; |
Lines 150-174
Link Here
|
150 |
@Override |
148 |
@Override |
151 |
public void visit(Project target) { |
149 |
public void visit(Project target) { |
152 |
Project t = target; |
150 |
Project t = target; |
153 |
if (t != null && (!t.isInDocumentModel() || !t.getModel().getState().equals(Model.State.VALID))) { |
|
|
154 |
POMModel mdl = t.getModel(); |
155 |
if (!mdl.getState().equals(Model.State.VALID)) { |
156 |
try { |
157 |
mdl.sync(); |
158 |
} catch (IOException ex) { |
159 |
LOG.log(Level.INFO, null, ex); |
160 |
} |
161 |
} |
162 |
t = t.getModel().getProject(); |
163 |
} |
164 |
//ordered by appearance in pom schema.. |
151 |
//ordered by appearance in pom schema.. |
165 |
POMQNames names = parent.getPOMQNames(); |
152 |
POMQNames names = parent.getPOMQNames(); |
166 |
try { |
|
|
167 |
checkChildString(names.MODELVERSION, NbBundle.getMessage(POMModelVisitor.class, "MODEL_VERSION"), t != null ? t.getModelVersion() : null); |
153 |
checkChildString(names.MODELVERSION, NbBundle.getMessage(POMModelVisitor.class, "MODEL_VERSION"), t != null ? t.getModelVersion() : null); |
168 |
} catch (IllegalStateException x) { |
|
|
169 |
LOG.log(Level.WARNING, "#190041: invalid model: {0}", x.toString()); |
170 |
return; |
171 |
} |
172 |
checkChildString(names.GROUPID, NbBundle.getMessage(POMModelVisitor.class, "GROUPID"), t != null ? t.getGroupId() : null); |
154 |
checkChildString(names.GROUPID, NbBundle.getMessage(POMModelVisitor.class, "GROUPID"), t != null ? t.getGroupId() : null); |
173 |
checkChildString(names.ARTIFACTID, NbBundle.getMessage(POMModelVisitor.class, "ARTIFACTID"), t != null ? t.getArtifactId() : null); |
155 |
checkChildString(names.ARTIFACTID, NbBundle.getMessage(POMModelVisitor.class, "ARTIFACTID"), t != null ? t.getArtifactId() : null); |
174 |
if (count == 0 && t != null && t.getPackaging() != null) { |
156 |
if (count == 0 && t != null && t.getPackaging() != null) { |
Lines 1471-1486
Link Here
|
1471 |
private List<POMCutHolder> rescan(POMModelVisitor visitor) { |
1453 |
private List<POMCutHolder> rescan(POMModelVisitor visitor) { |
1472 |
try { |
1454 |
try { |
1473 |
Method m = POMModelVisitor.class.getMethod("visit", type); //NOI18N |
1455 |
Method m = POMModelVisitor.class.getMethod("visit", type); //NOI18N |
1474 |
POMModel[] models = parentHolder.getSource(); |
1456 |
for (Object cut : parentHolder.getCutValues()) { |
1475 |
Object[] cuts = parentHolder.getCutValues(); |
|
|
1476 |
for (int i = 0; i < cuts.length; i++) { |
1477 |
Object cut = cuts[i]; |
1478 |
// prevent deadlock 185923 |
1479 |
if (cut != null && !type.isInstance(cut)) { |
1457 |
if (cut != null && !type.isInstance(cut)) { |
1480 |
LOG.log(Level.WARNING, "#185428: {0} is not assignable to {1}", new Object[] {cut, type}); |
1458 |
LOG.log(Level.WARNING, "#185428: {0} is not assignable to {1}", new Object[] {cut, type}); |
1481 |
continue; |
1459 |
continue; |
1482 |
} |
1460 |
} |
1483 |
synchronized (i < models.length ? models[i] : /*#192042*/new Object()) { |
1461 |
if (cut instanceof POMComponent) { |
|
|
1462 |
POMModel model = ((POMComponent) cut).getModel(); |
1463 |
if (model.startTransaction()) { |
1464 |
try { |
1465 |
if (!((POMComponent) cut).isInDocumentModel()) { |
1466 |
LOG.log(Level.WARNING, "#190041: entry of {0} is no longer valid, skipping", type.getSimpleName()); |
1467 |
continue; |
1468 |
} |
1469 |
switch (model.getState()) { |
1470 |
case VALID: |
1471 |
m.invoke(visitor, cut); |
1472 |
break; |
1473 |
default: |
1474 |
LOG.log(Level.WARNING, "skipping invalid ({0}) model", model.getState()); |
1475 |
} |
1476 |
} finally { |
1477 |
model.endTransaction(); |
1478 |
} |
1479 |
} else { |
1480 |
LOG.warning("could not start transaction"); |
1481 |
} |
1482 |
} else { |
1483 |
// XXX is this even possible? |
1484 |
m.invoke(visitor, cut); |
1484 |
m.invoke(visitor, cut); |
1485 |
} |
1485 |
} |
1486 |
} |
1486 |
} |