// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeAppResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeAppResponse implements HasResourceIdAndPath<App> {
//   private String title;
//   private String role;
//   @JsonProperty("id")
//   private ResourceId<App> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<App> resourcePath;
// 
//   @Override
//   public ResourceId<App> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<App> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<App> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<App> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
//   public String getTitle() {
//     return title;
//   }
// 
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   public String getRole() {
//     return role;
//   }
// 
//   public void setRole(String role) {
//     this.role = role;
//   }
// 
// }
// 
// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeKeyResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeKeyResponse implements HasResourceIdAndPath<Key> {
// 
//   @JsonProperty("default")
//   private boolean defaultKey;
//   private String title;
//   @JsonProperty("id")
//   private ResourceId<Key> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<Key> resourcePath;
// 
//   @Override
//   public ResourceId<Key> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<Key> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<Key> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<Key> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
// 
//   public String getTitle() {
//     return title;
//   }
// 
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   public boolean isDefaultKey() {
//     return defaultKey;
//   }
// 
//   public void setDefaultKey(boolean defaultKey) {
//     this.defaultKey = defaultKey;
//   }
// 
// }
// 
// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeResponse implements HasResourceIdAndPath<Me> {
// 
//   private String username;
//   private String email;
//   private MeAppsResponse apps;
//   private MeKeysResponse keys;
//   @JsonProperty("id")
//   private ResourceId<Me> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<Me> resourcePath;
// 
//   @Override
//   public ResourceId<Me> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<Me> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<Me> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<Me> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
// 
//   public String getUsername() {
//     return username;
//   }
// 
//   public void setUsername(String username) {
//     this.username = username;
//   }
// 
//   public String getEmail() {
//     return email;
//   }
// 
//   public void setEmail(String email) {
//     this.email = email;
//   }
// 
//   public MeAppsResponse getApps() {
//     return apps;
//   }
// 
//   public void setApps(MeAppsResponse apps) {
//     this.apps = apps;
//   }
// 
//   public MeKeysResponse getKeys() {
//     return keys;
//   }
// 
//   public void setKeys(MeKeysResponse keys) {
//     this.keys = keys;
//   }
// 
// }


import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import com.github.chrisprice.phonegapbuild.api.data.me.MeAppResponse;
import com.github.chrisprice.phonegapbuild.api.data.me.MeKeyResponse;
import com.github.chrisprice.phonegapbuild.api.data.me.MeResponse;
import com.sun.jersey.api.client.WebResource;
package com.github.chrisprice.phonegapbuild.plugin;



/**
 * Lists any cloud apps or keys.
 * 
 * @goal list
 * @requiresProject false
 */
public class ListMojo extends AbstractPhoneGapBuildMojo {

  public void execute() throws MojoExecutionException, MojoFailureException {
    getLog().debug("Authenticating.");
    WebResource webResource = getRootWebResource();

    getLog().info("Requesting summary from cloud.");
    MeResponse me = meManager.requestMe(webResource);

    MeAppResponse[] apps = me.getApps().getAll();

    getLog().info("Found " + apps.length + " apps -");
    for (MeAppResponse app : apps) {
      getLog().info(app.getResourceId() + ":\t" + app.getTitle());
    }

// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeAppResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeAppResponse implements HasResourceIdAndPath<App> {
//   private String title;
//   private String role;
//   @JsonProperty("id")
//   private ResourceId<App> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<App> resourcePath;
// 
//   @Override
//   public ResourceId<App> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<App> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<App> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<App> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
//   public String getTitle() {
//     return title;
//   }
// 
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   public String getRole() {
//     return role;
//   }
// 
//   public void setRole(String role) {
//     this.role = role;
//   }
// 
// }
// 
// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeKeyResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeKeyResponse implements HasResourceIdAndPath<Key> {
// 
//   @JsonProperty("default")
//   private boolean defaultKey;
//   private String title;
//   @JsonProperty("id")
//   private ResourceId<Key> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<Key> resourcePath;
// 
//   @Override
//   public ResourceId<Key> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<Key> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<Key> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<Key> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
// 
//   public String getTitle() {
//     return title;
//   }
// 
//   public void setTitle(String title) {
//     this.title = title;
//   }
// 
//   public boolean isDefaultKey() {
//     return defaultKey;
//   }
// 
//   public void setDefaultKey(boolean defaultKey) {
//     this.defaultKey = defaultKey;
//   }
// 
// }
// 
// Path: api/src/main/java/com/github/chrisprice/phonegapbuild/api/data/me/MeResponse.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class MeResponse implements HasResourceIdAndPath<Me> {
// 
//   private String username;
//   private String email;
//   private MeAppsResponse apps;
//   private MeKeysResponse keys;
//   @JsonProperty("id")
//   private ResourceId<Me> resourceId;
//   @JsonProperty("link")
//   private ResourcePath<Me> resourcePath;
// 
//   @Override
//   public ResourceId<Me> getResourceId() {
//     return resourceId;
//   }
// 
//   public void setResourceId(ResourceId<Me> resourceId) {
//     this.resourceId = resourceId;
//   }
// 
//   @Override
//   public ResourcePath<Me> getResourcePath() {
//     return resourcePath;
//   }
// 
//   public void setResourcePath(ResourcePath<Me> resourcePath) {
//     this.resourcePath = resourcePath;
//   }
// 
//   public String getUsername() {
//     return username;
//   }
// 
//   public void setUsername(String username) {
//     this.username = username;
//   }
// 
//   public String getEmail() {
//     return email;
//   }
// 
//   public void setEmail(String email) {
//     this.email = email;
//   }
// 
//   public MeAppsResponse getApps() {
//     return apps;
//   }
// 
//   public void setApps(MeAppsResponse apps) {
//     this.apps = apps;
//   }
// 
//   public MeKeysResponse getKeys() {
//     return keys;
//   }
// 
//   public void setKeys(MeKeysResponse keys) {
//     this.keys = keys;
//   }
// 
// }


// Path: plugin/src/main/java/com/github/chrisprice/phonegapbuild/plugin/ListMojo.java
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import com.github.chrisprice.phonegapbuild.api.data.me.MeAppResponse;
import com.github.chrisprice.phonegapbuild.api.data.me.MeKeyResponse;
import com.github.chrisprice.phonegapbuild.api.data.me.MeResponse;
import com.sun.jersey.api.client.WebResource;

package com.github.chrisprice.phonegapbuild.plugin;



/**
 * Lists any cloud apps or keys.
 * 
 * @goal list
 * @requiresProject false
 */
public class ListMojo extends AbstractPhoneGapBuildMojo {

  public void execute() throws MojoExecutionException, MojoFailureException {
    getLog().debug("Authenticating.");
    WebResource webResource = getRootWebResource();

    getLog().info("Requesting summary from cloud.");
    MeResponse me = meManager.requestMe(webResource);

    MeAppResponse[] apps = me.getApps().getAll();

    getLog().info("Found " + apps.length + " apps -");
    for (MeAppResponse app : apps) {
      getLog().info(app.getResourceId() + ":\t" + app.getTitle());
    }

    MeKeyResponse[] iosKeys = me.getKeys().getIos().getAll();