// Path: common/src/main/java/org/apache/hms/common/entity/manifest/ClusterManifest.java
// @XmlRootElement
// public class ClusterManifest extends Manifest {
//   @XmlAttribute
//   private String clusterName;
//   @XmlElement
//   private NodesManifest nodes;
//   @XmlElement
//   private SoftwareManifest software;
//   @XmlElement
//   private ConfigManifest config;
//   
//   public String getClusterName() {
//     return this.clusterName;
//   }
//   
//   public NodesManifest getNodes() {
//     return this.nodes;
//   }
//   
//   public SoftwareManifest getSoftware() {
//     return this.software;
//   }
//   
//   public ConfigManifest getConfig() {
//     return this.config;
//   }
//   
//   public void setClusterName(String cluster) {
//     this.clusterName = cluster;
//   }
//   
//   public void setNodes(NodesManifest nodes) {
//     this.nodes = nodes;
//   }
//   
//   public void setSoftware(SoftwareManifest software) {
//     this.software = software;
//   }
//   
//   public void setConfig(ConfigManifest config) {
//     this.config = config;
//   }
//   
//   public void load() throws IOException {
//     if(nodes!=null && nodes.getUrl()!=null && nodes.getRoles()==null) {
//       URL url = nodes.getUrl();
//       nodes = fetch(url, NodesManifest.class);
//       nodes.setUrl(url);
//     }
//     if(software!=null && software.getUrl()!=null && software.getRoles()==null) {
//       URL url = software.getUrl();
//       software = fetch(url, SoftwareManifest.class);
//       software.setUrl(url);
//     }
//     if(config!=null && config.getUrl()!=null && config.getActions()==null) {
//       URL url = config.getUrl();
//       config = fetch(url, ConfigManifest.class);
//       config.setUrl(url);
//       config.expand(nodes);
//     }
//   }
//   
//   private <T> T fetch(URL url, java.lang.Class<T> c) throws IOException {
//     if(url.getProtocol().toLowerCase().equals("file")) {
//       FileReader fstream = new FileReader(url.getPath());
//       BufferedReader in = new BufferedReader(fstream);
//       StringBuilder buffer = new StringBuilder();
//       String str;
//       while((str = in.readLine()) != null) {
//         buffer.append(str);
//       }
//       return JAXBUtil.read(buffer.toString().getBytes(), c);
//     } else {
//       com.sun.jersey.api.client.Client wsClient = com.sun.jersey.api.client.Client.create();
//       WebResource webResource = wsClient.resource(url.toString());
//       return webResource.get(c);
//     }
//   }
// }


import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.hms.common.entity.manifest.ClusterManifest;
import org.codehaus.jackson.annotate.JsonTypeInfo;
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.hms.common.entity.command;



@XmlRootElement
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@command")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
@XmlType(name="", propOrder = {})
public class DeleteClusterCommand extends ClusterCommand {
  
  public DeleteClusterCommand() {
    this.cmd = CmdType.DELETE;
  }

// Path: common/src/main/java/org/apache/hms/common/entity/manifest/ClusterManifest.java
// @XmlRootElement
// public class ClusterManifest extends Manifest {
//   @XmlAttribute
//   private String clusterName;
//   @XmlElement
//   private NodesManifest nodes;
//   @XmlElement
//   private SoftwareManifest software;
//   @XmlElement
//   private ConfigManifest config;
//   
//   public String getClusterName() {
//     return this.clusterName;
//   }
//   
//   public NodesManifest getNodes() {
//     return this.nodes;
//   }
//   
//   public SoftwareManifest getSoftware() {
//     return this.software;
//   }
//   
//   public ConfigManifest getConfig() {
//     return this.config;
//   }
//   
//   public void setClusterName(String cluster) {
//     this.clusterName = cluster;
//   }
//   
//   public void setNodes(NodesManifest nodes) {
//     this.nodes = nodes;
//   }
//   
//   public void setSoftware(SoftwareManifest software) {
//     this.software = software;
//   }
//   
//   public void setConfig(ConfigManifest config) {
//     this.config = config;
//   }
//   
//   public void load() throws IOException {
//     if(nodes!=null && nodes.getUrl()!=null && nodes.getRoles()==null) {
//       URL url = nodes.getUrl();
//       nodes = fetch(url, NodesManifest.class);
//       nodes.setUrl(url);
//     }
//     if(software!=null && software.getUrl()!=null && software.getRoles()==null) {
//       URL url = software.getUrl();
//       software = fetch(url, SoftwareManifest.class);
//       software.setUrl(url);
//     }
//     if(config!=null && config.getUrl()!=null && config.getActions()==null) {
//       URL url = config.getUrl();
//       config = fetch(url, ConfigManifest.class);
//       config.setUrl(url);
//       config.expand(nodes);
//     }
//   }
//   
//   private <T> T fetch(URL url, java.lang.Class<T> c) throws IOException {
//     if(url.getProtocol().toLowerCase().equals("file")) {
//       FileReader fstream = new FileReader(url.getPath());
//       BufferedReader in = new BufferedReader(fstream);
//       StringBuilder buffer = new StringBuilder();
//       String str;
//       while((str = in.readLine()) != null) {
//         buffer.append(str);
//       }
//       return JAXBUtil.read(buffer.toString().getBytes(), c);
//     } else {
//       com.sun.jersey.api.client.Client wsClient = com.sun.jersey.api.client.Client.create();
//       WebResource webResource = wsClient.resource(url.toString());
//       return webResource.get(c);
//     }
//   }
// }


// Path: common/src/main/java/org/apache/hms/common/entity/command/DeleteClusterCommand.java
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.hms.common.entity.manifest.ClusterManifest;
import org.codehaus.jackson.annotate.JsonTypeInfo;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.hms.common.entity.command;



@XmlRootElement
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@command")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) 
@XmlType(name="", propOrder = {})
public class DeleteClusterCommand extends ClusterCommand {
  
  public DeleteClusterCommand() {
    this.cmd = CmdType.DELETE;
  }

  public DeleteClusterCommand(String clusterName, ClusterManifest cm) {