BUG-614: migrate RpcMetadata
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / codegen / impl / RpcMetadata.java
diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RpcMetadata.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/RpcMetadata.java
new file mode 100644 (file)
index 0000000..6f9f85f
--- /dev/null
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.sal.binding.codegen.impl;
+
+import javassist.CtClass;
+import javassist.CtMethod;
+
+import org.opendaylight.yangtools.yang.binding.BaseIdentity;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
+
+final class RpcMetadata {
+    private final Class<? extends BaseIdentity> context;
+    private final CtMethod inputRouteGetter;
+    private final Boolean routeEncapsulated;
+    private final CtClass inputType;
+    private final String methodName;
+
+    public Class<? extends BaseIdentity> getContext() {
+        return context;
+    }
+
+    public CtMethod getInputRouteGetter() {
+        return inputRouteGetter;
+    }
+
+    public CtClass getInputType() {
+        return inputType;
+    }
+
+    public boolean isRouteEncapsulated() {
+        return routeEncapsulated;
+    }
+
+    public RpcMetadata(final String methodName, final Class<? extends BaseIdentity> context, final CtMethod inputRouteGetter, final boolean routeEncapsulated, final CtClass inputType) {
+        this.inputRouteGetter = Preconditions.checkNotNull(inputRouteGetter);
+        this.methodName = Preconditions.checkNotNull(methodName);
+        this.inputType = Preconditions.checkNotNull(inputType);
+        this.context = Preconditions.checkNotNull(context);
+        this.routeEncapsulated = routeEncapsulated;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + methodName.hashCode();
+        result = prime * result + context.hashCode();
+        result = prime * result + inputRouteGetter.hashCode();
+        result = prime * result + routeEncapsulated.hashCode();
+        result = prime * result +  inputType.hashCode();
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof RpcMetadata)) {
+            return false;
+        }
+        final RpcMetadata other = (RpcMetadata) obj;
+        if (!methodName.equals(other.methodName)) {
+            return false;
+        }
+        if (!context.equals(other.context)) {
+            return false;
+        }
+        if (!inputRouteGetter.equals(other.inputRouteGetter)) {
+            return false;
+        }
+        if (!routeEncapsulated.equals(other.routeEncapsulated)) {
+            return false;
+        }
+        return inputType.equals(other.inputType);
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this)
+                .add("context", context)
+                .add("inputRouteGetter", inputRouteGetter)
+                .add("inputType", inputType)
+                .add("methodName", methodName)
+                .add("routeEncapsulated", routeEncapsulated)
+                .toString();
+    }
+}