mirror of https://github.com/apache/jclouds.git
Fix initial entity domain object heirarchy, particularly Builders and correct JAXB XML parsing
This commit is contained in:
parent
2305cdc61d
commit
4e01fa3369
|
@ -19,80 +19,41 @@
|
|||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* Basic entity type in the vCloud object model.
|
||||
* An entity.
|
||||
*
|
||||
* Includes a name, an optional description, and an optional list of links
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="EntityType">
|
||||
* </pre>
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
public class Entity<T extends Entity<T>> extends Resource<T> {
|
||||
public class Entity extends EntityType<Entity> {
|
||||
|
||||
public static <T extends Entity<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromEntity(this);
|
||||
public Builder toBuilder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public static class Builder<T extends Entity<T>> extends Resource.Builder<T> {
|
||||
|
||||
protected String description;
|
||||
protected TaskList tasks;
|
||||
protected String name;
|
||||
protected String id;
|
||||
|
||||
/**
|
||||
* @see Entity#getName()
|
||||
*/
|
||||
public Builder<T> name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Entity#getDescription()
|
||||
*/
|
||||
public Builder<T> description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Entity#getId()
|
||||
*/
|
||||
public Builder<T> id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Entity#getTasks()
|
||||
*/
|
||||
public Builder<T> tasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
return this;
|
||||
}
|
||||
public static class Builder extends EntityType.Builder<Entity> {
|
||||
|
||||
@Override
|
||||
public Entity<T> build() {
|
||||
Entity<T> entity = new Entity<T>(href, name);
|
||||
public Entity build() {
|
||||
Entity entity = new Entity(href, name);
|
||||
entity.setDescription(description);
|
||||
entity.setTasks(tasks);
|
||||
entity.setId(id);
|
||||
|
@ -102,99 +63,100 @@ public class Entity<T extends Entity<T>> extends Resource<T> {
|
|||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @see EntityType#getName()
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> fromResource(Resource<T> in) {
|
||||
return Builder.class.cast(super.fromResource(in));
|
||||
public Builder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder<T> fromEntity(Entity<T> in) {
|
||||
return fromResource(in).description(in.getDescription()).tasks(in.getTasks()).id(in.getId()).name(in.getName());
|
||||
/**
|
||||
* @see EntityType#getDescription()
|
||||
*/
|
||||
@Override
|
||||
public Builder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getId()
|
||||
*/
|
||||
@Override
|
||||
public Builder id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getTasks()
|
||||
*/
|
||||
@Override
|
||||
public Builder tasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder fromEntityType(EntityType<Entity> in) {
|
||||
return Builder.class.cast(super.fromEntityType(in));
|
||||
}
|
||||
|
||||
public Builder fromEntity(Entity in) {
|
||||
return fromEntityType(in);
|
||||
}
|
||||
}
|
||||
|
||||
@XmlElement(namespace = NS, name = "Description")
|
||||
protected String description;
|
||||
@XmlElement(namespace = NS, name = "TasksInProgress")
|
||||
protected TaskList tasks;
|
||||
@XmlAttribute
|
||||
protected String id;
|
||||
@XmlAttribute
|
||||
protected String name;
|
||||
|
||||
protected Entity(URI href, String name) {
|
||||
super(href);
|
||||
this.name = name;
|
||||
super(href, name);
|
||||
}
|
||||
|
||||
protected Entity() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional description.
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* A list of queued, running, or recently completed tasks associated with this entity.
|
||||
*/
|
||||
public TaskList getTasks() {
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public void setTasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
* The resource identifier, expressed in URN format.
|
||||
*
|
||||
* The value of this attribute uniquely identifies the resource, persists for the life of the
|
||||
* resource, and is never reused.
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the name of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!super.equals(o))
|
||||
return false;
|
||||
Entity<?> that = Entity.class.cast(o);
|
||||
return super.equals(that) && equal(this.id, that.id) && equal(this.description, that.description) && equal(this.tasks, that.tasks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode() + Objects.hashCode(description, tasks, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ToStringHelper string() {
|
||||
return super.string().add("description", description).add("tasks", tasks).add("id", id).add("name", name);
|
||||
Entity that = Entity.class.cast(o);
|
||||
return super.equals(that);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,239 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds 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.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* Basic entity type in the vCloud object model.
|
||||
*
|
||||
* Includes a name, an optional description, and an optional list of links
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="EntityType">
|
||||
* </pre>
|
||||
*
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
public class EntityType<T extends EntityType<T>> extends ResourceType<T> {
|
||||
|
||||
public static <T extends EntityType<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromEntity(this);
|
||||
}
|
||||
|
||||
public static class Builder<T extends EntityType<T>> extends ResourceType.Builder<T> {
|
||||
|
||||
protected String description;
|
||||
protected TaskList tasks;
|
||||
protected String name;
|
||||
protected String id;
|
||||
|
||||
/**
|
||||
* @see EntityType#getName()
|
||||
*/
|
||||
public Builder<T> name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getDescription()
|
||||
*/
|
||||
public Builder<T> description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getId()
|
||||
*/
|
||||
public Builder<T> id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getTasks()
|
||||
*/
|
||||
public Builder<T> tasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType<T> build() {
|
||||
EntityType<T> entity = new EntityType<T>(href, name);
|
||||
entity.setDescription(description);
|
||||
entity.setTasks(tasks);
|
||||
entity.setId(id);
|
||||
entity.setType(type);
|
||||
entity.setLinks(links);
|
||||
return entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Builder<T> fromResourceType(ResourceType<T> in) {
|
||||
return Builder.class.cast(super.fromResourceType(in));
|
||||
}
|
||||
|
||||
public Builder<T> fromEntityType(EntityType<T> in) {
|
||||
return fromResourceType(in).description(in.getDescription()).tasks(in.getTasks()).id(in.getId()).name(in.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@XmlElement(namespace = NS, name = "Description")
|
||||
private String description;
|
||||
@XmlElement(namespace = NS, name = "TasksInProgress")
|
||||
private TaskList tasks;
|
||||
@XmlAttribute
|
||||
private String id;
|
||||
@XmlAttribute
|
||||
private String name;
|
||||
|
||||
protected EntityType(URI href, String name) {
|
||||
super(href);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
protected EntityType() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Optional description.
|
||||
*/
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
/**
|
||||
* A list of queued, running, or recently completed tasks associated with this entity.
|
||||
*/
|
||||
public TaskList getTasks() {
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public void setTasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
}
|
||||
|
||||
/**
|
||||
* The resource identifier, expressed in URN format.
|
||||
*
|
||||
* The value of this attribute uniquely identifies the resource, persists for the life of the
|
||||
* resource, and is never reused.
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the name of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (!super.equals(o))
|
||||
return false;
|
||||
EntityType<?> that = EntityType.class.cast(o);
|
||||
return super.equals(that) && equal(this.id, that.id) && equal(this.description, that.description) && equal(this.tasks, that.tasks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode() + Objects.hashCode(description, tasks, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ToStringHelper string() {
|
||||
return super.string().add("description", description).add("tasks", tasks).add("id", id).add("name", name);
|
||||
}
|
||||
}
|
|
@ -4,6 +4,8 @@ import static com.google.common.base.Objects.*;
|
|||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
|
@ -16,9 +18,10 @@ import com.google.common.base.Objects;
|
|||
* <xs:complexType name="ErrorType">
|
||||
* </pre>
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
@XmlRootElement(namespace = NS, name = "Error")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class Error {
|
||||
|
||||
public static Builder builder() {
|
||||
|
@ -94,15 +97,15 @@ public class Error {
|
|||
}
|
||||
|
||||
@XmlAttribute
|
||||
protected String message;
|
||||
private String message;
|
||||
@XmlAttribute
|
||||
protected int majorErrorCode;
|
||||
private int majorErrorCode;
|
||||
@XmlAttribute
|
||||
protected String minorErrorCode;
|
||||
private String minorErrorCode;
|
||||
@XmlAttribute
|
||||
protected String vendorSpecificErrorCode;
|
||||
private String vendorSpecificErrorCode;
|
||||
@XmlAttribute
|
||||
protected String stackTrace;
|
||||
private String stackTrace;
|
||||
|
||||
private Error(String message, int majorErrorCode, String minorErrorCode) {
|
||||
this.message = checkNotNull(message, "message");
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
|
@ -20,7 +20,7 @@ import com.google.common.base.Objects.ToStringHelper;
|
|||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class Link extends Reference<Link> {
|
||||
public class Link extends ReferenceType<Link> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Builder builder() {
|
||||
|
@ -35,7 +35,7 @@ public class Link extends Reference<Link> {
|
|||
return new Builder().fromLink(this);
|
||||
}
|
||||
|
||||
public static class Builder extends Reference.Builder<Link> {
|
||||
public static class Builder extends ReferenceType.Builder<Link> {
|
||||
|
||||
protected String rel;
|
||||
|
||||
|
@ -47,11 +47,49 @@ public class Link extends Reference<Link> {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Link build() {
|
||||
Link link = new Link(href, rel);
|
||||
link.setId(id);
|
||||
link.setName(name);
|
||||
link.setType(type);
|
||||
return link;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getId()
|
||||
*/
|
||||
@Override
|
||||
public Builder id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getName()
|
||||
*/
|
||||
@Override
|
||||
public Builder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder fromLink(Link in) {
|
||||
|
@ -61,13 +99,15 @@ public class Link extends Reference<Link> {
|
|||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Builder fromReference(Reference<Link> in) {
|
||||
@Override
|
||||
public Builder fromReference(ReferenceType<Link> in) {
|
||||
return Builder.class.cast(super.fromReference(in));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Builder fromAttributes(Map<String, String> attributes) {
|
||||
super.fromAttributes(attributes);
|
||||
rel(attributes.get("rel"));
|
||||
|
@ -76,7 +116,7 @@ public class Link extends Reference<Link> {
|
|||
}
|
||||
|
||||
@XmlAttribute
|
||||
protected String rel;
|
||||
private String rel;
|
||||
|
||||
private Link(URI href, String rel) {
|
||||
super(href);
|
||||
|
|
|
@ -18,22 +18,18 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Entity.Builder;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
|
@ -48,7 +44,7 @@ import com.google.common.collect.Sets;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@XmlRootElement(namespace = NS, name = "Org")
|
||||
public class Org extends Entity<Org> {
|
||||
public class Org extends EntityType<Org> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Builder builder() {
|
||||
|
@ -60,7 +56,7 @@ public class Org extends Entity<Org> {
|
|||
return new Builder().fromOrg(this);
|
||||
}
|
||||
|
||||
public static class Builder extends Entity.Builder<Org> {
|
||||
public static class Builder extends EntityType.Builder<Org> {
|
||||
|
||||
private String fullName;
|
||||
|
||||
|
@ -83,8 +79,80 @@ public class Org extends Entity<Org> {
|
|||
return org;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getName()
|
||||
*/
|
||||
@Override
|
||||
public Builder fromEntity(Entity<Org> in) {
|
||||
public Builder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getDescription()
|
||||
*/
|
||||
@Override
|
||||
public Builder description(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getId()
|
||||
*/
|
||||
@Override
|
||||
public Builder id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see EntityType#getTasks()
|
||||
*/
|
||||
@Override
|
||||
public Builder tasks(TaskList tasks) {
|
||||
this.tasks = tasks;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder fromEntity(EntityType<Org> in) {
|
||||
return Builder.class.cast(super.fromEntity(in));
|
||||
}
|
||||
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -49,12 +49,12 @@ public class OrgList {
|
|||
|
||||
public static class Builder {
|
||||
|
||||
private Set<OrgLink> orgs = Sets.newLinkedHashSet();
|
||||
private Set<Reference> orgs = Sets.newLinkedHashSet();
|
||||
|
||||
/**
|
||||
* @see OrgList#getOrgs
|
||||
*/
|
||||
public Builder orgs(Set<OrgLink> orgs) {
|
||||
public Builder orgs(Set<Reference> orgs) {
|
||||
this.orgs = Sets.newLinkedHashSet(checkNotNull(orgs, "orgs"));
|
||||
return this;
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ public class OrgList {
|
|||
/**
|
||||
* @see OrgList#getOrgs
|
||||
*/
|
||||
public Builder addOrg(OrgLink org) {
|
||||
public Builder org(Reference org) {
|
||||
orgs.add(checkNotNull(org, "org"));
|
||||
return this;
|
||||
}
|
||||
|
@ -80,14 +80,14 @@ public class OrgList {
|
|||
// For JAXB and builder use
|
||||
}
|
||||
|
||||
private OrgList(Set<OrgLink> orgs) {
|
||||
private OrgList(Set<Reference> orgs) {
|
||||
this.orgs = ImmutableSet.copyOf(orgs);
|
||||
}
|
||||
|
||||
@XmlElement(namespace = NS, name = "Org")
|
||||
private Set<OrgLink> orgs = Sets.newLinkedHashSet();
|
||||
private Set<Reference> orgs = Sets.newLinkedHashSet();
|
||||
|
||||
public Set<OrgLink> getOrgs() {
|
||||
public Set<Reference> getOrgs() {
|
||||
return ImmutableSet.copyOf(orgs);
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ public class OrgList {
|
|||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
OrgList that = OrgList.class.cast(o);
|
||||
return equal(orgs, that.orgs);
|
||||
return equal(this.orgs, that.orgs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -18,202 +18,97 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
|
||||
/**
|
||||
* A reference to a resource.
|
||||
*
|
||||
* Contains an href attribute and optional name and type attributes.
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="ReferenceType">
|
||||
* </pre>
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
public class Reference<T extends Reference<T>> {
|
||||
public class Reference extends ReferenceType<Reference> {
|
||||
|
||||
public static <T extends Reference<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromReference(this);
|
||||
@Override
|
||||
public Builder toBuilder() {
|
||||
return new Builder().fromReference(this);
|
||||
}
|
||||
|
||||
public static class Builder<T extends Reference<T>> {
|
||||
public static class Builder extends ReferenceType.Builder<Reference> {
|
||||
|
||||
protected URI href;
|
||||
protected String id;
|
||||
protected String name;
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* @see Reference#getHref()
|
||||
*/
|
||||
public Builder<T> href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getId()
|
||||
*/
|
||||
public Builder<T> id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getType()
|
||||
*/
|
||||
public Builder<T> type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getName()
|
||||
*/
|
||||
public Builder<T> name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Reference<T> build() {
|
||||
Reference<T> reference = new Reference<T>(href);
|
||||
@Override
|
||||
public Reference build() {
|
||||
Reference reference = new Reference(href);
|
||||
reference.setId(id);
|
||||
reference.setName(name);
|
||||
reference.setType(type);
|
||||
return reference;
|
||||
}
|
||||
|
||||
protected Builder<T> fromReference(Reference<T> in) {
|
||||
return href(in.getHref()).id(in.getId()).name(in.getName()).type(in.getType());
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Builder<T> fromAttributes(Map<String, String> attributes) {
|
||||
return href(URI.create(attributes.get("href"))).id(attributes.get("id")).name(attributes.get("name")).type(attributes.get("type"));
|
||||
/**
|
||||
* @see ReferenceType#getId()
|
||||
*/
|
||||
@Override
|
||||
public Builder id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getName()
|
||||
*/
|
||||
@Override
|
||||
public Builder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Builder fromReferenceType(ReferenceType<Reference> in) {
|
||||
return Builder.class.cast(super.fromReferenceType(in));
|
||||
}
|
||||
|
||||
protected Builder fromReference(Reference in) {
|
||||
return fromReferenceType(in);
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
protected URI href;
|
||||
@XmlAttribute
|
||||
protected String id;
|
||||
@XmlAttribute
|
||||
protected String name;
|
||||
@XmlAttribute
|
||||
protected String type;
|
||||
|
||||
protected Reference(URI href) {
|
||||
this.href = href;
|
||||
super(href);
|
||||
}
|
||||
|
||||
protected Reference() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the URI to the entity.
|
||||
*
|
||||
* An object reference, expressed in URL format. Because this URL includes the object identifier
|
||||
* portion of the id attribute value, it uniquely identifies the object, persists for the life of
|
||||
* the object, and is never reused. The value of the href attribute is a reference to a view of
|
||||
* the object, and can be used to access a representation of the object that is valid in a
|
||||
* particular context. Although URLs have a well-known syntax and a well-understood
|
||||
* interpretation, a client should treat each href as an opaque string. The rules that govern how
|
||||
* the server constructs href strings might change in future releases.
|
||||
*
|
||||
* @return an opaque reference and should never be parsed
|
||||
*/
|
||||
public URI getHref() {
|
||||
return href;
|
||||
}
|
||||
|
||||
/**
|
||||
* The resource identifier, expressed in URN format.
|
||||
*
|
||||
* The value of this attribute uniquely identifies the resource, persists for the life of the
|
||||
* resource, and is never reused.
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the name of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the type of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #getHref()
|
||||
*/
|
||||
public URI getURI() {
|
||||
return getHref();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
Reference<?> that = Reference.class.cast(o);
|
||||
return equal(this.href, that.href) && equal(this.id, that.id) && equal(this.name, that.name) && equal(this.type, that.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(href, id, name, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return string().toString();
|
||||
}
|
||||
|
||||
protected ToStringHelper string() {
|
||||
return Objects.toStringHelper("").add("href", href).add("id", id).add("name", name).add("type", type);
|
||||
Reference that = Reference.class.cast(o);
|
||||
return super.equals(that);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,221 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds 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.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
|
||||
/**
|
||||
* A reference to a resource.
|
||||
*
|
||||
* Contains an href attribute and optional name and type attributes.
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="ReferenceType">
|
||||
* </pre>
|
||||
*
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ReferenceType<T extends ReferenceType<T>> {
|
||||
|
||||
public static <T extends ReferenceType<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
}
|
||||
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromReference(this);
|
||||
}
|
||||
|
||||
public static class Builder<T extends ReferenceType<T>> {
|
||||
|
||||
protected URI href;
|
||||
protected String id;
|
||||
protected String name;
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getHref()
|
||||
*/
|
||||
public Builder<T> href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getId()
|
||||
*/
|
||||
public Builder<T> id(String id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getType()
|
||||
*/
|
||||
public Builder<T> type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ReferenceType#getName()
|
||||
*/
|
||||
public Builder<T> name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceType<T> build() {
|
||||
ReferenceType<T> reference = new ReferenceType<T>(href);
|
||||
reference.setId(id);
|
||||
reference.setName(name);
|
||||
reference.setType(type);
|
||||
return reference;
|
||||
}
|
||||
|
||||
protected Builder<T> fromReferenceType(ReferenceType<T> in) {
|
||||
return href(in.getHref()).id(in.getId()).name(in.getName()).type(in.getType());
|
||||
}
|
||||
|
||||
protected Builder<T> fromAttributes(Map<String, String> attributes) {
|
||||
return href(URI.create(attributes.get("href"))).id(attributes.get("id")).name(attributes.get("name")).type(attributes.get("type"));
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
private URI href;
|
||||
@XmlAttribute
|
||||
private String id;
|
||||
@XmlAttribute
|
||||
private String name;
|
||||
@XmlAttribute
|
||||
private String type;
|
||||
|
||||
protected ReferenceType(URI href) {
|
||||
this.href = href;
|
||||
}
|
||||
|
||||
protected ReferenceType() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the URI to the entity.
|
||||
*
|
||||
* An object reference, expressed in URL format. Because this URL includes the object identifier
|
||||
* portion of the id attribute value, it uniquely identifies the object, persists for the life of
|
||||
* the object, and is never reused. The value of the href attribute is a reference to a view of
|
||||
* the object, and can be used to access a representation of the object that is valid in a
|
||||
* particular context. Although URLs have a well-known syntax and a well-understood
|
||||
* interpretation, a client should treat each href as an opaque string. The rules that govern how
|
||||
* the server constructs href strings might change in future releases.
|
||||
*
|
||||
* @return an opaque reference and should never be parsed
|
||||
*/
|
||||
public URI getHref() {
|
||||
return href;
|
||||
}
|
||||
|
||||
/**
|
||||
* The resource identifier, expressed in URN format.
|
||||
*
|
||||
* The value of this attribute uniquely identifies the resource, persists for the life of the
|
||||
* resource, and is never reused.
|
||||
*/
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the name of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the type of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #getHref()
|
||||
*/
|
||||
public URI getURI() {
|
||||
return getHref();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
ReferenceType<?> that = ReferenceType.class.cast(o);
|
||||
return equal(this.href, that.href) && equal(this.id, that.id) && equal(this.name, that.name) && equal(this.type, that.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(href, id, name, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return string().toString();
|
||||
}
|
||||
|
||||
protected ToStringHelper string() {
|
||||
return Objects.toStringHelper("").add("href", href).add("id", id).add("name", name).add("type", type);
|
||||
}
|
||||
}
|
|
@ -18,185 +18,112 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Task.Builder;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Resource.Builder;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* The base type for all objects in the vCloud model.
|
||||
*
|
||||
* Has an optional list of links and href and type attributes.
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="ResourceType">
|
||||
* </pre>
|
||||
* A resource.
|
||||
*
|
||||
* @author Adrian Cole
|
||||
* @author grkvlt@apache.org
|
||||
*/
|
||||
public class Resource<T extends Resource<T>> {
|
||||
public class Resource extends ResourceType<Resource> {
|
||||
|
||||
public static <T extends Resource<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
@SuppressWarnings("unchecked")
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromResource(this);
|
||||
@Override
|
||||
public Builder toBuilder() {
|
||||
return new Builder().fromResource(this);
|
||||
}
|
||||
|
||||
public static class Builder<T extends Resource<T>> {
|
||||
public static class Builder extends ResourceType.Builder<Resource> {
|
||||
|
||||
protected URI href;
|
||||
protected String type;
|
||||
protected Set<Link> links = Sets.newLinkedHashSet();
|
||||
|
||||
/**
|
||||
* @see Reference#getHref()
|
||||
*/
|
||||
public Builder<T> href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getType()
|
||||
*/
|
||||
public Builder<T> type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getLinks()
|
||||
*/
|
||||
public Builder<T> links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Reference#getLinks()
|
||||
*/
|
||||
public Builder<T> link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Resource<T> build() {
|
||||
Resource<T> reference = new Resource<T>(href);
|
||||
@Override
|
||||
public Resource build() {
|
||||
Resource reference = new Resource(href);
|
||||
reference.setType(type);
|
||||
reference.setLinks(links);
|
||||
return reference;
|
||||
}
|
||||
|
||||
protected Builder<T> fromResource(Resource<T> in) {
|
||||
return href(in.getHref()).type(in.getType()).links(in.getLinks());
|
||||
/**
|
||||
* @see ResourceType#getHref()
|
||||
*/
|
||||
@Override
|
||||
public Builder href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getType()
|
||||
*/
|
||||
@Override
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getLinks()
|
||||
*/
|
||||
@Override
|
||||
public Builder link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Builder fromResourceType(ResourceType<Resource> in) {
|
||||
return Builder.class.cast(super.fromResourceType(in));
|
||||
}
|
||||
|
||||
protected Builder fromResource(Resource in) {
|
||||
return fromResourceType(in);
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
protected URI href;
|
||||
@XmlAttribute
|
||||
protected String type;
|
||||
@XmlElement(namespace = NS, name = "Link")
|
||||
protected Set<Link> links = Sets.newLinkedHashSet();
|
||||
|
||||
protected Resource(URI href) {
|
||||
this.href = href;
|
||||
super(href);
|
||||
}
|
||||
|
||||
protected Resource() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the URI to the entity.
|
||||
*
|
||||
* An object reference, expressed in URL format. Because this URL includes the object identifier
|
||||
* portion of the id attribute value, it uniquely identifies the object, persists for the life of
|
||||
* the object, and is never reused. The value of the href attribute is a reference to a view of
|
||||
* the object, and can be used to access a representation of the object that is valid in a
|
||||
* particular context. Although URLs have a well-known syntax and a well-understood
|
||||
* interpretation, a client should treat each href as an opaque string. The rules that govern how
|
||||
* the server constructs href strings might change in future releases.
|
||||
*
|
||||
* @return an opaque reference and should never be parsed
|
||||
*/
|
||||
public URI getHref() {
|
||||
return href;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the type of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set of optional links to an entity or operation associated with this object.
|
||||
*/
|
||||
public Set<Link>getLinks() {
|
||||
return links;
|
||||
}
|
||||
|
||||
public void setLinks(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
}
|
||||
|
||||
public void addLink(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #getHref()
|
||||
*/
|
||||
public URI getURI() {
|
||||
return getHref();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
Resource<?> that = Resource.class.cast(o);
|
||||
return equal(this.href, that.href) && equal(this.links, that.links) && equal(this.type, that.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(href, links, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return string().toString();
|
||||
}
|
||||
|
||||
protected ToStringHelper string() {
|
||||
return Objects.toStringHelper("").add("href", href).add("links", links).add("type", type);
|
||||
Resource that = Resource.class.cast(o);
|
||||
return super.equals(that);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,202 @@
|
|||
/**
|
||||
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||
* contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. jclouds 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.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Objects.ToStringHelper;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
/**
|
||||
* The base type for all objects in the vCloud model.
|
||||
*
|
||||
* Has an optional list of links and href and type attributes.
|
||||
*
|
||||
* <pre>
|
||||
* <xs:complexType name="ResourceType">
|
||||
* </pre>
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ResourceType<T extends ResourceType<T>> {
|
||||
|
||||
public static <T extends ResourceType<T>> Builder<T> builder() {
|
||||
return new Builder<T>();
|
||||
}
|
||||
|
||||
public Builder<T> toBuilder() {
|
||||
return new Builder<T>().fromResource(this);
|
||||
}
|
||||
|
||||
public static class Builder<T extends ResourceType<T>> {
|
||||
|
||||
protected URI href;
|
||||
protected String type;
|
||||
protected Set<Link> links = Sets.newLinkedHashSet();
|
||||
|
||||
/**
|
||||
* @see ResourceType#getHref()
|
||||
*/
|
||||
public Builder<T> href(URI href) {
|
||||
this.href = href;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getType()
|
||||
*/
|
||||
public Builder<T> type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getLinks()
|
||||
*/
|
||||
public Builder<T> links(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see ResourceType#getLinks()
|
||||
*/
|
||||
public Builder<T> link(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
return this;
|
||||
}
|
||||
|
||||
public ResourceType<T> build() {
|
||||
ResourceType<T> reference = new ResourceType<T>(href);
|
||||
reference.setType(type);
|
||||
reference.setLinks(links);
|
||||
return reference;
|
||||
}
|
||||
|
||||
protected Builder<T> fromResourceType(ResourceType<T> in) {
|
||||
return href(in.getHref()).type(in.getType()).links(in.getLinks());
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAttribute
|
||||
private URI href;
|
||||
@XmlAttribute
|
||||
private String type;
|
||||
@XmlElement(namespace = NS, name = "Link")
|
||||
private Set<Link> links = Sets.newLinkedHashSet();
|
||||
|
||||
protected ResourceType(URI href) {
|
||||
this.href = href;
|
||||
}
|
||||
|
||||
protected ResourceType() {
|
||||
// For JAXB
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the URI to the entity.
|
||||
*
|
||||
* An object reference, expressed in URL format. Because this URL includes the object identifier
|
||||
* portion of the id attribute value, it uniquely identifies the object, persists for the life of
|
||||
* the object, and is never reused. The value of the href attribute is a reference to a view of
|
||||
* the object, and can be used to access a representation of the object that is valid in a
|
||||
* particular context. Although URLs have a well-known syntax and a well-understood
|
||||
* interpretation, a client should treat each href as an opaque string. The rules that govern how
|
||||
* the server constructs href strings might change in future releases.
|
||||
*
|
||||
* @return an opaque reference and should never be parsed
|
||||
*/
|
||||
public URI getHref() {
|
||||
return href;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contains the type of the the entity.
|
||||
*
|
||||
* The object type, specified as a MIME content type, of the object that the link references.
|
||||
* This attribute is present only for links to objects. It is not present for links to actions.
|
||||
*
|
||||
* @return type definition, type, expressed as an HTTP Content-Type
|
||||
*/
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set of optional links to an entity or operation associated with this object.
|
||||
*/
|
||||
public Set<Link>getLinks() {
|
||||
return links;
|
||||
}
|
||||
|
||||
public void setLinks(Set<Link> links) {
|
||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||
}
|
||||
|
||||
public void addLink(Link link) {
|
||||
this.links.add(checkNotNull(link, "link"));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #getHref()
|
||||
*/
|
||||
public URI getURI() {
|
||||
return getHref();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o)
|
||||
return true;
|
||||
if (o == null || getClass() != o.getClass())
|
||||
return false;
|
||||
ResourceType<?> that = ResourceType.class.cast(o);
|
||||
return equal(this.href, that.href) && equal(this.links, that.links) && equal(this.type, that.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(href, links, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return string().toString();
|
||||
}
|
||||
|
||||
protected ToStringHelper string() {
|
||||
return Objects.toStringHelper("").add("href", href).add("links", links).add("type", type);
|
||||
}
|
||||
}
|
|
@ -18,13 +18,15 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||
import static com.google.common.base.Objects.*;
|
||||
import static com.google.common.base.Preconditions.*;
|
||||
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
@ -41,6 +43,7 @@ import com.google.common.collect.Sets;
|
|||
* @author Adrian Cole
|
||||
*/
|
||||
@XmlRootElement(namespace = NS, name = "Session")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class Session {
|
||||
|
||||
public static Builder builder() {
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.domain;
|
||||
|
||||
import static com.google.common.base.Objects.equal;
|
||||
import static com.google.common.base.Objects.*;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
|
@ -68,8 +68,8 @@ public class SessionWithToken {
|
|||
|
||||
}
|
||||
|
||||
protected Session session;
|
||||
protected String token;
|
||||
private Session session;
|
||||
private String token;
|
||||
|
||||
protected SessionWithToken(String token, Session session) {
|
||||
this.session = session;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
package org.jclouds.vcloud.director.v1_5.features;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
|
@ -28,8 +28,8 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
|
|||
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Link;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Org;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.OrgLink;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.OrgList;
|
||||
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
@ -61,7 +61,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
|||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, orgListRequest, orgListResponse);
|
||||
|
||||
assertEquals(client.getOrgClient().getOrgList(), OrgList.builder()
|
||||
.addOrg(OrgLink.builder()
|
||||
.org(Reference.builder()
|
||||
.type("application/vnd.vmware.vcloud.org+xml")
|
||||
.name("JClouds")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
|
||||
|
@ -95,41 +95,41 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
|||
.id("urn:vcloud:org:6f312e42-cd2b-488d-a2bb-97519cd57ed0")
|
||||
.type(VCloudDirectorMediaType.ORG_XML)
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.vdc+xml")
|
||||
.name("Cluster01-JClouds")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/vdc/d16d333b-e3c0-4176-845d-a5ee6392df07"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.tasksList+xml")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/tasksList/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.catalog+xml")
|
||||
.name("Public")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/9e08c2f6-077a-42ce-bece-d5332e2ebb5c"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.controlAccess+xml")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/catalog/9e08c2f6-077a-42ce-bece-d5332e2ebb5c/controlAccess/"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.orgNetwork+xml")
|
||||
.name("ilsolation01-Jclouds")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/f3ba8256-6f48-4512-aad6-600e85b4dc38"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.orgNetwork+xml")
|
||||
.name("internet01-Jclouds")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c"))
|
||||
.build())
|
||||
.addLink(Link.builder()
|
||||
.link(Link.builder()
|
||||
.rel("down")
|
||||
.type("application/vnd.vmware.vcloud.metadata+xml")
|
||||
.href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/metadata"))
|
||||
|
|
Loading…
Reference in New Issue