JBoss Tools SVN: r28263 - in workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core: jobs and 1 other directories.
by jbosstools-commits@lists.jboss.org
Author: rob.stryker(a)jboss.com
Date: 2011-01-14 19:32:34 -0500 (Fri, 14 Jan 2011)
New Revision: 28263
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonBuildsJob.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/AbstractHudsonListener.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HeirarchyModel.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/IHudsonListener.java
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/Activator.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonServer.java
Log:
nicks hudson tools
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/Activator.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/Activator.java 2011-01-15 00:30:33 UTC (rev 28262)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/Activator.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -1,6 +1,8 @@
package org.jboss.tools.hudson.manager.core;
import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.jboss.tools.hudson.manager.core.model.HeirarchyModel;
+import org.jboss.tools.hudson.manager.core.model.HudsonModel;
import org.osgi.framework.BundleContext;
/**
@@ -27,6 +29,7 @@
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
+ HudsonModel.getInstance().addListener(HeirarchyModel.getModel());
}
/*
@@ -34,6 +37,7 @@
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
+ HudsonModel.getInstance().removeListener(HeirarchyModel.getModel());
plugin = null;
super.stop(context);
}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonBuildsJob.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonBuildsJob.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/jobs/LoadHudsonBuildsJob.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -0,0 +1,30 @@
+package org.jboss.tools.hudson.manager.core.jobs;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonServer;
+
+public class LoadHudsonBuildsJob extends Job {
+ private Runnable postJob = null;
+ private HudsonJob job;
+ public LoadHudsonBuildsJob(HudsonJob job) {
+ super("Load Hudson Builds");
+ this.job = job;
+ }
+
+ public LoadHudsonBuildsJob(HudsonJob job, Runnable r) {
+ this(job);
+ postJob = r;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ job.getDetails().getBuilds();
+ if( postJob != null )
+ postJob.run();
+ return Status.OK_STATUS;
+ }
+}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/AbstractHudsonListener.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/AbstractHudsonListener.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/AbstractHudsonListener.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -0,0 +1,8 @@
+package org.jboss.tools.hudson.manager.core.model;
+
+public class AbstractHudsonListener implements IHudsonListener {
+
+ public void jobFetched(HudsonJob job) {
+ }
+
+}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HeirarchyModel.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HeirarchyModel.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HeirarchyModel.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -0,0 +1,81 @@
+package org.jboss.tools.hudson.manager.core.model;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
+
+public class HeirarchyModel extends AbstractHudsonListener {
+ private static HeirarchyModel model;
+ public static HeirarchyModel getModel() {
+ if( model == null ) {
+ model = new HeirarchyModel();
+ }
+ return model;
+ }
+
+ private HashMap<String, JobHeirarchyNode> map = new HashMap<String, JobHeirarchyNode>();
+ public HeirarchyModel() {
+
+ }
+
+ public void setHeirarchyData(HudsonJob job, String[] upstream, String[] downstream) {
+ map.put(job.getTrimUrl(), new JobHeirarchyNode(job, upstream, downstream));
+ }
+
+ public void setHeirarchyData(HudsonJob job, JobHeirarchyNode node) {
+ map.put(job.getTrimUrl(), node);
+ }
+
+ public JobHeirarchyNode getHeirarchyNode(String url, boolean force) {
+ JobHeirarchyNode node = map.get(url);
+ if( url == null && force ) {
+ // TODO
+ }
+ return node;
+ }
+
+ public static JobHeirarchyNode createHeirarchyData(Document doc, HudsonJob j) {
+ ArrayList<String> down = new ArrayList<String>();
+ for (Element job : (List<Element>) doc.getRootElement().elements("downstreamProject")) {
+ down.add(job.elementTextTrim("name"));
+ }
+
+ ArrayList<String> up = new ArrayList<String>();
+ for (Element job : (List<Element>) doc.getRootElement().elements("upstreamProject")) {
+ up.add(job.elementTextTrim("name"));
+ }
+ return new JobHeirarchyNode(j,
+ (String[]) up.toArray(new String[up.size()]),
+ (String[]) down.toArray(new String[down.size()]));
+ }
+
+ public void jobFetched(HudsonJob job2) {
+ System.out.println("jobFetched here");
+ Document d = job2.getDetails().getDocument();
+ JobHeirarchyNode node = createHeirarchyData(d, job2);
+ setHeirarchyData(job2, node);
+ }
+
+ public static class JobHeirarchyNode {
+ private HudsonJob job;
+ private String[] upstream;
+ private String[] downstream;
+ public JobHeirarchyNode(HudsonJob job, String[] upstream, String[] downstream) {
+ this.upstream = upstream;
+ this.downstream = downstream;
+ }
+ public HudsonJob getJob() {
+ return job;
+ }
+ public String[] getUpstream() {
+ return upstream;
+ }
+ public String[] getDownstream() {
+ return downstream;
+ }
+ }
+}
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java 2011-01-15 00:30:33 UTC (rev 28262)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonJob.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -12,6 +12,7 @@
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
public class HudsonJob {
@@ -24,6 +25,9 @@
this.furl = url;
this.fcolor = color;
}
+ public static String getTrimJobUrl(HudsonServer server, String name) {
+ return server.getTrimUrl() + "job" + Path.SEPARATOR + name + Path.SEPARATOR + HudsonModel.API_XML_DEPT_1;
+ }
public HudsonServer getServer() {
return fserver;
}
@@ -40,25 +44,26 @@
public boolean detailsLoaded() {
return fdetails != null;
}
+ public void clearDetails() {
+ fdetails = null;
+ }
public JobExtendedDetails getDetails() {
if( fdetails == null ) {
fdetails = loadDetails();
+ HudsonModel.getInstance().fireJobFetched(this);
}
- if( fdetails == null ) {
- System.out.println("WAIT");
- }
return fdetails;
}
+ public String getTrimUrl() {
+ return getTrimJobUrl(getServer(), getName());
+ }
+
private JobExtendedDetails loadDetails() {
try {
- String url = fserver.getUrl() + "job" + Path.SEPARATOR + fname + Path.SEPARATOR + HudsonModel.API_XML_DEPT_1;
- URL url2 = new URL(url);
- Document dom;
- dom = new SAXReader().read(url2);
- String xml = dom.asXML();
- return new JobExtendedDetails(this, xml);
+ HudsonModel.getInstance().getDocumentRepository().getDocumentClean(getTrimUrl());
+ return new JobExtendedDetails(this);
} catch( Exception e) {
e.printStackTrace();
}
@@ -67,11 +72,9 @@
public static class JobExtendedDetails {
private HudsonJob fjob;
- private String fxml;
private JobBuild[] builds = null;
- public JobExtendedDetails(HudsonJob job, String xml) {
+ public JobExtendedDetails(HudsonJob job) {
this.fjob = job;
- this.fxml = xml;
loadBuilds();
}
@@ -96,23 +99,19 @@
builds = (JobBuild[]) list.toArray(new JobBuild[list.size()]);
}
- private Document getDocument() {
- Document document = null;
- try {
- document = DocumentHelper.parseText( fxml );
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- return document;
+ public Document getDocument() {
+ return HudsonModel.getInstance().getDocumentRepository().getDocument(fjob.getTrimUrl());
}
}
public static class JobBuild {
private Element job;
- private BuildCause cause = null;
+ private BuildCause[] causes = null;
+ private SVNChangeSet changeSet = null;
public JobBuild(Element job) {
this.job = job;
- getBuildCause();
+ getBuildCauses();
+ getSVNChangeSet();
}
public Element getElement() {
return job;
@@ -137,14 +136,180 @@
public String getBuiltOn() {
return job.elementText("builtOn");
}
- public BuildCause getBuildCause() {
- if( cause == null ) {
- cause = new BuildCause(this);
+ public BuildCause getFirstBuildCause() {
+ return getBuildCauses().length > 0 ? getBuildCauses()[0] : null;
+ }
+ public BuildCause[] getBuildCauses() {
+ if( causes == null ) {
+ List list = getElement().selectNodes(BuildCause.ACTION_CAUSE);
+ if( list.size() > 0 ) {
+ ArrayList<BuildCause> causes = new ArrayList<BuildCause>();
+ for( int i = 0; i < list.size(); i++ ) {
+ causes.add(new BuildCause(this, (Node)list.get(i)));
+ }
+ this.causes = causes.toArray(new BuildCause[causes.size()]);
+ }
}
- return cause;
+ return causes;
}
+ public SVNChangeSet getSVNChangeSet() {
+ if( changeSet == null ) {
+ changeSet = new SVNChangeSet(this);
+ }
+ return changeSet;
+ }
}
+ public static class SVNChangeSet {
+ private JobBuild build;
+ private String kind;
+ private ChangeSetItem[] items;
+ private ChangeSetRevision[] revisions;
+ public SVNChangeSet(JobBuild build) {
+ String xml = build.getElement().asXML();
+ this.build = build;
+ List a2 = this.build.getElement().selectNodes("changeSet");
+ if( a2.size() == 1 ) {
+ Element changeSetElement = (Element)a2.get(0);
+ kind = changeSetElement.elementText("kind");
+ loadItems(changeSetElement);
+ loadRevisions(changeSetElement);
+
+ }
+ }
+
+ private void loadItems(Element changeSetElement) {
+ List list = changeSetElement.selectNodes("item");
+ ArrayList<ChangeSetItem> itemList = new ArrayList<ChangeSetItem>();
+ for( int i = 0; i < list.size(); i++ ) {
+ itemList.add(new ChangeSetItem(this, (Node)list.get(i)));
+ }
+ items = itemList.toArray(new ChangeSetItem[itemList.size()]);
+ }
+
+ private void loadRevisions(Element changeSetElement) {
+ List rList = changeSetElement.selectNodes("revision");
+ ArrayList<ChangeSetRevision> rList2 = new ArrayList<ChangeSetRevision>();
+ for( int i = 0; i < rList.size(); i++ ) {
+ rList2.add(new ChangeSetRevision(this, (Node)rList.get(i)));
+ }
+ // sort
+ Comparator<ChangeSetRevision> c = new Comparator<ChangeSetRevision>() {
+ public int compare(ChangeSetRevision o1,
+ ChangeSetRevision o2) {
+ int a = o1.getRelevantFileChanges().length;
+ int b = o2.getRelevantFileChanges().length;
+ return b-a;
+ }
+
+ };
+ Collections.sort(rList2, c);
+ revisions = rList2.toArray(new ChangeSetRevision[rList2.size()]);
+ }
+ public ChangeSetItem[] getChangeSetItems() {
+ return items;
+ }
+ public ChangeSetRevision[] getChangeSetRevisions() {
+ return revisions;
+ }
+ }
+
+ public static class ChangeSetItem {
+ private SVNChangeSet set;
+ private String date, message, revision, user;
+ private String[] changedPaths;
+ public ChangeSetItem(SVNChangeSet set, Node n) {
+ this.set = set;
+ date = ((Element)n).elementText("date");
+ message = ((Element)n).elementText("msg");
+ revision = ((Element)n).elementText("revision");
+ user = ((Element)n).elementText("user");
+ List fileList = ((Element)n).selectNodes("path");
+ ArrayList<String> fList = new ArrayList<String>();
+ for( int i = 0; i < fileList.size(); i++ ) {
+ fList.add(((Element)fileList.get(i)).elementTextTrim("file"));
+ }
+ changedPaths = (String[]) fList.toArray(new String[fList.size()]);
+ }
+ public String[] getChangedPaths() {
+ return changedPaths;
+ }
+ public SVNChangeSet getSet() {
+ return set;
+ }
+ public String getDate() {
+ return date;
+ }
+ public String getMessage() {
+ return message;
+ }
+ public String getRevision() {
+ return revision;
+ }
+ public String getUser() {
+ return user;
+ }
+ }
+
+ public static class ChangeSetRevision {
+ private SVNChangeSet set;
+ private String rNum, module;
+ private ChangeSetItemPathPair[] pairs;
+ public ChangeSetRevision(SVNChangeSet set, Node n) {
+ this.set = set;
+ this.rNum = ((Element)n).elementTextTrim("revision");
+ this.module = ((Element)n).elementTextTrim("module");
+ }
+ public SVNChangeSet getSet() {
+ return set;
+ }
+ public String getrNum() {
+ return rNum;
+ }
+ public String getModule() {
+ return module;
+ }
+ public ChangeSetItemPathPair[] getRelevantFileChanges() {
+ if( pairs == null )
+ loadPairs();
+ return pairs;
+ }
+ private void loadPairs() {
+ IPath modPath = new Path(module);
+ String lastSegment = modPath.lastSegment();
+ modPath = modPath.removeLastSegments(1);
+ String lastSegment2 = modPath.lastSegment();
+ String suffix = Path.SEPARATOR + lastSegment2 + Path.SEPARATOR + lastSegment;
+ ChangeSetItem[] items = set.getChangeSetItems();
+ ArrayList<ChangeSetItemPathPair> pairs = new ArrayList<ChangeSetItemPathPair>();
+ for( int i = 0; i < items.length; i++ ) {
+ String[] changedPaths = items[i].getChangedPaths();
+ for( int j = 0; j < changedPaths.length; j++ ) {
+ if( changedPaths[j].startsWith(suffix)) {
+ pairs.add(new ChangeSetItemPathPair(items[i], changedPaths[j]));
+ }
+ }
+ }
+
+ this.pairs = pairs.toArray(new ChangeSetItemPathPair[pairs.size()]);
+ }
+ }
+
+ public static class ChangeSetItemPathPair {
+ private ChangeSetItem item;
+ private String path;
+ public ChangeSetItemPathPair(ChangeSetItem item, String path) {
+ this.item = item;
+ this.path = path;
+ }
+ public ChangeSetItem getItem() {
+ return item;
+ }
+ public String getPath() {
+ return path;
+ }
+ }
+
public static class BuildCause {
public static final int KICKED_BY_USER_TYPE = 0;
public static final int SVN_CHANGE_TYPE = 1;
@@ -160,8 +325,9 @@
private JobBuild build;
private int type = -1;
private Node cause;
- public BuildCause(JobBuild build) {
+ public BuildCause(JobBuild build, Node cause) {
this.build = build;
+ this.cause = cause;
setType();
// System.out.println(build.getId());
// System.out.println(" " + getType());
@@ -173,23 +339,15 @@
}
protected void setType() {
- String xml = build.getElement().asXML();
- List list = build.getElement().selectNodes(ACTION_CAUSE);
- if( list.size() > 0 ) {
- if( list.size() == 2)
- cause = (Node)list.get(1);
- else
- cause = (Node)list.get(0);
- List child = cause.selectNodes(USERNAME);
- if( child.size() > 0 ) {
- type = KICKED_BY_USER_TYPE;
- } else {
- child = cause.selectNodes(UPSTREAM_BUILD);
- if( list.size() > 0 )
- type = UPSTREAM_PROJECT_TYPE;
- else
- type = SVN_CHANGE_TYPE;
- }
+ List child = cause.selectNodes(USERNAME);
+ if( child.size() > 0 ) {
+ type = KICKED_BY_USER_TYPE;
+ } else {
+ child = cause.selectNodes(UPSTREAM_BUILD);
+ if( child.size() > 0 )
+ type = UPSTREAM_PROJECT_TYPE;
+ else
+ type = SVN_CHANGE_TYPE;
}
}
public int getType() {
@@ -217,16 +375,4 @@
return getCauseNode(USERNAME);
}
}
-
-// public static class OtherProject {
-// public static final boolean UP_STREAM = true;
-// public static final boolean DOWN_STREAM = false;
-// private boolean fdirection;
-// private String fname, furl;
-// public OtherProject(boolean direction, String name, String url) {
-// this.fdirection = direction;
-// this.fname = name;
-// this.furl = url;
-// }
-// }
}
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java 2011-01-15 00:30:33 UTC (rev 28262)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonModel.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -1,8 +1,15 @@
package org.jboss.tools.hudson.manager.core.model;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.io.SAXReader;
+
public class HudsonModel {
public static final String API_XML = "api/xml";
public static final String API_XML_DEPT_1 = API_XML + "?depth=1";
@@ -16,10 +23,19 @@
}
private ArrayList<HudsonServer> hudsons = null;
+ private ArrayList<IHudsonListener> listeners = new ArrayList<IHudsonListener>();
public HudsonModel() {
}
+ public void addListener(IHudsonListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeListener(IHudsonListener listener) {
+ listeners.remove(listener);
+ }
+
public boolean isInitialized() {
return hudsons != null;
}
@@ -44,10 +60,57 @@
};
}
- public static void delay(int time) {
- try {
- Thread.sleep(time);
- } catch(InterruptedException ie) {
+ private DocumentRepository docRepo;
+ public DocumentRepository getDocumentRepository() {
+ if( docRepo == null ) {
+ docRepo = new DocumentRepository();
}
+ return docRepo;
}
+
+ public static class DocumentRepository {
+ public HashMap<String, Document> repo = new HashMap<String, Document>();
+ public DocumentRepository() {
+ }
+ public void add(String url, Document document) {
+ repo.put(url, document);
+ }
+ public Document getDocument(String url) {
+ return repo.get(url);
+ }
+ public Document getDocumentForce(String url) {
+ Document d = repo.get(url);
+ if( d == null ) {
+ loadURLDocument(url);
+ }
+ return d;
+ }
+
+ public Document getDocumentClean(String url) {
+ loadURLDocument(url);
+ return repo.get(url);
+ }
+
+ public void loadURLDocument(String url) {
+ try {
+ URL url2 = new URL(url);
+ Document dom;
+ dom = new SAXReader().read(url2);
+ String xml = dom.asXML();
+ Document document = DocumentHelper.parseText( xml );
+ repo.put(url, document);
+ } catch(Exception e) {
+ // TODO log
+ }
+ }
+ }
+
+
+ void fireJobFetched(HudsonJob job) {
+ for( Iterator<IHudsonListener> i = listeners.iterator(); i.hasNext(); ) {
+ i.next().jobFetched(job);
+ }
+ }
+
+
}
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonServer.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonServer.java 2011-01-15 00:30:33 UTC (rev 28262)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/HudsonServer.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -8,6 +8,7 @@
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
+import org.eclipse.core.runtime.Path;
public class HudsonServer {
private String name;
@@ -26,6 +27,11 @@
public String getUrl() {
return url;
}
+ // get the url without a view in it
+ public String getTrimUrl() {
+ return url.replaceAll("/view/[^/]+/","/");
+ }
+
public void setUrl(String url) {
this.url = url;
}
@@ -43,6 +49,15 @@
return (HudsonJob[]) jobs.toArray(new HudsonJob[jobs.size()]);
}
+ public synchronized HudsonJob findJob(String name) {
+ HudsonJob[] serverJobs = getHudsonJobs();
+ for( int i = 0; i < serverJobs.length; i++ ) {
+ if( serverJobs[i].getName().equals(name))
+ return serverJobs[i];
+ }
+ return null;
+ }
+
/**
* Synchronous exec!!!
* @return
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/IHudsonListener.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/IHudsonListener.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/src/org/jboss/tools/hudson/manager/core/model/IHudsonListener.java 2011-01-15 00:32:34 UTC (rev 28263)
@@ -0,0 +1,5 @@
+package org.jboss.tools.hudson.manager.core.model;
+
+public interface IHudsonListener {
+ public void jobFetched(HudsonJob job);
+}
15 years, 2 months
JBoss Tools SVN: r28262 - workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views.
by jbosstools-commits@lists.jboss.org
Author: rob.stryker(a)jboss.com
Date: 2011-01-14 19:30:33 -0500 (Fri, 14 Jan 2011)
New Revision: 28262
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/ASyncContentProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/AbstractCommonNavActionProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonActionProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyActionProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyContentProvider.java
Modified:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java
Log:
nicks hudson tools what what!!!
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/ASyncContentProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/ASyncContentProvider.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/ASyncContentProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -0,0 +1,52 @@
+package org.jboss.tools.hudson.manager.ui.views;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+
+public abstract class ASyncContentProvider implements ITreeContentProvider {
+ protected TreeViewer viewer;
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ this.viewer = (TreeViewer)viewer;
+ }
+
+ protected DelayObject getDelayObject(Object parent) {
+ return new DelayObject(parent);
+ }
+
+ static class DelayObject {
+ private Object parent;
+ public DelayObject(Object parent) {
+ this.parent = parent;
+ }
+ }
+
+ protected static Runnable refreshParentRunnable(final TreeViewer v, final Object parent) {
+ return new Runnable() {
+ public void run() {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ v.refresh(parent);
+ }
+ });
+ }
+ };
+ }
+
+ @Override
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/AbstractCommonNavActionProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/AbstractCommonNavActionProvider.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/AbstractCommonNavActionProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -0,0 +1,79 @@
+package org.jboss.tools.hudson.manager.ui.views;
+
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.ui.navigator.CommonActionProvider;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.ui.navigator.ICommonViewerSite;
+import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
+
+public abstract class AbstractCommonNavActionProvider extends CommonActionProvider {
+ protected ICommonActionExtensionSite actionSite;
+ protected CommonViewer cv;
+
+ public AbstractCommonNavActionProvider() {
+ super();
+ }
+
+ public void init(ICommonActionExtensionSite aSite) {
+ super.init(aSite);
+ this.actionSite = aSite;
+ ICommonViewerSite site = aSite.getViewSite();
+ if( site instanceof ICommonViewerWorkbenchSite ) {
+ StructuredViewer v = aSite.getStructuredViewer();
+ if( v instanceof CommonViewer ) {
+ cv = (CommonViewer)v;
+ ICommonViewerWorkbenchSite wsSite = (ICommonViewerWorkbenchSite)site;
+ createActions(cv, wsSite.getSelectionProvider());
+ addDoubleClickHandler(cv);
+ }
+ }
+ }
+
+ public void dispose() {
+ super.dispose();
+ removeDoubleClickHandler();
+ }
+
+ private IDoubleClickListener doubleClickListener;
+ protected void addDoubleClickHandler(CommonViewer cv) {
+ doubleClickListener = new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickEvent(getSelection());
+ }
+ };
+ cv.addDoubleClickListener(doubleClickListener);
+ }
+
+ protected void removeDoubleClickHandler() {
+ cv.removeDoubleClickListener(doubleClickListener);
+ }
+
+ protected IStructuredSelection getSelection() {
+ ICommonViewerSite site = actionSite.getViewSite();
+ if (site instanceof ICommonViewerWorkbenchSite) {
+ ICommonViewerWorkbenchSite wsSite = (ICommonViewerWorkbenchSite) site;
+ return (IStructuredSelection)wsSite.getSelectionProvider().getSelection();
+ }
+ return null;
+ }
+
+ protected Object getSelectedItem() {
+ IStructuredSelection selection = getSelection();
+ if( selection != null )
+ return selection.getFirstElement();
+ return null;
+ }
+
+ protected void doubleClickEvent(IStructuredSelection selection) {
+ // do nothing
+ }
+
+ public abstract void fillContextMenu(IMenuManager menu);
+ public abstract void createActions(CommonViewer tableViewer, ISelectionProvider provider);
+}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonActionProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonActionProvider.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonActionProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -0,0 +1,49 @@
+package org.jboss.tools.hudson.manager.ui.views;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
+
+public class HudsonActionProvider extends AbstractCommonNavActionProvider {
+
+ private Action refreshJobAction, openBuiltOnAction;
+ public HudsonActionProvider() {
+ super();
+ }
+
+ public void fillContextMenu(IMenuManager menu) {
+ Object first = getSelection();
+ if (first == null)
+ return;
+ if( getSelectedItem() instanceof HudsonJob )
+ menu.add(refreshJobAction);
+ if( getSelectedItem() instanceof JobBuild) {
+ menu.add(openBuiltOnAction);
+ String builtOn = ((JobBuild)getSelectedItem()).getBuiltOn();
+ openBuiltOnAction.setText("Open Build Machine: "+ builtOn);
+ }
+ }
+
+ public void createActions(CommonViewer tableViewer, ISelectionProvider provider) {
+ refreshJobAction = new Action() {
+ public void run() {
+ HudsonJob job = (HudsonJob)getSelectedItem();
+ job.clearDetails();
+ cv.refresh(job);
+ }
+ };
+ refreshJobAction.setText("Refresh Job");
+ openBuiltOnAction = new Action() {
+ public void run() {
+ JobBuild build = (JobBuild)getSelectedItem();
+ String builtOn = build.getBuiltOn();
+ System.out.println(builtOn);
+ }
+ };
+ openBuiltOnAction.setText("Open Build Machine");
+ }
+ //http://hudson.qa.jboss.com/hudson/computer/dev90-linux/
+}
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java 2011-01-15 00:29:22 UTC (rev 28261)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonContentProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -1,5 +1,8 @@
package org.jboss.tools.hudson.manager.ui.views;
+import java.util.ArrayList;
+import java.util.Arrays;
+
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
@@ -8,51 +11,17 @@
import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonJobJob;
import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonModelJob;
import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.ChangeSetRevision;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
import org.jboss.tools.hudson.manager.core.model.HudsonModel;
import org.jboss.tools.hudson.manager.core.model.HudsonServer;
-public class HudsonContentProvider implements ITreeContentProvider {
- private TreeViewer v;
- @Override
- public void dispose() {
- }
+public class HudsonContentProvider extends ASyncContentProvider {
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- v = (TreeViewer)viewer;
- }
-
- @Override
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- private DelayObject getDelayObject(Object parent) {
- return new DelayObject(parent);
- }
-
- static class DelayObject {
- private Object parent;
- public DelayObject(Object parent) {
- this.parent = parent;
- }
- }
-
- private static Runnable refreshParentRunnable(final TreeViewer v, final Object parent) {
- return new Runnable() {
- public void run() {
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- v.refresh(parent);
- }
- });
- }
- };
- }
-
private Object[] handleRootElement(Object parentElement) {
if( !HudsonModel.getInstance().isInitialized()) {
final DelayObject delay = getDelayObject(parentElement);
- new LoadHudsonModelJob(refreshParentRunnable(v, parentElement)).schedule();
+ new LoadHudsonModelJob(refreshParentRunnable(viewer, parentElement)).schedule();
return new Object[]{delay};
}
return HudsonModel.getInstance().getServers();
@@ -61,7 +30,7 @@
private Object[] handleHudsonServer(HudsonServer parent) {
if( !parent.jobsLoaded()) {
DelayObject delay = getDelayObject(parent);
- new LoadHudsonJobJob(parent, refreshParentRunnable(v, parent)).schedule();
+ new LoadHudsonJobJob(parent, refreshParentRunnable(viewer, parent)).schedule();
return new Object[]{delay};
}
return parent.getHudsonJobs();
@@ -70,7 +39,7 @@
private Object[] handleHudsonJob(HudsonJob parent) {
if( !parent.detailsLoaded()) {
DelayObject delay = getDelayObject(parent);
- new LoadHudsonBuildsJob(parent, refreshParentRunnable(v, parent)).schedule();
+ new LoadHudsonBuildsJob(parent, refreshParentRunnable(viewer, parent)).schedule();
return new Object[]{delay};
}
return parent.getDetails().getBuilds();
@@ -87,15 +56,29 @@
if( parentElement instanceof HudsonJob ) {
return handleHudsonJob((HudsonJob)parentElement);
}
+ if( parentElement instanceof JobBuild) {
+ ArrayList<Object> l = new ArrayList<Object>();
+ l.addAll(Arrays.asList(((JobBuild)parentElement).getSVNChangeSet().getChangeSetRevisions()));
+ //l.addAll(Arrays.asList(((JobBuild)parentElement).getSVNChangeSet().getChangeSetItems()));
+ return (Object[]) l.toArray(new Object[l.size()]);
+ }
+
+ if( parentElement instanceof ChangeSetRevision ) {
+ ChangeSetRevision rev = (ChangeSetRevision)parentElement;
+ return rev.getRelevantFileChanges();
+ }
return new String[]{};
}
- public Object getParent(Object element) {
- return null;
- }
-
public boolean hasChildren(Object element) {
- return true;
+ if( element instanceof DelayObject )
+ return false;
+ if( element instanceof HudsonServer )
+ return true;
+ if( element instanceof HudsonJob)
+ return true;
+
+ return getChildren(element).length > 0 ? true : false;
}
}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyActionProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyActionProvider.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyActionProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -0,0 +1,35 @@
+package org.jboss.tools.hudson.manager.ui.views;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.navigator.CommonViewer;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
+
+public class HudsonHeirarchyActionProvider extends AbstractCommonNavActionProvider {
+
+ public HudsonHeirarchyActionProvider() {
+ super();
+ }
+
+ private Action buildHeirarchyModel;
+
+ public void fillContextMenu(IMenuManager menu) {
+ Object first = getSelection();
+ if( first instanceof HudsonJob ) {
+ menu.add(buildHeirarchyModel);
+ }
+ }
+
+ public void createActions(CommonViewer tableViewer, ISelectionProvider provider) {
+ buildHeirarchyModel = new Action() {
+ public void run() {
+ HudsonJob job = (HudsonJob)getSelectedItem();
+ job.clearDetails();
+ cv.refresh(job);
+ }
+ };
+ buildHeirarchyModel.setText("Build Heirarchy Model");
+ }
+}
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyContentProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyContentProvider.java (rev 0)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonHeirarchyContentProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -0,0 +1,160 @@
+package org.jboss.tools.hudson.manager.ui.views;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.jboss.tools.hudson.manager.core.jobs.LoadHudsonJobJob;
+import org.jboss.tools.hudson.manager.core.model.HeirarchyModel;
+import org.jboss.tools.hudson.manager.core.model.HeirarchyModel.JobHeirarchyNode;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonServer;
+import org.jboss.tools.hudson.manager.ui.views.ASyncContentProvider.DelayObject;
+
+
+public class HudsonHeirarchyContentProvider extends ASyncContentProvider {
+
+ public static class HeirarchyViewNode {
+ public HudsonJob job;
+ public HeirarchyViewNode(HudsonJob job) {
+ this.job = job;
+ }
+ public static DirectionalProject[] getUpstreamProjs(HudsonServer server, JobHeirarchyNode node) {
+ String[] ups = node.getUpstream();
+ DirectionalProject[] result = new DirectionalProject[ups.length];
+ for( int i = 0; i < ups.length; i++ ) {
+ result[i] = new UpstreamProject(server, ups[i]);
+ }
+ return result;
+ }
+ public static DirectionalProject[] getDownstreamProjs(HudsonServer server, JobHeirarchyNode node) {
+ String[] downs = node.getDownstream();
+ DirectionalProject[] result = new DirectionalProject[downs.length];
+ for( int i = 0; i < downs.length; i++ ) {
+ result[i] = new DownstreamProject(server, downs[i]);
+ }
+ return result;
+ }
+ public DirectionalProject[] getProjects() {
+ ArrayList<DirectionalProject> list = new ArrayList<DirectionalProject>();
+ list.addAll(Arrays.asList(getUpstreamProjects()));
+ list.addAll(Arrays.asList(getDownstreamProjects()));
+ return list.toArray(new DirectionalProject[list.size()]);
+ }
+
+ public DirectionalProject[] getUpstreamProjects() {
+ String url = job.getTrimUrl();
+ JobHeirarchyNode node = HeirarchyModel.getModel().getHeirarchyNode(url, false);
+ return getUpstreamProjs(job.getServer(), node);
+ }
+
+ public DirectionalProject[] getDownstreamProjects() {
+ String url = job.getTrimUrl();
+ JobHeirarchyNode node = HeirarchyModel.getModel().getHeirarchyNode(url, false);
+ return getDownstreamProjs(job.getServer(), node);
+ }
+ }
+
+ public abstract static class DirectionalProject {
+ protected String name;
+ protected HudsonServer server;
+ private DirectionalProject[] children;
+ public DirectionalProject(HudsonServer server, String name) {
+ this.server = server;
+ this.name = name;
+ }
+ public boolean childrenLoaded() {
+ return children != null;
+ }
+ public DirectionalProject[] getChildren() {
+ if( children == null )
+ children = loadChildren();
+ return children;
+ }
+
+ public abstract DirectionalProject[] loadChildren();
+ }
+
+ public static class UpstreamProject extends DirectionalProject {
+ public UpstreamProject(HudsonServer server, String name) { super(server, name);}
+ public DirectionalProject[] loadChildren() {
+ HudsonJob j = server.findJob(name);
+ // ensure loaded
+ j.getDetails();
+ String jobURL = HudsonJob.getTrimJobUrl(server, name);
+ JobHeirarchyNode hNode = HeirarchyModel.getModel().getHeirarchyNode(jobURL, false);
+ return HeirarchyViewNode.getUpstreamProjs(server, hNode);
+ }
+ }
+
+ public static class DownstreamProject extends DirectionalProject {
+ public DownstreamProject(HudsonServer server, String name) { super(server, name);}
+ public DirectionalProject[] loadChildren() {
+ HudsonJob j = server.findJob(name);
+ // ensure loaded
+ j.getDetails();
+ String jobURL = HudsonJob.getTrimJobUrl(server, name);
+ JobHeirarchyNode hNode = HeirarchyModel.getModel().getHeirarchyNode(jobURL, false);
+ return HeirarchyViewNode.getDownstreamProjs(server, hNode);
+ }
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if( parentElement instanceof HudsonJob ) {
+ return new Object[]{
+ new HeirarchyViewNode((HudsonJob)parentElement)
+ };
+ }
+ if( parentElement instanceof HeirarchyViewNode ) {
+ return ((HeirarchyViewNode)parentElement).getProjects();
+ }
+
+ if( parentElement instanceof DirectionalProject) {
+ DirectionalProject dProj = (DirectionalProject)parentElement;
+ if( !dProj.childrenLoaded() ) {
+ DelayObject delay = getDelayObject(dProj);
+ launchLoadDirectionalProjects(dProj);
+ return new Object[]{delay};
+ }
+ return ((DirectionalProject)parentElement).getChildren();
+ }
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void launchLoadDirectionalProjects(final DirectionalProject dProj) {
+ new LoadProjectHeirarchyJob(dProj, refreshParentRunnable(viewer, dProj)).schedule();
+
+ }
+ public class LoadProjectHeirarchyJob extends Job {
+ private Runnable postJob = null;
+ private DirectionalProject dProj;
+ public LoadProjectHeirarchyJob(DirectionalProject dProj) {
+ super("Load Project Heirarchy");
+ this.dProj = dProj;
+ }
+
+ public LoadProjectHeirarchyJob(DirectionalProject dProj, Runnable r) {
+ this(dProj);
+ postJob = r;
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ dProj.getChildren();
+ if( postJob != null )
+ postJob.run();
+ return Status.OK_STATUS;
+ }
+ }
+ @Override
+ public boolean hasChildren(Object element) {
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+}
\ No newline at end of file
Modified: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java
===================================================================
--- workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java 2011-01-15 00:29:22 UTC (rev 28261)
+++ workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.ui/src/org/jboss/tools/hudson/manager/ui/views/HudsonLabelProvider.java 2011-01-15 00:30:33 UTC (rev 28262)
@@ -4,10 +4,16 @@
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.hudson.manager.core.model.HudsonJob;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.BuildCause;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.ChangeSetItem;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.ChangeSetItemPathPair;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.ChangeSetRevision;
+import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
import org.jboss.tools.hudson.manager.core.model.HudsonServer;
-import org.jboss.tools.hudson.manager.core.model.HudsonJob.JobBuild;
import org.jboss.tools.hudson.manager.ui.HudsonSharedImages;
-import org.jboss.tools.hudson.manager.ui.views.HudsonContentProvider.DelayObject;
+import org.jboss.tools.hudson.manager.ui.views.ASyncContentProvider.DelayObject;
+import org.jboss.tools.hudson.manager.ui.views.HudsonHeirarchyContentProvider.DirectionalProject;
+import org.jboss.tools.hudson.manager.ui.views.HudsonHeirarchyContentProvider.HeirarchyViewNode;
public class HudsonLabelProvider extends LabelProvider implements
ILabelProvider {
@@ -47,8 +53,34 @@
return ((HudsonJob)element).getName();
}
if( element instanceof JobBuild ) {
- return "Build " + ((JobBuild)element).getNumber();
+ String cause;
+ BuildCause bc = ((JobBuild)element).getFirstBuildCause();
+ int type = bc.getType();
+ if( type == BuildCause.KICKED_BY_USER_TYPE)
+ cause = " (Kicked by User " + bc.getUserName() + ")";
+ else if( type == BuildCause.SVN_CHANGE_TYPE)
+ cause = " (Kicked by SVN change)";
+ else
+ cause = " (Kicked by upstream project " + bc.getUpstreamProject() + ")";
+ return "Build " + ((JobBuild)element).getNumber() + cause;
}
+
+ if( element instanceof ChangeSetItem) {
+ return ((ChangeSetItem)element).getRevision() + " - " + ((ChangeSetItem)element).getMessage();
+ }
+ if( element instanceof ChangeSetRevision) {
+ return "r" + ((ChangeSetRevision)element).getrNum() + " - " + ((ChangeSetRevision)element).getModule();
+ }
+ if( element instanceof ChangeSetItemPathPair ) {
+ ChangeSetItemPathPair e = (ChangeSetItemPathPair)element;
+ ChangeSetItem i = e.getItem();
+ return i.getUser() + " - " + i.getRevision() + " - " + e.getPath();
+ }
+ if( element instanceof HeirarchyViewNode )
+ return "Project Heirarchy";
+ if( element instanceof DirectionalProject ) {
+ return ((DirectionalProject)element).name;
+ }
return element == null ? "" : element.toString();//$NON-NLS-1$
}
}
15 years, 2 months
JBoss Tools SVN: r28261 - workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/libs.
by jbosstools-commits@lists.jboss.org
Author: rob.stryker(a)jboss.com
Date: 2011-01-14 19:29:22 -0500 (Fri, 14 Jan 2011)
New Revision: 28261
Added:
workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/libs/jaxen-1.1.1.jar
Log:
nicks hudson tools what what!!!
Added: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/libs/jaxen-1.1.1.jar
===================================================================
(Binary files differ)
Property changes on: workspace/rstryker/hudson/plugins/org.jboss.tools.hudson.manager.core/libs/jaxen-1.1.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
15 years, 2 months
JBoss Tools SVN: r28260 - branches/jbosstools-3.2.0.CR1/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test.
by jbosstools-commits@lists.jboss.org
Author: dgolovin
Date: 2011-01-14 19:00:39 -0500 (Fri, 14 Jan 2011)
New Revision: 28260
Modified:
branches/jbosstools-3.2.0.CR1/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
Log:
https://issues.jboss.org/browse/JBIDE-7745 Seam/JSF UI test fails on b2
aaded clean up for deferred events to avoid reconciler errors
Modified: branches/jbosstools-3.2.0.CR1/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
===================================================================
--- branches/jbosstools-3.2.0.CR1/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-01-14 23:58:06 UTC (rev 28259)
+++ branches/jbosstools-3.2.0.CR1/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-01-15 00:00:39 UTC (rev 28260)
@@ -192,16 +192,10 @@
* close all opened editors.
*/
protected void closeEditors() {
-
- // wait
- // TestUtil.waitForJobs();
- IWorkbenchPage page = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow().getActivePage();
- IWorkbenchPart part = page.getActivePart();
- page.activate(part);
- // close
+ // clean up defrerred events
+ while (Display.getCurrent().readAndDispatch());
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.closeAllEditors(false);
-
}
/**
15 years, 2 months
JBoss Tools SVN: r28259 - trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test.
by jbosstools-commits@lists.jboss.org
Author: dgolovin
Date: 2011-01-14 18:58:06 -0500 (Fri, 14 Jan 2011)
New Revision: 28259
Modified:
trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
Log:
https://issues.jboss.org/browse/JBIDE-7745 Seam/JSF UI test fails on b2
aaded clean up for deferred events to avoid reconciler errors
Modified: trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java
===================================================================
--- trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-01-14 20:00:16 UTC (rev 28258)
+++ trunk/vpe/plugins/org.jboss.tools.vpe.base.test/src/org/jboss/tools/vpe/base/test/VpeTest.java 2011-01-14 23:58:06 UTC (rev 28259)
@@ -121,20 +121,6 @@
*/
@Override
protected void tearDown() throws Exception {
-//Has been commented by Maksim Areshkau,
-//this lines was a fix for JBIDE-6197 and not needed under eclipse 3.6
-// boolean isJobsCheck = true;
-// while (isJobsCheck) {
-// isJobsCheck = false;
-// Job[] jobs = Job.getJobManager().find(null);
-// for (Job job : jobs) {
-// if (job instanceof StructuredRegionProcessor) {
-// TestUtil.delay(50);
-// isJobsCheck = true;
-// break;
-// }
-// }
-// }
closeEditors();
@@ -192,16 +178,10 @@
* close all opened editors.
*/
protected void closeEditors() {
-
- // wait
- // TestUtil.waitForJobs();
- IWorkbenchPage page = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow().getActivePage();
- IWorkbenchPart part = page.getActivePart();
- page.activate(part);
- // close
+ // clean up defrerred events
+ while (Display.getCurrent().readAndDispatch());
+ IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
page.closeAllEditors(false);
-
}
/**
15 years, 2 months
JBoss Tools SVN: r28258 - branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject.
by jbosstools-commits@lists.jboss.org
Author: vyemialyanchyk
Date: 2011-01-14 15:00:16 -0500 (Fri, 14 Jan 2011)
New Revision: 28258
Modified:
branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java
branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java
Log:
https://issues.jboss.org/browse/JBIDE-8118 - fixed
Modified: branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java
===================================================================
--- branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java 2011-01-14 20:00:07 UTC (rev 28257)
+++ branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java 2011-01-14 20:00:16 UTC (rev 28258)
@@ -87,6 +87,7 @@
//delete old hbm files
assertNotNull( testPackage );
+ int nDeleted = 0;
if (testPackage.getNonJavaResources().length > 0){
Object[] ress = testPackage.getNonJavaResources();
for (int i = 0; i < ress.length; i++) {
@@ -94,6 +95,7 @@
IFile res = (IFile)ress[i];
if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$
res.delete(true, false, null);
+ nDeleted++;
}
}
}
@@ -138,6 +140,21 @@
} catch (ExporterException e){
throw (Exception)e.getCause();
}
+ //
+ int nCreated = 0;
+ if (testPackage.getNonJavaResources().length > 0){
+ Object[] ress = testPackage.getNonJavaResources();
+ for (int i = 0; i < ress.length; i++) {
+ if (ress[i] instanceof IFile){
+ IFile res = (IFile)ress[i];
+ if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$
+ nCreated++;
+ }
+ }
+ }
+ }
+ //
+ assert(nDeleted <= nCreated);
} catch (Exception e){
String newMessage = "\nPackage " + testPackage.getElementName() + ":"; //$NON-NLS-1$ //$NON-NLS-2$
throw new WripperException(newMessage, e);
Modified: branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java
===================================================================
--- branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java 2011-01-14 20:00:07 UTC (rev 28257)
+++ branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java 2011-01-14 20:00:16 UTC (rev 28258)
@@ -48,12 +48,15 @@
test4.setTestPackage(testPackage);
/**/
//
- suite.addTest(test1);
/**/
+ suite.addTest(test4);
suite.addTest(test2);
suite.addTest(test3);
- suite.addTest(test4);
/**/
+ // HbmExportExceptionTest should be a last test in the suite array,
+ // cause it clean up all hbm.xml files and could be a reason of exceptions during
+ // other test executions
+ suite.addTest(test1);
return suite;
}
}
15 years, 2 months
JBoss Tools SVN: r28257 - trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject.
by jbosstools-commits@lists.jboss.org
Author: vyemialyanchyk
Date: 2011-01-14 15:00:07 -0500 (Fri, 14 Jan 2011)
New Revision: 28257
Modified:
trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java
trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java
Log:
https://issues.jboss.org/browse/JBIDE-8118 - fixed
Modified: trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java
===================================================================
--- trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java 2011-01-14 19:44:55 UTC (rev 28256)
+++ trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/HbmExportExceptionTest.java 2011-01-14 20:00:07 UTC (rev 28257)
@@ -87,6 +87,7 @@
//delete old hbm files
assertNotNull( testPackage );
+ int nDeleted = 0;
if (testPackage.getNonJavaResources().length > 0){
Object[] ress = testPackage.getNonJavaResources();
for (int i = 0; i < ress.length; i++) {
@@ -94,6 +95,7 @@
IFile res = (IFile)ress[i];
if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$
res.delete(true, false, null);
+ nDeleted++;
}
}
}
@@ -138,6 +140,21 @@
} catch (ExporterException e){
throw (Exception)e.getCause();
}
+ //
+ int nCreated = 0;
+ if (testPackage.getNonJavaResources().length > 0){
+ Object[] ress = testPackage.getNonJavaResources();
+ for (int i = 0; i < ress.length; i++) {
+ if (ress[i] instanceof IFile){
+ IFile res = (IFile)ress[i];
+ if (res.getName().endsWith(".hbm.xml")) { //$NON-NLS-1$
+ nCreated++;
+ }
+ }
+ }
+ }
+ //
+ assert(nDeleted <= nCreated);
} catch (Exception e){
String newMessage = "\nPackage " + testPackage.getElementName() + ":"; //$NON-NLS-1$ //$NON-NLS-2$
throw new WripperException(newMessage, e);
Modified: trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java
===================================================================
--- trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java 2011-01-14 19:44:55 UTC (rev 28256)
+++ trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/src/org/hibernate/eclipse/console/test/mappingproject/TestSet.java 2011-01-14 20:00:07 UTC (rev 28257)
@@ -48,12 +48,15 @@
test4.setTestPackage(testPackage);
/**/
//
- suite.addTest(test1);
/**/
+ suite.addTest(test4);
suite.addTest(test2);
suite.addTest(test3);
- suite.addTest(test4);
/**/
+ // HbmExportExceptionTest should be a last test in the suite array,
+ // cause it clean up all hbm.xml files and could be a reason of exceptions during
+ // other test executions
+ suite.addTest(test1);
return suite;
}
}
15 years, 2 months
JBoss Tools SVN: r28256 - branches/jbosstools-3.2.0.CR1/build/target-platform.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2011-01-14 14:44:55 -0500 (Fri, 14 Jan 2011)
New Revision: 28256
Modified:
branches/jbosstools-3.2.0.CR1/build/target-platform/multiple.target
Log:
multiple.target should point at 3.2_stable_branch composite site
Modified: branches/jbosstools-3.2.0.CR1/build/target-platform/multiple.target
===================================================================
--- branches/jbosstools-3.2.0.CR1/build/target-platform/multiple.target 2011-01-14 19:40:28 UTC (rev 28255)
+++ branches/jbosstools-3.2.0.CR1/build/target-platform/multiple.target 2011-01-14 19:44:55 UTC (rev 28256)
@@ -219,7 +219,7 @@
<repository location="http://download.eclipse.org/webtools/repository/helios/"/>
</location>
<location includeAllPlatforms="false" includeMode="planner" type="InstallableUnit">
- <repository location="http://download.jboss.org/jbosstools/builds/staging/_composite_/trunk/"/>
+ <repository location="http://download.jboss.org/jbosstools/builds/staging/_composite_/3.2_stabl..."/>
</location>
<location includeAllPlatforms="false" includeMode="planner" type="InstallableUnit">
<unit id="com.google.gdt.eclipse.suite.e36.feature.feature.group" version="1.4.2.v201012211742"/>
@@ -246,4 +246,4 @@
<feature id="org.mozilla.xpcom.feature"/>
</includeBundles>
<targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-</target>
\ No newline at end of file
+</target>
15 years, 2 months
JBoss Tools SVN: r28255 - branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib.
by jbosstools-commits@lists.jboss.org
Author: vyemialyanchyk
Date: 2011-01-14 14:40:28 -0500 (Fri, 14 Jan 2011)
New Revision: 28255
Added:
branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
Log:
https://issues.jboss.org/browse/JBIDE-8113 - fixed
Added: branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
===================================================================
(Binary files differ)
Property changes on: branches/jbosstools-3.2.0.CR1/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
15 years, 2 months
JBoss Tools SVN: r28254 - trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib.
by jbosstools-commits@lists.jboss.org
Author: vyemialyanchyk
Date: 2011-01-14 14:40:11 -0500 (Fri, 14 Jan 2011)
New Revision: 28254
Added:
trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
Log:
https://issues.jboss.org/browse/JBIDE-8113 - fixed
Added: trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
===================================================================
(Binary files differ)
Property changes on: trunk/hibernatetools/tests/org.hibernate.eclipse.console.test/res/project/lib/dom4j-1.6.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
15 years, 2 months