mirror of https://github.com/apache/jclouds.git
Updated base classes for domain objects/entities
This commit is contained in:
parent
6231ce014b
commit
d1b2a08d3c
|
@ -1,129 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Location of a Rest resource.
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
* <xs:complexType name="ReferenceType">
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
public class BaseNamedResource<T extends BaseNamedResource<T>> extends BaseResource<T> {
|
|
||||||
|
|
||||||
public static <T extends BaseNamedResource<T>> Builder<T> builder() {
|
|
||||||
return new Builder<T>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder<T> toBuilder() {
|
|
||||||
return new Builder<T>().fromNamedResource(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Builder<T extends BaseNamedResource<T>> extends BaseResource.Builder<T> {
|
|
||||||
|
|
||||||
protected String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see BaseNamedResource#getName
|
|
||||||
*/
|
|
||||||
public Builder<T> name(String name) {
|
|
||||||
this.name = name;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BaseNamedResource<T> build() {
|
|
||||||
return new BaseNamedResource<T>(href, type, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder<T> fromBaseResource(BaseResource<T> in) {
|
|
||||||
return Builder.class.cast(super.fromBaseResource(in));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder<T> fromNamedResource(BaseNamedResource<T> in) {
|
|
||||||
return fromBaseResource(in).name(in.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public Builder<T> fromAttributes(Map<String, String> attributes) {
|
|
||||||
return Builder.class.cast(super.fromAttributes(attributes)).name(attributes.get("name"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlAttribute
|
|
||||||
protected String name;
|
|
||||||
|
|
||||||
protected BaseNamedResource(URI href, String type, String name) {
|
|
||||||
super(href, type);
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected BaseNamedResource() {
|
|
||||||
// For JAXB
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the referenced object, taken from the value of that object's name attribute.
|
|
||||||
* Action links do not include a name attribute.
|
|
||||||
*
|
|
||||||
* @return name;
|
|
||||||
*/
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (!super.equals(o))
|
|
||||||
return false;
|
|
||||||
BaseNamedResource<?> that = BaseNamedResource.class.cast(o);
|
|
||||||
return equal(name, that.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return super.hashCode() + Objects.hashCode(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ToStringHelper string() {
|
|
||||||
return super.string().add("name", name);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,200 @@
|
||||||
|
/**
|
||||||
|
* 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 org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 Adrian Cole
|
||||||
|
*/
|
||||||
|
public class Entity<T extends Entity<T>> extends Resource<T> {
|
||||||
|
|
||||||
|
public static <T extends Entity<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 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entity<T> build() {
|
||||||
|
Entity<T> entity = new Entity<T>(href, name);
|
||||||
|
entity.setDescription(description);
|
||||||
|
entity.setTasks(tasks);
|
||||||
|
entity.setId(id);
|
||||||
|
entity.setType(type);
|
||||||
|
entity.setLinks(links);
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder<T> fromResource(Resource<T> in) {
|
||||||
|
return Builder.class.cast(super.fromResource(in));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder<T> fromEntity(Entity<T> in) {
|
||||||
|
return fromResource(in).description(in.getDescription()).tasks(in.getTasks()).id(in.getId()).name(in.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -121,10 +121,6 @@ public class Error {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessage(String message) {
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The class of the error. Matches the HTTP status code.
|
* The class of the error. Matches the HTTP status code.
|
||||||
*/
|
*/
|
||||||
|
@ -132,10 +128,6 @@ public class Error {
|
||||||
return majorErrorCode;
|
return majorErrorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMajorErrorCode(int majorErrorCode) {
|
|
||||||
this.majorErrorCode = majorErrorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specific API error code.
|
* Specific API error code.
|
||||||
*
|
*
|
||||||
|
@ -145,10 +137,6 @@ public class Error {
|
||||||
return minorErrorCode;
|
return minorErrorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMinorErrorCode(String minorErrorCode) {
|
|
||||||
this.minorErrorCode = minorErrorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A vendor/implementation specific error code that point to specific
|
* A vendor/implementation specific error code that point to specific
|
||||||
* modules/parts of the code and can make problem diagnostics easier.
|
* modules/parts of the code and can make problem diagnostics easier.
|
||||||
|
|
|
@ -20,7 +20,7 @@ import com.google.common.base.Objects.ToStringHelper;
|
||||||
*
|
*
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class Link extends BaseNamedResource<Link> {
|
public class Link extends Reference<Link> {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static Builder builder() {
|
public static Builder builder() {
|
||||||
|
@ -35,7 +35,7 @@ public class Link extends BaseNamedResource<Link> {
|
||||||
return new Builder().fromLink(this);
|
return new Builder().fromLink(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder extends BaseNamedResource.Builder<Link> {
|
public static class Builder extends Reference.Builder<Link> {
|
||||||
|
|
||||||
protected String rel;
|
protected String rel;
|
||||||
|
|
||||||
|
@ -47,59 +47,27 @@ public class Link extends BaseNamedResource<Link> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Link build() {
|
public Link build() {
|
||||||
return new Link(href, type, name, rel);
|
Link link = new Link(href, rel);
|
||||||
|
link.setId(id);
|
||||||
|
link.setName(name);
|
||||||
|
link.setType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder fromLink(Link in) {
|
public Builder fromLink(Link in) {
|
||||||
return fromNamedResource(in).rel(in.getRel());
|
return fromReference(in).rel(in.getRel());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
public Builder fromReference(Reference<Link> in) {
|
||||||
public Builder fromBaseResource(BaseResource<Link> in) {
|
return Builder.class.cast(super.fromReference(in));
|
||||||
return Builder.class.cast(super.fromBaseResource(in));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public Builder fromNamedResource(BaseNamedResource<Link> in) {
|
|
||||||
return Builder.class.cast(super.fromNamedResource(in));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder name(String name) {
|
|
||||||
return Builder.class.cast(super.name(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder href(URI href) {
|
|
||||||
return Builder.class.cast(super.href(href));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder type(String type) {
|
|
||||||
return Builder.class.cast(super.type(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder fromAttributes(Map<String, String> attributes) {
|
public Builder fromAttributes(Map<String, String> attributes) {
|
||||||
super.fromAttributes(attributes);
|
super.fromAttributes(attributes);
|
||||||
rel(attributes.get("rel"));
|
rel(attributes.get("rel"));
|
||||||
|
@ -110,8 +78,8 @@ public class Link extends BaseNamedResource<Link> {
|
||||||
@XmlAttribute
|
@XmlAttribute
|
||||||
protected String rel;
|
protected String rel;
|
||||||
|
|
||||||
private Link(URI href, String type, String name, String rel) {
|
private Link(URI href, String rel) {
|
||||||
super(href, type, name);
|
super(href);
|
||||||
this.rel = checkNotNull(rel, "rel");
|
this.rel = checkNotNull(rel, "rel");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +104,7 @@ public class Link extends BaseNamedResource<Link> {
|
||||||
if (!super.equals(o))
|
if (!super.equals(o))
|
||||||
return false;
|
return false;
|
||||||
Link that = (Link) o;
|
Link that = (Link) o;
|
||||||
return equal(this.rel, that.rel);
|
return super.equals(that) && equal(this.rel, that.rel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -29,13 +29,17 @@ import javax.xml.bind.annotation.XmlAttribute;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
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;
|
||||||
import com.google.common.base.Objects.ToStringHelper;
|
import com.google.common.base.Objects.ToStringHelper;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An organization.
|
* iRepresents an organization.
|
||||||
|
*
|
||||||
|
* Unit of multi-tenancy and a top-level container. Contain vDCs, TasksList, Catalogs and Shared Network entities.
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* <xs:complexType name="OrgType">
|
* <xs:complexType name="OrgType">
|
||||||
|
@ -44,7 +48,7 @@ import com.google.common.collect.Sets;
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
@XmlRootElement(namespace = NS, name = "Org")
|
@XmlRootElement(namespace = NS, name = "Org")
|
||||||
public class Org extends BaseNamedResource<Org> {
|
public class Org extends Entity<Org> {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static Builder builder() {
|
public static Builder builder() {
|
||||||
|
@ -56,28 +60,9 @@ public class Org extends BaseNamedResource<Org> {
|
||||||
return new Builder().fromOrg(this);
|
return new Builder().fromOrg(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder extends BaseNamedResource.Builder<Org> {
|
public static class Builder extends Entity.Builder<Org> {
|
||||||
|
|
||||||
private String id;
|
|
||||||
private String description;
|
|
||||||
private String fullName;
|
private String fullName;
|
||||||
private Set<Link> links = Sets.newLinkedHashSet();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see Org#getId()
|
|
||||||
*/
|
|
||||||
public Builder id(String id) {
|
|
||||||
this.id = id;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see Org#getDescription()
|
|
||||||
*/
|
|
||||||
public Builder description(String description) {
|
|
||||||
this.description = description;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see Org#getFullName()
|
* @see Org#getFullName()
|
||||||
|
@ -87,84 +72,38 @@ public class Org extends BaseNamedResource<Org> {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @see Org#getLinks()
|
public Org build() {
|
||||||
*/
|
Org org = new Org(href, name, fullName);
|
||||||
public Builder links(Set<Link> links) {
|
org.setDescription(description);
|
||||||
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
org.setId(id);
|
||||||
return this;
|
org.setType(type);
|
||||||
}
|
org.setLinks(links);
|
||||||
|
org.setTasks(tasks);
|
||||||
/**
|
return org;
|
||||||
* @see Org#getLinks()
|
|
||||||
*/
|
|
||||||
public Builder addLink(Link org) {
|
|
||||||
links.add(checkNotNull(org, "org"));
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Org build() {
|
public Builder fromEntity(Entity<Org> in) {
|
||||||
return new Org(href, type, name, id, description, fullName, links);
|
return Builder.class.cast(super.fromEntity(in));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder fromOrg(Org in) {
|
public Builder fromOrg(Org in) {
|
||||||
return id(in.getId()).description(in.getDescription()).fullName(in.getFullName()).links(in.getLinks());
|
return fromEntity(in).fullName(in.getFullName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder name(String name) {
|
|
||||||
return Builder.class.cast(super.name(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder href(URI href) {
|
|
||||||
return Builder.class.cast(super.href(href));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder type(String type) {
|
|
||||||
return Builder.class.cast(super.type(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Org() {
|
private Org() {
|
||||||
// For JAXB and builder use
|
// For JAXB and builder use
|
||||||
}
|
}
|
||||||
|
|
||||||
private Org(URI href, String type, String name, String id, String description, String fullName, Set<Link> links) {
|
private Org(URI href, String name, String fullName) {
|
||||||
super(href, type, name);
|
super(href, name);
|
||||||
this.id = id;
|
|
||||||
this.description = description;
|
|
||||||
this.fullName = fullName;
|
this.fullName = fullName;
|
||||||
this.links = ImmutableSet.copyOf(links);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlAttribute
|
|
||||||
private String id;
|
|
||||||
@XmlElement(namespace = NS, name = "Description")
|
|
||||||
private String description;
|
|
||||||
@XmlElement(namespace = NS, name = "FullName")
|
@XmlElement(namespace = NS, name = "FullName")
|
||||||
private String fullName;
|
private String fullName;
|
||||||
@XmlElement(namespace = NS, name = "Link")
|
|
||||||
private Set<Link> links = Sets.newLinkedHashSet();
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return id of the org
|
|
||||||
*/
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @return description of the org
|
|
||||||
*/
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -174,29 +113,21 @@ public class Org extends BaseNamedResource<Org> {
|
||||||
return fullName;
|
return fullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO
|
|
||||||
*/
|
|
||||||
public Set<Link> getLinks() {
|
|
||||||
return ImmutableSet.copyOf(links);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (!super.equals(o))
|
if (!super.equals(o))
|
||||||
return false;
|
return false;
|
||||||
Org that = Org.class.cast(o);
|
Org that = Org.class.cast(o);
|
||||||
return equal(id, that.id) && equal(description, that.description) && equal(fullName, that.fullName)
|
return super.equals(that) && equal(fullName, that.fullName);
|
||||||
&& equal(links, that.links);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return super.hashCode() + Objects.hashCode(id, description, fullName, links);
|
return super.hashCode() + Objects.hashCode(fullName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ToStringHelper string() {
|
public ToStringHelper string() {
|
||||||
return super.string().add("id", id).add("description", description).add("fullName", fullName).add("links", links);
|
return super.string().add("fullName", fullName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
/**
|
|
||||||
* 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 java.net.URI;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A link to an organization.
|
|
||||||
*
|
|
||||||
* @author Adrian Cole
|
|
||||||
*/
|
|
||||||
public class OrgLink extends BaseNamedResource<OrgLink> {
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static Builder builder() {
|
|
||||||
return new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Builder toBuilder() {
|
|
||||||
return Builder.class.cast(new Builder().fromNamedResource(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Builder extends BaseNamedResource.Builder<OrgLink> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OrgLink build() {
|
|
||||||
return new OrgLink(href, type, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder name(String name) {
|
|
||||||
return Builder.class.cast(super.name(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder href(URI href) {
|
|
||||||
return Builder.class.cast(super.href(href));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Builder type(String type) {
|
|
||||||
return Builder.class.cast(super.type(type));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private OrgLink(URI href, String type, String name) {
|
|
||||||
super(href, type, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
private OrgLink() {
|
|
||||||
// for JAXB
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,219 @@
|
||||||
|
/**
|
||||||
|
* 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.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
|
||||||
|
*/
|
||||||
|
public class Reference<T extends Reference<T>> {
|
||||||
|
|
||||||
|
public static <T extends Reference<T>> Builder<T> builder() {
|
||||||
|
return new Builder<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder<T> toBuilder() {
|
||||||
|
return new Builder<T>().fromReference(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder<T extends Reference<T>> {
|
||||||
|
|
||||||
|
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);
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
protected URI href;
|
||||||
|
@XmlAttribute
|
||||||
|
protected String id;
|
||||||
|
@XmlAttribute
|
||||||
|
protected String name;
|
||||||
|
@XmlAttribute
|
||||||
|
protected String type;
|
||||||
|
|
||||||
|
protected Reference(URI href) {
|
||||||
|
this.href = 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,37 +19,59 @@
|
||||||
package org.jclouds.vcloud.director.v1_5.domain;
|
package org.jclouds.vcloud.director.v1_5.domain;
|
||||||
|
|
||||||
import static com.google.common.base.Objects.equal;
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static com.google.common.base.Preconditions.*;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAttribute;
|
import javax.xml.bind.annotation.XmlAttribute;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Task.Builder;
|
||||||
|
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.base.Objects.ToStringHelper;
|
import com.google.common.base.Objects.ToStringHelper;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Location of a Rest resource
|
* 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
|
* @author Adrian Cole
|
||||||
*/
|
*/
|
||||||
public class BaseResource<T extends BaseResource<T>> {
|
public class Resource<T extends Resource<T>> {
|
||||||
|
|
||||||
public static <T extends BaseResource<T>> Builder<T> builder() {
|
public static <T extends Resource<T>> Builder<T> builder() {
|
||||||
return new Builder<T>();
|
return new Builder<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder<T> toBuilder() {
|
public Builder<T> toBuilder() {
|
||||||
return new Builder<T>().fromBaseResource(this);
|
return new Builder<T>().fromResource(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Builder<T extends BaseResource<T>> {
|
public static class Builder<T extends Resource<T>> {
|
||||||
|
|
||||||
protected String type;
|
|
||||||
protected URI href;
|
protected URI href;
|
||||||
|
protected String type;
|
||||||
|
protected Set<Link> links = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see BaseResource#getType
|
* @see Reference#getHref()
|
||||||
|
*/
|
||||||
|
public Builder<T> href(URI href) {
|
||||||
|
this.href = href;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Reference#getType()
|
||||||
*/
|
*/
|
||||||
public Builder<T> type(String type) {
|
public Builder<T> type(String type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
@ -57,53 +79,51 @@ public class BaseResource<T extends BaseResource<T>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see BaseResource#getHref
|
* @see Reference#getLinks()
|
||||||
*/
|
*/
|
||||||
public Builder<T> href(URI href) {
|
public Builder<T> links(Set<Link> links) {
|
||||||
this.href = href;
|
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseResource<T> build() {
|
/**
|
||||||
return new BaseResource<T>(href, type);
|
* @see Reference#getLinks()
|
||||||
|
*/
|
||||||
|
public Builder<T> link(Link link) {
|
||||||
|
this.links.add(checkNotNull(link, "link"));
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Builder<T> fromBaseResource(BaseResource<T> in) {
|
public Resource<T> build() {
|
||||||
return type(in.getType()).href(in.getHref());
|
Resource<T> reference = new Resource<T>(href);
|
||||||
|
reference.setType(type);
|
||||||
|
reference.setLinks(links);
|
||||||
|
return reference;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Builder<T> fromAttributes(Map<String, String> attributes) {
|
protected Builder<T> fromResource(Resource<T> in) {
|
||||||
return href(URI.create(attributes.get("href"))).type(attributes.get("type"));
|
return href(in.getHref()).type(in.getType()).links(in.getLinks());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@XmlAttribute
|
|
||||||
protected String type;
|
|
||||||
|
|
||||||
@XmlAttribute
|
@XmlAttribute
|
||||||
protected URI href;
|
protected URI href;
|
||||||
|
@XmlAttribute
|
||||||
|
protected String type;
|
||||||
|
@XmlElement(namespace = NS, name = "Link")
|
||||||
|
protected Set<Link> links = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
protected BaseResource(URI href, String type) {
|
protected Resource(URI href) {
|
||||||
this.type = type;
|
|
||||||
this.href = href;
|
this.href = href;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected BaseResource() {
|
protected Resource() {
|
||||||
// For JAXB
|
// For JAXB
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The object type, specified as a MIME content type, of the object that the link references.
|
* Contains the URI to the entity.
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An object reference, expressed in URL format. Because this URL includes the object identifier
|
* 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
|
* 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 is never reused. The value of the href attribute is a reference to a view of
|
||||||
|
@ -119,7 +139,38 @@ public class BaseResource<T extends BaseResource<T>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see #getHref
|
* 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() {
|
public URI getURI() {
|
||||||
return getHref();
|
return getHref();
|
||||||
|
@ -131,13 +182,13 @@ public class BaseResource<T extends BaseResource<T>> {
|
||||||
return true;
|
return true;
|
||||||
if (o == null || getClass() != o.getClass())
|
if (o == null || getClass() != o.getClass())
|
||||||
return false;
|
return false;
|
||||||
BaseResource<?> that = BaseResource.class.cast(o);
|
Resource<?> that = Resource.class.cast(o);
|
||||||
return equal(href, that.href) && equal(type, that.type);
|
return equal(this.href, that.href) && equal(this.links, that.links) && equal(this.type, that.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hashCode(type, href);
|
return Objects.hashCode(href, links, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -146,6 +197,6 @@ public class BaseResource<T extends BaseResource<T>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ToStringHelper string() {
|
protected ToStringHelper string() {
|
||||||
return Objects.toStringHelper("").add("href", href).add("type", type);
|
return Objects.toStringHelper("").add("href", href).add("links", links).add("type", type);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue