Skip to content

Commit

Permalink
Restore Formatable behavior for some model types
Browse files Browse the repository at this point in the history
use intermediate DataOutput iface, and
pass converter function to yaml/json formatters
  • Loading branch information
gschueler committed Jun 29, 2018
1 parent 917199a commit 6acb1a9
Show file tree
Hide file tree
Showing 12 changed files with 62 additions and 14 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ repositories {
maven { url "https://jitpack.io" }
}

ext.toolbeltVersion = "0.2.1"
ext.toolbeltVersion = "0.2.2"
ext.toolbeltGroup = "${toolbeltVersion.contains('SNAPSHOT')?'org':'com.github'}.rundeck.cli-toolbelt"

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;
import org.simpleframework.xml.Root;

import java.util.HashMap;
Expand All @@ -29,7 +30,7 @@
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@Root(strict = false)
public class JobFileItem {
public class JobFileItem implements DataOutput {
private String id;
private String user;
private String optionName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,17 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;

import java.util.List;
import java.util.stream.Collectors;

/**
* @author greg
* @since 3/2/17
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class JobFileItemList {
public class JobFileItemList implements DataOutput {
private Paging paging;
private List<JobFileItem> files;

Expand All @@ -41,6 +43,11 @@ public List<JobFileItem> getFiles() {
return files;
}

@Override
public List<?> asList() {
return getFiles().stream().map(JobFileItem::asMap).collect(Collectors.toList());
}

public void setFiles(List<JobFileItem> files) {
this.files = files;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
Expand All @@ -28,7 +29,7 @@
*/

@JsonIgnoreProperties(ignoreUnknown = true)
public class JobFileUploadResult {
public class JobFileUploadResult implements DataOutput {
private Integer total;
private Map<String, String> options;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
Expand All @@ -27,7 +28,7 @@
* @since 12/13/16
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class ScmActionInputsResult {
public class ScmActionInputsResult implements DataOutput {
public String title;
public String description;
public String integration;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
Expand All @@ -27,7 +28,7 @@
* @since 12/13/16
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class ScmExportItem {
public class ScmExportItem implements DataOutput {
public String itemId;
public String originalId;
public ScmJobItem job;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.rundeck.client.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
Expand All @@ -27,7 +28,7 @@
* @since 12/13/16
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class ScmImportItem {
public class ScmImportItem implements DataOutput {
public String itemId;
public Boolean tracked;
public ScmJobItem job;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
package org.rundeck.client.api.model;


import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -25,7 +27,7 @@
* @author greg
* @since 12/13/16
*/
public class ScmInputField {
public class ScmInputField implements DataOutput {
public String defaultValue;
public String description;
public String name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package org.rundeck.client.api.model;

import org.rundeck.client.util.DataOutput;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -24,7 +26,7 @@
* @author greg
* @since 12/13/16
*/
public class ScmSetupInputsResult {
public class ScmSetupInputsResult implements DataOutput {
public String integration;
public String type;
public List<ScmInputField> fields;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.rundeck.client.util;

import java.util.List;
import java.util.Map;

public interface DataOutput {
default Map<?, ?> asMap() {
return null;
}

default List<?> asList() {
return null;
}
}
26 changes: 22 additions & 4 deletions src/main/java/org/rundeck/client/tool/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.rundeck.client.tool.commands.*;
import org.rundeck.client.util.*;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Representer;

Expand Down Expand Up @@ -89,8 +90,8 @@ private static void configNiceFormat(final ToolBelt belt) {
NiceFormatter formatter = new NiceFormatter(null) {
@Override
public String format(final Object o) {
if (o instanceof Formatable) {
Formatable o1 = (Formatable) o;
if (o instanceof DataOutput) {
DataOutput o1 = (DataOutput) o;
Map<?, ?> map = o1.asMap();
if (null != map) {
return super.format(map);
Expand All @@ -112,7 +113,7 @@ public String format(final Object o) {
}

private static void configJsonFormat(final ToolBelt belt) {
belt.formatter(new JsonFormatter());
belt.formatter(new JsonFormatter(DataOutputAsFormatable));
belt.channels().infoEnabled(false);
belt.channels().warningEnabled(false);
belt.channels().errorEnabled(false);
Expand All @@ -131,12 +132,29 @@ private static void configYamlFormat(final ToolBelt belt, final RdClientConfig c
representer.addClassTag(ScheduledJobItem.class, Tag.MAP);
representer.addClassTag(DateInfo.class, Tag.MAP);
representer.addClassTag(Execution.class, Tag.MAP);
belt.formatter(new YamlFormatter(representer, dumperOptions));
belt.formatter(new YamlFormatter(DataOutputAsFormatable, new Yaml(representer, dumperOptions)));
belt.channels().infoEnabled(false);
belt.channels().warningEnabled(false);
belt.channels().errorEnabled(false);
}

private static final Function<Object, Optional<Formatable>> DataOutputAsFormatable = o -> {
if (o instanceof DataOutput) {
return Optional.of(new Formatable() {
@Override
public List<?> asList() {
return ((DataOutput) o).asList();
}

@Override
public Map<?, ?> asMap() {
return ((DataOutput) o).asMap();
}
});
}
return Optional.empty();
};

public static Tool tool(final Rd rd) {
ToolBelt belt = ToolBelt.belt("rd")
.defaultHelpCommands()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public void list(FileListOpts opts, CommandOutput out) throws IOException, Input
out.info(paging);
}

out.output(result.getFiles());
out.output(result.asList());


if (paging != null && paging.hasMoreResults()) {
Expand Down

0 comments on commit 6acb1a9

Please sign in to comment.