Issue 695: Added builder for Disks and removed setter, test. Used Actions builder externally and made constructor private

This commit is contained in:
Jason King 2011-11-21 16:01:55 +00:00
parent 5cd43815af
commit ca69fbf0f7
6 changed files with 109 additions and 8 deletions

View File

@ -68,7 +68,7 @@ public class Actions {
} }
} }
public Actions() { private Actions() {
//For JAXB and builder use //For JAXB and builder use
} }

View File

@ -35,9 +35,52 @@ import static com.google.common.base.Preconditions.checkNotNull;
*/ */
public class Disks { public class Disks {
private LinkedHashSet<VirtualDisk> disks = Sets.newLinkedHashSet(); @SuppressWarnings("unchecked")
public static Builder builder() {
return new Builder();
}
public Builder toBuilder() {
return new Builder().fromDisks(this);
}
public static class Builder {
private Set<VirtualDisk> disks = Sets.newLinkedHashSet();
/**
* @see Disks#getVirtualDisks()
*/
public Builder disks(Set<VirtualDisk> disks) {
this.disks = Sets.newLinkedHashSet(checkNotNull(disks, "disks"));
return this;
}
public Builder addDisk(VirtualDisk disk) {
disks.add(checkNotNull(disk,"disk"));
return this;
}
public Disks build() {
return new Disks(disks);
}
public Builder fromDisks(Disks in) {
return disks(in.getVirtualDisks());
}
}
@XmlElement(name = "Disk") @XmlElement(name = "Disk")
private LinkedHashSet<VirtualDisk> disks = Sets.newLinkedHashSet();
private Disks() {
//For JAXB and builder use
}
private Disks(Set<VirtualDisk> disks) {
this.disks = Sets.newLinkedHashSet(disks);
}
public void setVirtualDisk(VirtualDisk disk) { public void setVirtualDisk(VirtualDisk disk) {
checkNotNull(disk,"disk"); checkNotNull(disk,"disk");
this.disks.add(disk); this.disks.add(disk);

View File

@ -151,7 +151,7 @@ public class HardwareConfiguration extends BaseResource<HardwareConfiguration> {
} }
@XmlElement(name = "Actions", required = false) @XmlElement(name = "Actions", required = false)
private Actions actions = new Actions(); private Actions actions = Actions.builder().build();
@XmlElement(name = "ProcessorCount", required = true) @XmlElement(name = "ProcessorCount", required = true)
private int processorCount; private int processorCount;
@ -160,14 +160,14 @@ public class HardwareConfiguration extends BaseResource<HardwareConfiguration> {
private Memory memory; private Memory memory;
@XmlElement(name = "Disks", required = false) @XmlElement(name = "Disks", required = false)
private Disks virtualDisks = new Disks(); private Disks virtualDisks = Disks.builder().build();
@XmlElement(name = "Nics", required = false) @XmlElement(name = "Nics", required = false)
private Nics virtualNics = new Nics(); private Nics virtualNics = new Nics();
public HardwareConfiguration(Set<Action> actions, int processorCount, @Nullable Memory memory, Set<VirtualDisk> virtualDisks, Set<VirtualNic> virtualNics) { public HardwareConfiguration(Set<Action> actions, int processorCount, @Nullable Memory memory, Set<VirtualDisk> virtualDisks, Set<VirtualNic> virtualNics) {
this.actions = Actions.builder().actions(checkNotNull(actions, "actions")).build(); this.actions = Actions.builder().actions(checkNotNull(actions, "actions")).build();
for( VirtualDisk disk: checkNotNull(virtualDisks, "virtualDisks")) this.virtualDisks.setVirtualDisk(disk); this.virtualDisks = Disks.builder().disks(checkNotNull(virtualDisks,"virtualDisks")).build();
for( VirtualNic virtualNic: checkNotNull(virtualNics, "virtualNics")) this.virtualNics.setVirtualNic(virtualNic); for( VirtualNic virtualNic: checkNotNull(virtualNics, "virtualNics")) this.virtualNics.setVirtualNic(virtualNic);
this.processorCount = processorCount; this.processorCount = processorCount;

View File

@ -37,7 +37,7 @@ public class AssignedIpAddresses extends BaseResource<AssignedIpAddresses> {
//TODO links //TODO links
@XmlElement(name = "Actions", required = true) @XmlElement(name = "Actions", required = true)
private Actions actions = new Actions(); private Actions actions = Actions.builder().build();
@XmlElement(name = "Networks", required = true) @XmlElement(name = "Networks", required = true)
private DeviceNetworks networks = new DeviceNetworks(); private DeviceNetworks networks = new DeviceNetworks();

View File

@ -63,7 +63,7 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
public static class Builder extends BaseNamedResource.Builder<VirtualMachine> { public static class Builder extends BaseNamedResource.Builder<VirtualMachine> {
//TODO There are some more fields //TODO There are some more fields
private Links links = new Links(); private Links links = new Links();
private Actions actions = new Actions(); private Actions actions = Actions.builder().build();
private Tasks tasks = new Tasks(); private Tasks tasks = new Tasks();
private String description; private String description;
private VirtualMachineStatus status; private VirtualMachineStatus status;
@ -275,7 +275,7 @@ public class VirtualMachine extends BaseNamedResource<VirtualMachine> {
private Tasks tasks = new Tasks(); private Tasks tasks = new Tasks();
@XmlElement(name = "Actions", required = true) @XmlElement(name = "Actions", required = true)
private Actions actions = new Actions(); private Actions actions = Actions.builder().build();
@XmlElement(name = "Description", required = true) @XmlElement(name = "Description", required = true)
private String description; private String description;

View File

@ -0,0 +1,58 @@
/**
* 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.tmrk.enterprisecloud.hardware;
import org.jclouds.tmrk.enterprisecloud.domain.Size;
import org.jclouds.tmrk.enterprisecloud.domain.hardware.Disks;
import org.jclouds.tmrk.enterprisecloud.domain.hardware.VirtualDisk;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.net.URISyntaxException;
import java.util.Set;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/**
* @author Jason King
*/
@Test(groups = "unit", testName = "DisksTest")
public class DisksTest {
private VirtualDisk disk;
private Disks disks;
@BeforeMethod()
public void setUp() throws URISyntaxException {
disk = VirtualDisk.builder().index(0).name("test disk").size(Size.builder().value(1).unit("GB").build()).build();
disks = Disks.builder().addDisk(disk).build();
}
@Test
public void testAddDisk() throws URISyntaxException {
VirtualDisk disk2 = VirtualDisk.builder().index(1).name("test disk 1").size(Size.builder().value(1).unit("GB").build()).build();
Disks twoDisks = disks.toBuilder().addDisk(disk2).build();
Set<VirtualDisk> virtualDisks = twoDisks.getVirtualDisks();
assertEquals(2, virtualDisks.size());
assertTrue(virtualDisks.contains(disk));
assertTrue(virtualDisks.contains(disk2));
}
}