Task (Element element) { final String id = element.getChildText("number"); if (id == null) { return null; } //noinspection HardCodedStringLiteral final String summary = element.getChildText("title"); if (summary == null) { return null; } //noinspection HardCodedStringLiteral final String description = element.getChildText("original-body"); final boolean isClosed = "true".equals(element.getChildText("closed")); final Ref<Date> updated = new Ref<>(); final Ref<Date> created = new Ref<>(); try { updated.set(parseDate(element, "updated-at")); created.set(parseDate(element, "created-at")); } catch (ParseException e) { LOG.warn(e); } return new Task() { @Override public boolean isIssue() { return true; } @Override public String getIssueUrl() { return getUrl() + "/projects/" + myProjectId + "/tickets/" + getId() + ".xml"; } @NotNull @Override public String getId() { return myProjectId + "-" + id; } @NotNull @Override public String getSummary() { return summary; } @Override public String getDescription() { return description; } @Override public Comment @NotNull [] getComments() { return Comment.EMPTY_ARRAY; } @NotNull @Override public Icon getIcon() { return TasksCoreIcons.Lighthouse; } @NotNull @Override public TaskType getType() { return TaskType.BUG; } @Override public Date getUpdated() { return updated.get(); } @Override public Date getCreated() { return created.get(); } @Override public boolean isClosed() { return isClosed; } @Override public TaskRepository getRepository() { return LighthouseRepository.this; } @Override public String getPresentableName() { return getId() + ": " + getSummary(); //NON-NLS } }; }