Move static factory methods to the utility class
Change-Id: Icf458adf78f51823e4ffa31346595fa9716485bf
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
index f5301f7..431fcd8 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/ContinuousResource.java
@@ -98,7 +98,7 @@
@Override
public Optional<DiscreteResource> parent() {
- return id.parent().map(x -> Resource.discrete(x).resource());
+ return id.parent().map(x -> Resources.discrete(x).resource());
}
@Override
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
index f1876d5..4ed281c 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResource.java
@@ -80,17 +80,17 @@
public DiscreteResource child(Object child) {
checkArgument(!(child instanceof Class<?>));
- return Resource.discrete(id.child(child)).resource();
+ return Resources.discrete(id.child(child)).resource();
}
@Override
public ContinuousResource child(Class<?> child, double value) {
- return Resource.continuous(id.child(child)).resource(value);
+ return Resources.continuous(id.child(child)).resource(value);
}
@Override
public Optional<DiscreteResource> parent() {
- return id.parent().map(x -> Resource.discrete(x).resource());
+ return id.parent().map(x -> Resources.discrete(x).resource());
}
@Override
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
index 804dfba..4b83344 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/DiscreteResourceId.java
@@ -50,14 +50,14 @@
public DiscreteResourceId child(Object child) {
checkArgument(!(child instanceof Class<?>));
- return Resource.discrete(this, child).id();
+ return Resources.discrete(this, child).id();
}
@Override
public ContinuousResourceId child(Class<?> child) {
checkNotNull(child);
- return Resource.continuous(this, child).id();
+ return Resources.continuous(this, child).id();
}
@Override
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
index 749d87e..c402b42 100644
--- a/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
+++ b/core/api/src/main/java/org/onosproject/net/newresource/Resource.java
@@ -16,17 +16,10 @@
package org.onosproject.net.newresource;
import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableList;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import java.util.Arrays;
import java.util.List;
import java.util.Optional;
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* An object that represent a resource in a network.
* A Resource can represents path-like hierarchical structure with its ID. An ID of resource is
@@ -106,189 +99,4 @@
* @return the ID of this resource path
*/
ResourceId id();
-
- /**
- * Create a factory for discrete-type with the specified resource ID.
- *
- * @param id resource ID
- * @return {@link DiscreteFactory}
- */
- static DiscreteFactory discrete(DiscreteResourceId id) {
- checkNotNull(id);
-
- return new DiscreteFactory(id);
- }
-
- /**
- * Creates a factory for discrete-type with the specified parent ID and child.
- *
- * @param parent ID of the parent
- * @param child child
- * @return {@link DiscreteFactory}
- */
- static DiscreteFactory discrete(DiscreteResourceId parent, Object child) {
- checkNotNull(parent);
- checkNotNull(child);
- checkArgument(!(child instanceof Class<?>));
-
- return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
- .addAll(parent.components())
- .add(child)
- .build()));
- }
-
- /**
- * Create a factory for discrete-type with the specified device ID.
- *
- * @param device device ID
- * @return {@link DiscreteFactory}
- */
- static DiscreteFactory discrete(DeviceId device) {
- checkNotNull(device);
-
- return new DiscreteFactory(new DiscreteResourceId(ImmutableList.of(device)));
- }
-
- /**
- * Create a factory for discrete-type with the specified device ID and components.
- *
- * @param device device ID
- * @param components resource ID components other than the device ID
- * @return {@link DiscreteFactory}
- */
- static DiscreteFactory discrete(DeviceId device, Object... components) {
- checkNotNull(device);
- checkNotNull(components);
-
- return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
- .add(device)
- .add(components)
- .build()));
- }
-
- /**
- * Create a factory for discrete-type with the specified device ID, port number and components.
- *
- * @param device device ID
- * @param port port number
- * @param components resource ID components other than the device ID and port number
- * @return {@link DiscreteFactory}
- */
- static DiscreteFactory discrete(DeviceId device, PortNumber port, Object... components) {
- checkNotNull(device);
- checkNotNull(port);
- checkNotNull(components);
-
- return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
- .add(device)
- .add(port)
- .add(components)
- .build()));
- }
-
- /**
- * Create a factory for continuous-type with the specified resource ID.
- *
- * @param id resource ID
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(ContinuousResourceId id) {
- checkNotNull(id);
-
- return new ContinuousFactory(id);
- }
-
- /**
- * Creates a factory for continuous-type wit the specified parent ID and child.
- *
- * @param parent ID of the parent
- * @param child child
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(DiscreteResourceId parent, Class<?> child) {
- checkNotNull(parent);
- checkNotNull(child);
-
- return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
- .addAll(parent.components()), child));
- }
-
- /**
- * Create a factory for continuous-type with the specified device ID and type.
- *
- * @param device device ID
- * @param cls type of resource the returned factory will create
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(DeviceId device, Class<?> cls) {
- checkNotNull(device);
- checkNotNull(cls);
-
- return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder().add(device), cls));
- }
-
- /**
- * Create a factory for continuous-type with the specified device ID and components.
- * The last element of the components must be a {@link Class} instance. Otherwise,
- * an {@link IllegalArgumentException} is thrown.
- *
- * @param device device ID
- * @param components resource ID components other than the device ID.
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(DeviceId device, Object... components) {
- checkNotNull(device);
- checkNotNull(components);
- checkArgument(components.length > 1);
-
- Object last = components[components.length - 1];
- checkArgument(last instanceof Class<?>);
-
- return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
- .add(device)
- .add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
- }
-
- /**
- * Create a factory for continuous-type with the specified device ID, port number and type.
- *
- * @param device device ID
- * @param port port number
- * @param cls type of resource the returned factory will create
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(DeviceId device, PortNumber port, Class<?> cls) {
- checkNotNull(device);
- checkNotNull(port);
- checkNotNull(cls);
-
- return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
- .add(device)
- .add(port), cls));
- }
-
- /**
- * Create a factory for continuous-type with the specified device ID and components.
- * The last element of the components must be a {@link Class} instance. Otherwise,
- * an {@link IllegalArgumentException} is thrown.
- *
- * @param device device ID
- * @param port port number
- * @param components resource ID components other than the device ID and port number.
- * @return {@link ContinuousFactory}
- */
- static ContinuousFactory continuous(DeviceId device, PortNumber port, Object... components) {
- checkNotNull(device);
- checkNotNull(port);
- checkNotNull(components);
- checkArgument(components.length > 1);
-
- Object last = components[components.length - 1];
- checkArgument(last instanceof Class<?>);
-
- return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
- .add(device)
- .add(port)
- .add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
- }
}
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/Resources.java b/core/api/src/main/java/org/onosproject/net/newresource/Resources.java
new file mode 100644
index 0000000..13b226e
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/newresource/Resources.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed 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.onosproject.net.newresource;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
+
+import java.util.Arrays;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Utility class for resource related classes.
+ */
+@Beta
+public final class Resources {
+ // public construction is prohibited
+ private Resources() {}
+
+ /**
+ * Create a factory for discrete-type with the specified resource ID.
+ *
+ * @param id resource ID
+ * @return {@link DiscreteFactory}
+ */
+ public static DiscreteFactory discrete(DiscreteResourceId id) {
+ checkNotNull(id);
+
+ return new DiscreteFactory(id);
+ }
+
+ /**
+ * Creates a factory for discrete-type with the specified parent ID and child.
+ *
+ * @param parent ID of the parent
+ * @param child child
+ * @return {@link DiscreteFactory}
+ */
+ public static DiscreteFactory discrete(DiscreteResourceId parent, Object child) {
+ checkNotNull(parent);
+ checkNotNull(child);
+ checkArgument(!(child instanceof Class<?>));
+
+ return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
+ .addAll(parent.components())
+ .add(child)
+ .build()));
+ }
+
+ /**
+ * Create a factory for discrete-type with the specified device ID.
+ *
+ * @param device device ID
+ * @return {@link DiscreteFactory}
+ */
+ public static DiscreteFactory discrete(DeviceId device) {
+ checkNotNull(device);
+
+ return new DiscreteFactory(new DiscreteResourceId(ImmutableList.of(device)));
+ }
+
+ /**
+ * Create a factory for discrete-type with the specified device ID and components.
+ *
+ * @param device device ID
+ * @param components resource ID components other than the device ID
+ * @return {@link DiscreteFactory}
+ */
+ public static DiscreteFactory discrete(DeviceId device, Object... components) {
+ checkNotNull(device);
+ checkNotNull(components);
+
+ return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
+ .add(device)
+ .add(components)
+ .build()));
+ }
+
+ /**
+ * Create a factory for discrete-type with the specified device ID, port number and components.
+ *
+ * @param device device ID
+ * @param port port number
+ * @param components resource ID components other than the device ID and port number
+ * @return {@link DiscreteFactory}
+ */
+ public static DiscreteFactory discrete(DeviceId device, PortNumber port, Object... components) {
+ checkNotNull(device);
+ checkNotNull(port);
+ checkNotNull(components);
+
+ return new DiscreteFactory(new DiscreteResourceId(ImmutableList.builder()
+ .add(device)
+ .add(port)
+ .add(components)
+ .build()));
+ }
+
+ /**
+ * Create a factory for continuous-type with the specified resource ID.
+ *
+ * @param id resource ID
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(ContinuousResourceId id) {
+ checkNotNull(id);
+
+ return new ContinuousFactory(id);
+ }
+
+ /**
+ * Creates a factory for continuous-type wit the specified parent ID and child.
+ *
+ * @param parent ID of the parent
+ * @param child child
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(DiscreteResourceId parent, Class<?> child) {
+ checkNotNull(parent);
+ checkNotNull(child);
+
+ return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
+ .addAll(parent.components()), child));
+ }
+
+ /**
+ * Create a factory for continuous-type with the specified device ID and type.
+ *
+ * @param device device ID
+ * @param cls type of resource the returned factory will create
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(DeviceId device, Class<?> cls) {
+ checkNotNull(device);
+ checkNotNull(cls);
+
+ return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder().add(device), cls));
+ }
+
+ /**
+ * Create a factory for continuous-type with the specified device ID and components.
+ * The last element of the components must be a {@link Class} instance. Otherwise,
+ * an {@link IllegalArgumentException} is thrown.
+ *
+ * @param device device ID
+ * @param components resource ID components other than the device ID.
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(DeviceId device, Object... components) {
+ checkNotNull(device);
+ checkNotNull(components);
+ checkArgument(components.length > 1);
+
+ Object last = components[components.length - 1];
+ checkArgument(last instanceof Class<?>);
+
+ return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
+ .add(device)
+ .add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
+ }
+
+ /**
+ * Create a factory for continuous-type with the specified device ID, port number and type.
+ *
+ * @param device device ID
+ * @param port port number
+ * @param cls type of resource the returned factory will create
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(DeviceId device, PortNumber port, Class<?> cls) {
+ checkNotNull(device);
+ checkNotNull(port);
+ checkNotNull(cls);
+
+ return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
+ .add(device)
+ .add(port), cls));
+ }
+
+ /**
+ * Create a factory for continuous-type with the specified device ID and components.
+ * The last element of the components must be a {@link Class} instance. Otherwise,
+ * an {@link IllegalArgumentException} is thrown.
+ *
+ * @param device device ID
+ * @param port port number
+ * @param components resource ID components other than the device ID and port number.
+ * @return {@link ContinuousFactory}
+ */
+ public static ContinuousFactory continuous(DeviceId device, PortNumber port, Object... components) {
+ checkNotNull(device);
+ checkNotNull(port);
+ checkNotNull(components);
+ checkArgument(components.length > 1);
+
+ Object last = components[components.length - 1];
+ checkArgument(last instanceof Class<?>);
+
+ return new ContinuousFactory(new ContinuousResourceId(ImmutableList.builder()
+ .add(device)
+ .add(port)
+ .add(Arrays.copyOfRange(components, 0, components.length - 1)), (Class<?>) last));
+ }
+}