Merge "the first part of intent classes of NEMO project with unit tests"
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInput.java
new file mode 100644
index 0000000..fe4d1a4
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInput.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+/**
+ * Representation of the beginning transaction input.
+ */
+public interface BeginTransactionInput {
+
+ /**
+ * Returns a unique identifier for a user.
+ *
+ * @return the user's identifier
+ */
+ UserId getUserId();
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilder.java
new file mode 100644
index 0000000..3686429
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilder.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Representation of the beginning transaction input builder.
+ */
+public class BeginTransactionInputBuilder {
+
+ private Map<Class<? extends BeginTransactionInput>, BeginTransactionInput>
+ augmentation = new HashMap<>();
+
+ private UserId userId;
+
+ /**
+ * Creates a beginning transaction input builder.
+ */
+ public BeginTransactionInputBuilder() {
+ }
+
+ /**
+ * Creates a beginning transaction input builder from
+ * a beginning transaction input.
+ *
+ * @param base a beginning transaction input builder object
+ */
+ public BeginTransactionInputBuilder(BeginTransactionInput base) {
+ userId = base.getUserId();
+ if (base instanceof BeginTransactionInputImpl) {
+ BeginTransactionInputImpl impl = (BeginTransactionInputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Sets the user ID for the builder to use.
+ *
+ * @param id user's ID to set
+ * @return self
+ */
+ public BeginTransactionInputBuilder userId(UserId id) {
+ userId = id;
+ return this;
+ }
+
+ /**
+ * Adds augmentation by a class type and a beginning transaction input.
+ * If the augmentation is null, remove the augmentation type
+ * key from the hash map.
+ *
+ * @param augmentationType class extends BeginTransactionInput
+ * @param augmentation a beginning transaction input object
+ * @return self
+ */
+ public BeginTransactionInputBuilder addAugmentation(
+ Class<? extends BeginTransactionInput> augmentationType,
+ BeginTransactionInput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType class extends BeginTransactionInput
+ * @return self
+ */
+ public BeginTransactionInputBuilder removeAugmentation(
+ Class<? extends BeginTransactionInput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds a beginning transaction input object.
+ *
+ * @return beginning transaction input object
+ */
+ public BeginTransactionInput build() {
+ return new BeginTransactionInputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of BeginTransactionInput.
+ */
+ private static final class BeginTransactionInputImpl
+ implements BeginTransactionInput {
+
+ private final UserId userId;
+
+ private final Map<Class<? extends BeginTransactionInput>,
+ BeginTransactionInput> augmentation;
+
+ private BeginTransactionInputImpl(BeginTransactionInputBuilder base) {
+ userId = base.userId;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public UserId getUserId() {
+ return userId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ BeginTransactionInputImpl other = (BeginTransactionInputImpl) obj;
+ return Objects.equals(userId, other.getUserId()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("userId", userId)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutput.java
new file mode 100644
index 0000000..47cbc8b
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of the beginning transaction output.
+ */
+public interface BeginTransactionOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilder.java
new file mode 100644
index 0000000..fe2948f
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilder.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of the beginning transaction output builder.
+ */
+public class BeginTransactionOutputBuilder extends DefaultOutputBuilderBase {
+
+ private Map<Class<? extends BeginTransactionOutput>, BeginTransactionOutput>
+ augmentation = new HashMap<>();
+
+ /**
+ * Creates a beginning transaction output builder.
+ */
+ public BeginTransactionOutputBuilder() {
+ }
+
+ /**
+ * Creates the beginning transaction output builder from a RPC result.
+ *
+ * @param rpc a common RPC result
+ */
+ public BeginTransactionOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Creates a beginning transaction output builder from
+ * a beginning transaction output.
+ *
+ * @param base beginning transaction output object
+ */
+ public BeginTransactionOutputBuilder(BeginTransactionOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof BeginTransactionOutputImpl) {
+ BeginTransactionOutputImpl impl = (BeginTransactionOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and a beginning transaction output.
+ * If the augmentation is null, remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType class extends BeginTransactionOutput interface
+ * @param augmentation a beginning transaction output
+ * @return self
+ */
+ public BeginTransactionOutputBuilder addAugmentation(
+ Class<? extends BeginTransactionOutput> augmentationType,
+ BeginTransactionOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType class extends BeginTransactionOutput interface
+ * @return self
+ */
+ public BeginTransactionOutputBuilder removeAugmentation(
+ Class<? extends BeginTransactionOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds a beginning transaction output object.
+ *
+ * @return a beginning transaction output object
+ */
+ public BeginTransactionOutput build() {
+ return new BeginTransactionOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of BeginTransactionOutput.
+ */
+ private static final class BeginTransactionOutputImpl
+ extends DefaultOutputImplBase
+ implements BeginTransactionOutput {
+
+ private final Map<Class<? extends BeginTransactionOutput>,
+ BeginTransactionOutput> augmentation;
+
+ private BeginTransactionOutputImpl(BeginTransactionOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ BeginTransactionOutputImpl other =
+ (BeginTransactionOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/CommonRpcResult.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/CommonRpcResult.java
new file mode 100644
index 0000000..fe4d95f
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/CommonRpcResult.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.Map;
+import com.google.common.collect.ImmutableMap;
+
+/**
+ * Representation of common RPC result.
+ */
+public interface CommonRpcResult {
+
+ /**
+ * Returns result code.
+ *
+ * @return result code
+ */
+ Code getResultCode();
+
+ /**
+ * Returns message.
+ *
+ * @return message
+ */
+ String getMessage();
+
+ /**
+ * Representation of result code enum.
+ */
+ enum Code {
+
+ /**
+ * The invoked RPC was executed successfully.
+ */
+ OK(0),
+
+ /**
+ * An error occurred while executing the RPC.
+ */
+ ERROR(1);
+
+ private static final Map<Integer, Code> VALUE_MAP;
+
+ int value;
+
+ Code(int value) {
+ this.value = value;
+ }
+
+ /**
+ * Returns integer value.
+ *
+ * @return integer value
+ */
+ public int intValue() {
+ return value;
+ }
+
+ static {
+ ImmutableMap.Builder<Integer, Code> b = ImmutableMap.builder();
+ for (Code enumItem : Code.values()) {
+ b.put(enumItem.value, enumItem);
+ }
+ VALUE_MAP = b.build();
+ }
+
+ /**
+ * Returns result code by value.
+ *
+ * @param value a map key value
+ * @return corresponding result code constant
+ */
+ public static Code forValue(int value) {
+ Code code = VALUE_MAP.get(value);
+ if (code == null) {
+ throw new IllegalArgumentException(
+ String.format("Param %d is not valid", value));
+ }
+ return code;
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutput.java
new file mode 100644
index 0000000..64ee555
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutput.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+/**
+ * Representation of the default output.
+ */
+public interface DefaultOutput {
+
+ /**
+ * Returns message.
+ *
+ * @return message
+ */
+ String getMessage();
+
+ /**
+ * Returns result code.
+ *
+ * @return result code
+ */
+ Code getResultCode();
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputBuilderBase.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputBuilderBase.java
new file mode 100644
index 0000000..fe19437
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputBuilderBase.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+/**
+ * Representation of the base of output builder.
+ */
+public class DefaultOutputBuilderBase {
+
+ /**
+ * Message for the builder to use.
+ */
+ protected String message;
+ /**
+ * Result code for the builder to use.
+ */
+ protected Code resultCode;
+
+ /**
+ * Sets the message for the builder to use.
+ *
+ * @param msg message to set
+ * @return self
+ */
+ public DefaultOutputBuilderBase message(String msg) {
+ message = msg;
+ return this;
+ }
+
+ /**
+ * Sets the result code for the builder to use.
+ *
+ * @param code result code to set
+ * @return self
+ */
+ public DefaultOutputBuilderBase resultCode(Code code) {
+ resultCode = code;
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputImplBase.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputImplBase.java
new file mode 100644
index 0000000..1a816ba
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/DefaultOutputImplBase.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+/**
+ * Representation of the base of output implement.
+ */
+public abstract class DefaultOutputImplBase {
+
+ /**
+ * Message.
+ */
+ protected String message = null;
+
+ /**
+ * Result code.
+ */
+ protected Code resultCode = null;
+
+ /**
+ * Returns message.
+ *
+ * @return message
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * Returns result code.
+ *
+ * @return result code
+ */
+ public Code getResultCode() {
+ return resultCode;
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInput.java
new file mode 100644
index 0000000..4d138dd
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInput.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+/**
+ * Representation of the end transaction input.
+ */
+public interface EndTransactionInput {
+
+ /**
+ * Returns user's identifier.
+ *
+ * @return user's identifier
+ */
+ UserId getUserId();
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilder.java
new file mode 100644
index 0000000..c88ed0e
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilder.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Representation of the end transaction input builder.
+ */
+public class EndTransactionInputBuilder {
+
+ private Map<Class<? extends EndTransactionInput>, EndTransactionInput>
+ augmentation = new HashMap<>();
+
+ private UserId userId;
+
+ /**
+ * Creates an end transaction input builder.
+ */
+ public EndTransactionInputBuilder() {
+ }
+
+ /**
+ * Creates an end transaction input builder from
+ * the end transaction input.
+ *
+ * @param base EndTransactionInput object
+ */
+ public EndTransactionInputBuilder(EndTransactionInput base) {
+ userId = base.getUserId();
+ if (base instanceof EndTransactionInputImpl) {
+ EndTransactionInputImpl impl = (EndTransactionInputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Sets the user ID for the builder to use.
+ *
+ * @param id user's ID
+ * @return self
+ */
+ public EndTransactionInputBuilder userId(UserId id) {
+ userId = id;
+ return this;
+ }
+
+ /**
+ * Adds augmentation by a class type and an end transaction input.
+ * If the augmentation is null, remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType class extends EndTransactionInput
+ * @param augmentation EndTransactionInput object
+ * @return self
+ */
+ public EndTransactionInputBuilder addAugmentation(
+ Class<? extends EndTransactionInput> augmentationType,
+ EndTransactionInput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation a class type.
+ *
+ * @param augmentationType class that extends EndTransactionInput
+ * @return self
+ */
+ public EndTransactionInputBuilder removeAugmentation(
+ Class<? extends EndTransactionInput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds an end transaction input builder object.
+ *
+ * @return an end transaction input builder object
+ */
+ public EndTransactionInput build() {
+ return new EndTransactionInputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of EndTransactionInput.
+ */
+ private static final class EndTransactionInputImpl
+ implements EndTransactionInput {
+
+ private final UserId userId;
+
+ private final Map<Class<? extends EndTransactionInput>,
+ EndTransactionInput> augmentation;
+
+ private EndTransactionInputImpl(EndTransactionInputBuilder base) {
+ userId = base.userId;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public UserId getUserId() {
+ return userId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ EndTransactionInputImpl other = (EndTransactionInputImpl) obj;
+ return Objects.equals(userId, other.getUserId()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("userId", userId)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutput.java
new file mode 100644
index 0000000..fe7ac22
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of the end transaction output.
+ */
+public interface EndTransactionOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilder.java
new file mode 100644
index 0000000..5692c73
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilder.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of the end transaction output builder.
+ */
+public class EndTransactionOutputBuilder extends DefaultOutputBuilderBase {
+
+ private Map<Class<? extends EndTransactionOutput>, EndTransactionOutput>
+ augmentation = new HashMap<>();
+
+ /**
+ * Creates an end transaction output builder object.
+ */
+ public EndTransactionOutputBuilder() {
+ }
+
+ /**
+ * Creates an end transaction output builder object from a RPC result.
+ *
+ * @param rpc a common RPC result
+ */
+ public EndTransactionOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Creates an end transaction output builder object from
+ * the end transaction output.
+ *
+ * @param base end transaction output object
+ */
+ public EndTransactionOutputBuilder(EndTransactionOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof EndTransactionOutputImpl) {
+ EndTransactionOutputImpl impl = (EndTransactionOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and an end transaction output.
+ * If the augmentation is null, remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType class that extends EndTransactionOutput
+ * @param augmentation EndTransactionOutput object
+ * @return self
+ */
+ public EndTransactionOutputBuilder addAugmentation(
+ Class<? extends EndTransactionOutput> augmentationType,
+ EndTransactionOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType class that extends EndTransactionOutput
+ * @return self
+ */
+ public EndTransactionOutputBuilder removeAugmentation(
+ Class<? extends EndTransactionOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Returns an end transaction output object.
+ *
+ * @return an end transaction output object
+ */
+ public EndTransactionOutput build() {
+ return new EndTransactionOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of EndTransactionOutput.
+ */
+ private static final class EndTransactionOutputImpl
+ extends DefaultOutputImplBase
+ implements EndTransactionOutput {
+
+ private final Map<Class<? extends EndTransactionOutput>,
+ EndTransactionOutput> augmentation;
+
+ private EndTransactionOutputImpl(EndTransactionOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ EndTransactionOutputImpl other = (EndTransactionOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInput.java
new file mode 100644
index 0000000..d0be471
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInput.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+/**
+ * Representation of language style request input.
+ */
+public interface LanguageStyleNemoRequestInput {
+
+ /**
+ * Returns user's identifier.
+ *
+ * @return user identifier
+ */
+ UserId getUserId();
+
+ /**
+ * Returns statement.
+ *
+ * @return statement
+ */
+ String getNemoStatement();
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilder.java
new file mode 100644
index 0000000..705d750
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilder.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Representation of language style request input object builder.
+ */
+public class LanguageStyleNemoRequestInputBuilder {
+
+ private Map<Class<? extends LanguageStyleNemoRequestInput>,
+ LanguageStyleNemoRequestInput> augmentation = new HashMap<>();
+
+ private String nemoStatement;
+
+ private UserId userId;
+
+ /**
+ * Creates a language style request input builder.
+ */
+ public LanguageStyleNemoRequestInputBuilder() {
+ }
+
+ /**
+ * Creates a language style request input builder from
+ * the language style request input.
+ *
+ * @param base language style request input object
+ */
+ public LanguageStyleNemoRequestInputBuilder(LanguageStyleNemoRequestInput base) {
+ nemoStatement = base.getNemoStatement();
+ userId = base.getUserId();
+ if (base instanceof LanguageStyleNemoRequestInputImpl) {
+ LanguageStyleNemoRequestInputImpl impl =
+ (LanguageStyleNemoRequestInputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Sets the statement for the builder to use.
+ *
+ * @param statement statement
+ * @return self
+ */
+ public LanguageStyleNemoRequestInputBuilder nemoStatement(String statement) {
+ nemoStatement = statement;
+ return this;
+ }
+
+ /**
+ * Sets the user ID for the builder to use.
+ *
+ * @param id user ID
+ * @return self
+ */
+ public LanguageStyleNemoRequestInputBuilder userId(UserId id) {
+ userId = id;
+ return this;
+ }
+
+ /**
+ * Adds augmentation by a class type and a language style request input.
+ * If the augmentation is null,remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType type that extends LanguageStyleNemoRequestInput
+ * @param augmentation an language style request input object
+ * @return self
+ */
+ public LanguageStyleNemoRequestInputBuilder addAugmentation(
+ Class<? extends LanguageStyleNemoRequestInput> augmentationType,
+ LanguageStyleNemoRequestInput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType type that extends LanguageStyleNemoRequestInput
+ * @return self
+ */
+ public LanguageStyleNemoRequestInputBuilder removeAugmentation(
+ Class<? extends LanguageStyleNemoRequestInput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds a language style request input object.
+ *
+ * @return a language style request input object
+ */
+ public LanguageStyleNemoRequestInput build() {
+ return new LanguageStyleNemoRequestInputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of LanguageStyleNemoRequestInput.
+ */
+ private static final class LanguageStyleNemoRequestInputImpl
+ implements LanguageStyleNemoRequestInput {
+
+ private final String nemoStatement;
+
+ private final UserId userId;
+
+ private final Map<Class<? extends LanguageStyleNemoRequestInput>,
+ LanguageStyleNemoRequestInput> augmentation;
+
+ private LanguageStyleNemoRequestInputImpl(
+ LanguageStyleNemoRequestInputBuilder base) {
+ nemoStatement = base.nemoStatement;
+ userId = base.userId;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public String getNemoStatement() {
+ return nemoStatement;
+ }
+
+ @Override
+ public UserId getUserId() {
+ return userId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(nemoStatement, userId, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ LanguageStyleNemoRequestInputImpl other =
+ (LanguageStyleNemoRequestInputImpl) obj;
+ return Objects.equals(nemoStatement, other.getNemoStatement()) &&
+ Objects.equals(userId, other.getUserId()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("nemoStatement", nemoStatement)
+ .add("userId", userId)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutput.java
new file mode 100644
index 0000000..e571974
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of the language style request output.
+ */
+public interface LanguageStyleNemoRequestOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilder.java
new file mode 100644
index 0000000..bf96be6
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilder.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of language style request output builder.
+ */
+public class LanguageStyleNemoRequestOutputBuilder
+ extends DefaultOutputBuilderBase {
+
+ private Map<Class<? extends LanguageStyleNemoRequestOutput>,
+ LanguageStyleNemoRequestOutput> augmentation = new HashMap<>();
+
+ /**
+ * Constructs a language style request output builder object.
+ */
+ public LanguageStyleNemoRequestOutputBuilder() {
+ }
+
+ /**
+ * Constructs a language style request output builder object.
+ *
+ * @param rpc common RPC result
+ */
+ public LanguageStyleNemoRequestOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Constructs a language style request output object.
+ *
+ * @param base language style request output object
+ */
+ public LanguageStyleNemoRequestOutputBuilder(
+ LanguageStyleNemoRequestOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof LanguageStyleNemoRequestOutputImpl) {
+ LanguageStyleNemoRequestOutputImpl impl =
+ (LanguageStyleNemoRequestOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and a language style request output.
+ * If the augmentation is null, remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType type that extends LanguageStyleNemoRequestOutput
+ * @param augmentation language style request output object
+ * @return self
+ */
+ public LanguageStyleNemoRequestOutputBuilder addAugmentation(
+ Class<? extends LanguageStyleNemoRequestOutput> augmentationType,
+ LanguageStyleNemoRequestOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType type that extends LanguageStyleNemoRequestOutput
+ * @return self
+ */
+ public LanguageStyleNemoRequestOutputBuilder removeAugmentation(
+ Class<? extends LanguageStyleNemoRequestOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds a language style request output object.
+ *
+ * @return a language style request output object
+ */
+ public LanguageStyleNemoRequestOutput build() {
+ return new LanguageStyleNemoRequestOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of LanguageStyleNemoRequestOutput.
+ */
+ private static final class LanguageStyleNemoRequestOutputImpl
+ extends DefaultOutputImplBase
+ implements LanguageStyleNemoRequestOutput {
+
+ private final Map<Class<? extends LanguageStyleNemoRequestOutput>,
+ LanguageStyleNemoRequestOutput> augmentation;
+
+ private LanguageStyleNemoRequestOutputImpl(
+ LanguageStyleNemoRequestOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ LanguageStyleNemoRequestOutputImpl other =
+ (LanguageStyleNemoRequestOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserInput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserInput.java
new file mode 100644
index 0000000..76631d8
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserInput.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import org.onosproject.nemo.model.common.UserId;
+import org.onosproject.nemo.model.common.UserName;
+import org.onosproject.nemo.model.common.UserPassword;
+import org.onosproject.nemo.model.common.UserRoleName;
+
+/**
+ * Representation of register user input.
+ */
+public interface RegisterUserInput {
+
+ /**
+ * Returns user's identifier.
+ *
+ * @return a unique ID for a user.
+ */
+ UserId getUserId();
+
+ /**
+ * Returns user's name.
+ *
+ * @return a user-visible and unique name for the user.
+ */
+ UserName getUserName();
+
+ /**
+ * Returns user's password.
+ *
+ * @return a password of a user.
+ */
+ UserPassword getUserPassword();
+
+ /**
+ * Returns user's role.
+ *
+ * @return a role of a user.
+ */
+ UserRoleName getUserRole();
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutput.java
new file mode 100644
index 0000000..6652dbd
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of register user output.
+ */
+public interface RegisterUserOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilder.java
new file mode 100644
index 0000000..58ca040
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilder.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of register user output builder.
+ */
+public class RegisterUserOutputBuilder extends DefaultOutputBuilderBase {
+
+ private Map<Class<? extends RegisterUserOutput>, RegisterUserOutput>
+ augmentation = new HashMap<>();
+
+ public RegisterUserOutputBuilder() {
+ }
+
+ /**
+ * Constructs the register user output builder from a result code.
+ *
+ * @param rpc common RPC result
+ */
+ public RegisterUserOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Constructs register user output builder.
+ *
+ * @param base register user output object
+ */
+ public RegisterUserOutputBuilder(RegisterUserOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof RegisterUserOutputImpl) {
+ RegisterUserOutputImpl impl = (RegisterUserOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and a register user output.
+ * If the augmentation is null, remove the augmentation type key
+ * from the hash map.
+ *
+ * @param augmentationType type that extends RegisterUserOutput
+ * @param augmentation register user output object
+ * @return self
+ */
+ public RegisterUserOutputBuilder addAugmentation(
+ Class<? extends RegisterUserOutput> augmentationType,
+ RegisterUserOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType type that extends RegisterUserOutput
+ * @return self
+ */
+ public RegisterUserOutputBuilder removeAugmentation(
+ Class<? extends RegisterUserOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds a register user output object.
+ *
+ * @return the register user output object
+ */
+ public RegisterUserOutput build() {
+ return new RegisterUserOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of RegisterUserOutput.
+ */
+ private static final class RegisterUserOutputImpl
+ extends DefaultOutputImplBase
+ implements RegisterUserOutput {
+
+ private final Map<Class<? extends RegisterUserOutput>, RegisterUserOutput>
+ augmentation;
+
+ private RegisterUserOutputImpl(RegisterUserOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ RegisterUserOutputImpl other = (RegisterUserOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutput.java
new file mode 100644
index 0000000..a406d3d
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of structure style delete output.
+ */
+public interface StructureStyleNemoDeleteOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilder.java
new file mode 100644
index 0000000..0feb8ec
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilder.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of structure style delete output builder.
+ */
+public class StructureStyleNemoDeleteOutputBuilder
+ extends DefaultOutputBuilderBase {
+
+ Map<Class<? extends StructureStyleNemoDeleteOutput>,
+ StructureStyleNemoDeleteOutput> augmentation
+ = new HashMap<>();
+
+ /**
+ * Constructs structure style delete output builder.
+ */
+ public StructureStyleNemoDeleteOutputBuilder() {
+ }
+
+ /**
+ * Constructs structure style delete output builder
+ * from a RPC result.
+ *
+ * @param rpc common RPC result
+ */
+ public StructureStyleNemoDeleteOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Constructs structure style delete output builder from
+ * a structure style delete output.
+ *
+ * @param base structure style delete output object
+ */
+ public StructureStyleNemoDeleteOutputBuilder(
+ StructureStyleNemoDeleteOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof StructureStyleNemoDeleteOutputImpl) {
+ StructureStyleNemoDeleteOutputImpl impl =
+ (StructureStyleNemoDeleteOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and a structure style delete
+ * output object.If the augmentation is null,remove the augmentation
+ * type key from the hash map.
+ *
+ * @param augmentationType type that extends StructureStyleNemoDeleteOutput
+ * @param augmentation structure style delete output object
+ * @return self
+ */
+ public StructureStyleNemoDeleteOutputBuilder addAugmentation(
+ Class<? extends StructureStyleNemoDeleteOutput> augmentationType,
+ StructureStyleNemoDeleteOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType type that extends StructureStyleNemoDeleteOutput
+ * @return self
+ */
+ public StructureStyleNemoDeleteOutputBuilder removeAugmentation(
+ Class<? extends StructureStyleNemoDeleteOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds structure style delete output object.
+ *
+ * @return structure style delete output object
+ */
+ public StructureStyleNemoDeleteOutput build() {
+ return new StructureStyleNemoDeleteOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of StructureStyleNemoDeleteOutput.
+ */
+ private static final class StructureStyleNemoDeleteOutputImpl
+ extends DefaultOutputImplBase
+ implements StructureStyleNemoDeleteOutput {
+
+ private final Map<Class<? extends StructureStyleNemoDeleteOutput>,
+ StructureStyleNemoDeleteOutput> augmentation;
+
+ private StructureStyleNemoDeleteOutputImpl(
+ StructureStyleNemoDeleteOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ StructureStyleNemoDeleteOutputImpl other =
+ (StructureStyleNemoDeleteOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutput.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutput.java
new file mode 100644
index 0000000..a47cfb8
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutput.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+/**
+ * Representation of structure style update output.
+ */
+public interface StructureStyleNemoUpdateOutput extends DefaultOutput {
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilder.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilder.java
new file mode 100644
index 0000000..49c3449
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilder.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+
+/**
+ * Representation of the structure style update output builder.
+ */
+public class StructureStyleNemoUpdateOutputBuilder extends DefaultOutputBuilderBase {
+
+ private Map<Class<? extends StructureStyleNemoUpdateOutput>,
+ StructureStyleNemoUpdateOutput>
+ augmentation = new HashMap<>();
+
+ /**
+ * Constructs a structure style update output builder.
+ */
+ public StructureStyleNemoUpdateOutputBuilder() {
+ }
+
+ /**
+ * Constructs a structure style update output builder
+ * from a RPC result.
+ *
+ * @param rpc common RPC result
+ */
+ public StructureStyleNemoUpdateOutputBuilder(CommonRpcResult rpc) {
+ resultCode = rpc.getResultCode();
+ message = rpc.getMessage();
+ }
+
+ /**
+ * Constructs structure style update output builder from
+ * a structure style update output object.
+ *
+ * @param base structure style update output object
+ */
+ public StructureStyleNemoUpdateOutputBuilder(
+ StructureStyleNemoUpdateOutput base) {
+ message = base.getMessage();
+ resultCode = base.getResultCode();
+ if (base instanceof StructureStyleNemoUpdateOutputImpl) {
+ StructureStyleNemoUpdateOutputImpl impl = (StructureStyleNemoUpdateOutputImpl) base;
+ if (!impl.augmentation.isEmpty()) {
+ augmentation = new HashMap<>(impl.augmentation);
+ }
+ }
+ }
+
+ /**
+ * Adds augmentation by a class type and a structure style update output.
+ * If the augmentation is null, remove the augmentation type key from
+ * the hash map.
+ *
+ * @param augmentationType type that extends StructureStyleNemoUpdateOutput
+ * @param augmentation StructureStyleNemoUpdateOutput object
+ * @return self
+ */
+ public StructureStyleNemoUpdateOutputBuilder addAugmentation(
+ Class<? extends StructureStyleNemoUpdateOutput> augmentationType,
+ StructureStyleNemoUpdateOutput augmentation) {
+ if (augmentation == null) {
+ return removeAugmentation(augmentationType);
+ }
+ this.augmentation.put(augmentationType, augmentation);
+ return this;
+ }
+
+ /**
+ * Removes augmentation by a class type.
+ *
+ * @param augmentationType type that extends StructureStyleNemoUpdateOutput
+ * @return self
+ */
+ public StructureStyleNemoUpdateOutputBuilder removeAugmentation(
+ Class<? extends StructureStyleNemoUpdateOutput> augmentationType) {
+ augmentation.remove(augmentationType);
+ return this;
+ }
+
+ /**
+ * Builds the structure style update output object.
+ *
+ * @return the structure style update output object
+ */
+ public StructureStyleNemoUpdateOutput build() {
+ return new StructureStyleNemoUpdateOutputImpl(this);
+ }
+
+ /**
+ * Representation of the implement of StructureStyleNemoUpdateOutput.
+ */
+ private static final class StructureStyleNemoUpdateOutputImpl
+ extends DefaultOutputImplBase
+ implements StructureStyleNemoUpdateOutput {
+
+ private final Map<Class<? extends StructureStyleNemoUpdateOutput>,
+ StructureStyleNemoUpdateOutput> augmentation;
+
+ private StructureStyleNemoUpdateOutputImpl(
+ StructureStyleNemoUpdateOutputBuilder base) {
+ message = base.message;
+ resultCode = base.resultCode;
+ augmentation = new HashMap<>(base.augmentation);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(message, resultCode, augmentation);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ StructureStyleNemoUpdateOutputImpl other =
+ (StructureStyleNemoUpdateOutputImpl) obj;
+ return Objects.equals(message, other.getMessage()) &&
+ Objects.equals(resultCode, other.getResultCode()) &&
+ Objects.equals(augmentation, other.augmentation);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("message", message)
+ .add("resultCode", resultCode)
+ .add("augmentation", augmentation).toString();
+ }
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/main/java/org/onosproject/nemo/model/intent/package-info.java b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/package-info.java
new file mode 100644
index 0000000..763e922
--- /dev/null
+++ b/nemoengine/src/main/java/org/onosproject/nemo/model/intent/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2016-present 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.
+ */
+
+/**
+ * Intent classes for NEMO model.
+ */
+package org.onosproject.nemo.model.intent;
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilderTest.java
new file mode 100644
index 0000000..5621411
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionInputBuilderTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.common.UserId;
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link BeginTransactionInputBuilder}.
+ */
+public class BeginTransactionInputBuilderTest {
+
+ private static final String ID = "00000000-0000-0000-0000-000000000000";
+ private static final String OTHER_ID = "00000000-0000-0000-0000-000000000001";
+ private static final String ID_ERROR_MSG = "id not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private UserId userID;
+ private UserId otherID;
+ private BeginTransactionInput listParam;
+ private BeginTransactionInput def;
+ private BeginTransactionInput copy;
+ private BeginTransactionInput diff;
+
+ @Test
+ public void buildBeginTransactionInputWithUserID() {
+ userID = new UserId(ID);
+ listParam = new BeginTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ def = new BeginTransactionInputBuilder()
+ .userId(userID)
+ .addAugmentation(BeginTransactionInput.class, listParam)
+ .build();
+ def = new BeginTransactionInputBuilder(def)
+ .addAugmentation(BeginTransactionInput.class, null)
+ .build();
+ assertEquals(ID_ERROR_MSG, userID, def.getUserId());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromBeginTransactionInput() {
+ userID = new UserId(ID);
+ def = new BeginTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ copy = new BeginTransactionInputBuilder(def).build();
+ assertEquals(ID_ERROR_MSG, userID, copy.getUserId());
+ }
+
+ @Test
+ public void equality() {
+ userID = new UserId(ID);
+ def = new BeginTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ copy = new BeginTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ otherID = new UserId(OTHER_ID);
+ diff = new BeginTransactionInputBuilder()
+ .userId(otherID)
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilderTest.java
new file mode 100644
index 0000000..fa9a0ec
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/BeginTransactionOutputBuilderTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link BeginTransactionOutputBuilder}.
+ */
+public class BeginTransactionOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private BeginTransactionOutput listParam;
+ private BeginTransactionOutput def;
+ private BeginTransactionOutput copy;
+ private BeginTransactionOutput diff;
+
+ @Test
+ public void buildBeginTransactionOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((BeginTransactionOutputBuilder)
+ new BeginTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((BeginTransactionOutputBuilder) new BeginTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(BeginTransactionOutput.class, listParam)
+ .build();
+ def = new BeginTransactionOutputBuilder(def)
+ .addAugmentation(BeginTransactionOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromBeginTransactionOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((BeginTransactionOutputBuilder) new BeginTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new BeginTransactionOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((BeginTransactionOutputBuilder) new BeginTransactionOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ copy = ((BeginTransactionOutputBuilder) new BeginTransactionOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((BeginTransactionOutputBuilder) new BeginTransactionOutputBuilder()
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilderTest.java
new file mode 100644
index 0000000..bd4b76c
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionInputBuilderTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.common.UserId;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link EndTransactionInputBuilder}.
+ */
+public class EndTransactionInputBuilderTest {
+
+ private static final String ID = "00000000-0000-0000-0000-000000000000";
+ private static final String OTHER_ID = "00000000-0000-0000-0000-000000000001";
+ private static final String ID_ERROR_MSG = "id not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private UserId userID;
+ private UserId otherID;
+ private EndTransactionInput listParam;
+ private EndTransactionInput def;
+ private EndTransactionInput copy;
+ private EndTransactionInput diff;
+
+ @Test
+ public void buildEndTransactionInputWithUserID() {
+ userID = new UserId(ID);
+ listParam = new EndTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ def = new EndTransactionInputBuilder()
+ .userId(userID)
+ .addAugmentation(EndTransactionInput.class, listParam)
+ .build();
+ def = new EndTransactionInputBuilder(def)
+ .addAugmentation(EndTransactionInput.class, null)
+ .build();
+ assertEquals(ID_ERROR_MSG, userID, def.getUserId());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromEndTransactionInput() {
+ userID = new UserId(ID);
+ def = new EndTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ copy = new EndTransactionInputBuilder(def).build();
+ assertEquals(ID_ERROR_MSG, userID, copy.getUserId());
+ }
+
+ @Test
+ public void equality() {
+ userID = new UserId(ID);
+ def = new EndTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ copy = new EndTransactionInputBuilder()
+ .userId(userID)
+ .build();
+ otherID = new UserId(OTHER_ID);
+ diff = new EndTransactionInputBuilder()
+ .userId(otherID)
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilderTest.java
new file mode 100644
index 0000000..e12289f
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/EndTransactionOutputBuilderTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link EndTransactionOutputBuilder}.
+ */
+public class EndTransactionOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private EndTransactionOutput listParam;
+ private EndTransactionOutput def;
+ private EndTransactionOutput copy;
+ private EndTransactionOutput diff;
+
+ @Test
+ public void buildEndTransactionOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((EndTransactionOutputBuilder)
+ new EndTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((EndTransactionOutputBuilder) new EndTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(EndTransactionOutput.class, listParam)
+ .build();
+ def = new EndTransactionOutputBuilder(def)
+ .addAugmentation(EndTransactionOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromEndTransactionOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((EndTransactionOutputBuilder) new EndTransactionOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new EndTransactionOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((EndTransactionOutputBuilder) new EndTransactionOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ copy = ((EndTransactionOutputBuilder) new EndTransactionOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((EndTransactionOutputBuilder) new EndTransactionOutputBuilder()
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilderTest.java
new file mode 100644
index 0000000..227acc8
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestInputBuilderTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.common.UserId;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link LanguageStyleNemoRequestInputBuilder}.
+ */
+public class LanguageStyleNemoRequestInputBuilderTest {
+
+ private static final String ID = "00000000-0000-0000-0000-000000000000";
+ private static final String OTHER_ID = "00000000-0000-0000-0000-000000000001";
+ private static final String STATEMENT = "SomeStatement";
+ private static final String OTHER_STATEMENT= "OtherStatement";
+ private static final String ID_ERROR_MSG = "id not set";
+ private static final String STATEMENT_ERROR_MSG = "statement not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private UserId userID;
+ private UserId otherID;
+ private LanguageStyleNemoRequestInput listParam;
+ private LanguageStyleNemoRequestInput def;
+ private LanguageStyleNemoRequestInput copy;
+ private LanguageStyleNemoRequestInput diff;
+
+ @Test
+ public void buildLanguageStyleNemoRequestInputWithUserID() {
+ userID = new UserId(ID);
+ listParam = new LanguageStyleNemoRequestInputBuilder()
+ .userId(userID)
+ .nemoStatement(STATEMENT)
+ .build();
+ def = new LanguageStyleNemoRequestInputBuilder()
+ .userId(userID)
+ .nemoStatement(STATEMENT)
+ .addAugmentation(LanguageStyleNemoRequestInput.class, listParam)
+ .build();
+ def = new LanguageStyleNemoRequestInputBuilder(def)
+ .addAugmentation(LanguageStyleNemoRequestInput.class, null)
+ .build();
+ assertEquals(ID_ERROR_MSG, userID, def.getUserId());
+ assertEquals(STATEMENT_ERROR_MSG, STATEMENT, def.getNemoStatement());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromLanguageStyleNemoRequestInput() {
+ userID = new UserId(ID);
+ def = new LanguageStyleNemoRequestInputBuilder()
+ .userId(userID)
+ .nemoStatement(STATEMENT)
+ .build();
+ copy = new LanguageStyleNemoRequestInputBuilder(def).build();
+ assertEquals(ID_ERROR_MSG, userID, copy.getUserId());
+ assertEquals(STATEMENT_ERROR_MSG, STATEMENT, copy.getNemoStatement());
+ }
+
+ @Test
+ public void equality() {
+ userID = new UserId(ID);
+ def = new LanguageStyleNemoRequestInputBuilder()
+ .userId(userID)
+ .nemoStatement(STATEMENT)
+ .build();
+ copy = new LanguageStyleNemoRequestInputBuilder(def)
+ .build();
+ otherID = new UserId(OTHER_ID);
+ diff = new LanguageStyleNemoRequestInputBuilder()
+ .userId(otherID)
+ .nemoStatement(OTHER_STATEMENT)
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilderTest.java
new file mode 100644
index 0000000..2271458
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/LanguageStyleNemoRequestOutputBuilderTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link LanguageStyleNemoRequestOutputBuilder}.
+ */
+public class LanguageStyleNemoRequestOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private LanguageStyleNemoRequestOutput listParam;
+ private LanguageStyleNemoRequestOutput def;
+ private LanguageStyleNemoRequestOutput copy;
+ private LanguageStyleNemoRequestOutput diff;
+
+ @Test
+ public void buildLanguageStyleNemoRequestOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(LanguageStyleNemoRequestOutput.class, listParam)
+ .build();
+ def = new LanguageStyleNemoRequestOutputBuilder(def)
+ .addAugmentation(LanguageStyleNemoRequestOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromLanguageStyleNemoRequestOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new LanguageStyleNemoRequestOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ copy = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((LanguageStyleNemoRequestOutputBuilder)
+ new LanguageStyleNemoRequestOutputBuilder()
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilderTest.java
new file mode 100644
index 0000000..4181ffb
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/RegisterUserOutputBuilderTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link RegisterUserOutputBuilder}.
+ */
+public class RegisterUserOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private RegisterUserOutput listParam;
+ private RegisterUserOutput def;
+ private RegisterUserOutput copy;
+ private RegisterUserOutput diff;
+
+ @Test
+ public void buildRegisterUserOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((RegisterUserOutputBuilder)
+ new RegisterUserOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((RegisterUserOutputBuilder) new RegisterUserOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(RegisterUserOutput.class, listParam)
+ .build();
+ def = new RegisterUserOutputBuilder(def)
+ .addAugmentation(RegisterUserOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromRegisterUserOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((RegisterUserOutputBuilder) new RegisterUserOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new RegisterUserOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((RegisterUserOutputBuilder) new RegisterUserOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ copy = ((RegisterUserOutputBuilder) new RegisterUserOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((RegisterUserOutputBuilder) new RegisterUserOutputBuilder()
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilderTest.java
new file mode 100644
index 0000000..9bf0636
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoDeleteOutputBuilderTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link StructureStyleNemoDeleteOutputBuilder}.
+ */
+public class StructureStyleNemoDeleteOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private StructureStyleNemoDeleteOutput listParam;
+ private StructureStyleNemoDeleteOutput def;
+ private StructureStyleNemoDeleteOutput copy;
+ private StructureStyleNemoDeleteOutput diff;
+
+ @Test
+ public void buildStructureStyleNemoDeleteOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(StructureStyleNemoDeleteOutput.class, listParam)
+ .build();
+ def = new StructureStyleNemoDeleteOutputBuilder(def)
+ .addAugmentation(StructureStyleNemoDeleteOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromStructureStyleNemoDeleteOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new StructureStyleNemoDeleteOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ copy = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((StructureStyleNemoDeleteOutputBuilder)
+ new StructureStyleNemoDeleteOutputBuilder()
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file
diff --git a/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilderTest.java b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilderTest.java
new file mode 100644
index 0000000..4638c22
--- /dev/null
+++ b/nemoengine/src/test/java/org/onosproject/nemo/model/intent/StructureStyleNemoUpdateOutputBuilderTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2016-present 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.nemo.model.intent;
+
+import static junit.framework.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onosproject.nemo.model.intent.CommonRpcResult.Code;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Unit tests for {@link StructureStyleNemoUpdateOutputBuilder}.
+ */
+public class StructureStyleNemoUpdateOutputBuilderTest {
+
+ private static final String MESSAGE = "SomeMessage";
+ private static final int OK = 1;
+ private static final int ERROR = 0;
+ private static final String MESSAGE_ERROR_MSG = "message not set";
+ private static final String CODE_ERROR_MSG = "result code not set";
+ private static final String AUGMENTATION_ERROR_MSG = "augmentation not equal";
+
+ private Code resultCode;
+ private Code otherResultCode;
+ private StructureStyleNemoUpdateOutput listParam;
+ private StructureStyleNemoUpdateOutput def;
+ private StructureStyleNemoUpdateOutput copy;
+ private StructureStyleNemoUpdateOutput diff;
+
+ @Test
+ public void buildStructureStyleNemoUpdateOutput() {
+ resultCode = Code.forValue(OK);
+ listParam = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ def = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .addAugmentation(StructureStyleNemoUpdateOutput.class, listParam)
+ .build();
+ def = new StructureStyleNemoUpdateOutputBuilder(def)
+ .addAugmentation(StructureStyleNemoUpdateOutput.class, null)
+ .build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, def.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ assertEquals(AUGMENTATION_ERROR_MSG, listParam, def);
+ }
+
+ @Test
+ public void fromStructureStyleNemoUpdateOutput() {
+ resultCode = Code.forValue(OK);
+ def = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = new StructureStyleNemoUpdateOutputBuilder(def).build();
+ assertEquals(MESSAGE_ERROR_MSG, MESSAGE, copy.getMessage());
+ assertEquals(CODE_ERROR_MSG, resultCode, def.getResultCode());
+ }
+
+ @Test
+ public void equality() {
+ resultCode = Code.forValue(OK);
+ def = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ copy = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(resultCode))
+ .build();
+ otherResultCode = Code.forValue(ERROR);
+ diff = ((StructureStyleNemoUpdateOutputBuilder)
+ new StructureStyleNemoUpdateOutputBuilder()
+ .message(MESSAGE)
+ .resultCode(otherResultCode))
+ .build();
+ new EqualsTester()
+ .addEqualityGroup(def, copy)
+ .addEqualityGroup(diff)
+ .testEquals();
+ }
+}
\ No newline at end of file