diff --git a/compute/src/main/java/org/jclouds/compute/predicates/HardwarePredicates.java b/compute/src/main/java/org/jclouds/compute/predicates/HardwarePredicates.java new file mode 100644 index 0000000000..7c696b8231 --- /dev/null +++ b/compute/src/main/java/org/jclouds/compute/predicates/HardwarePredicates.java @@ -0,0 +1,51 @@ +/** + * 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.compute.predicates; + +import static com.google.common.base.Preconditions.checkNotNull; + +import org.jclouds.compute.domain.Hardware; + +import com.google.common.base.Predicate; + +/** + * Container for hardware filters (predicates). + * + * This class has static methods that create customized predicates to use with + * {@link org.jclouds.compute.ComputeService}. + * + * @author Adrian Cole + */ +public class HardwarePredicates { + + public static Predicate idEquals(final String id) { + checkNotNull(id, "id must be defined"); + return new Predicate() { + @Override + public boolean apply(Hardware hardware) { + return id.equals(hardware.getId()); + } + + @Override + public String toString() { + return "idEquals(" + id + ")"; + } + }; + } +} diff --git a/compute/src/test/java/org/jclouds/compute/predicates/HardwarePredicatesTest.java b/compute/src/test/java/org/jclouds/compute/predicates/HardwarePredicatesTest.java new file mode 100644 index 0000000000..466cf1daa3 --- /dev/null +++ b/compute/src/test/java/org/jclouds/compute/predicates/HardwarePredicatesTest.java @@ -0,0 +1,44 @@ +/** + * 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.compute.predicates; + +import org.jclouds.ContextBuilder; +import org.jclouds.compute.ComputeService; +import org.jclouds.compute.ComputeServiceContext; +import org.jclouds.compute.domain.Hardware; +import org.testng.annotations.Test; + +import com.google.common.collect.Iterables; + +/** + * + * @author Adrian Cole + */ +@Test +public class HardwarePredicatesTest { + ComputeService computeService = ContextBuilder.newBuilder("stub").build(ComputeServiceContext.class).getComputeService(); + + public void testHardwareId() { + Hardware first = Iterables.get(computeService.listHardwareProfiles(), 0); + assert HardwarePredicates.idEquals(first.getId()).apply(first); + Hardware second = Iterables.get(computeService.listHardwareProfiles(), 1); + assert !HardwarePredicates.idEquals(first.getId()).apply(second); + } + +} diff --git a/compute/src/test/java/org/jclouds/compute/predicates/ImagePredicatesTest.java b/compute/src/test/java/org/jclouds/compute/predicates/ImagePredicatesTest.java index 79705c0d43..33a6fcdac4 100644 --- a/compute/src/test/java/org/jclouds/compute/predicates/ImagePredicatesTest.java +++ b/compute/src/test/java/org/jclouds/compute/predicates/ImagePredicatesTest.java @@ -29,7 +29,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; /** - * Tests possible uses of OperatingSystemPredicates * * @author Adrian Cole */