1
2
3
4
5
6 package dev.metaschema.core.metapath.function;
7
8 import java.util.Objects;
9
10 import dev.metaschema.core.metapath.type.ISequenceType;
11 import dev.metaschema.core.qname.IEnhancedQName;
12 import edu.umd.cs.findbugs.annotations.NonNull;
13
14 class ArgumentImpl implements IArgument {
15 @NonNull
16 private final IEnhancedQName name;
17 @NonNull
18 private final ISequenceType sequenceType;
19
20 protected ArgumentImpl(@NonNull IEnhancedQName name, @NonNull ISequenceType sequenceType) {
21 this.name = name;
22 this.sequenceType = sequenceType;
23 }
24
25 @Override
26 public IEnhancedQName getName() {
27 return name;
28 }
29
30 @Override
31 public ISequenceType getSequenceType() {
32 return sequenceType;
33 }
34
35 @Override
36 public String toSignature() {
37 StringBuilder builder = new StringBuilder();
38
39
40 builder.append(getName().toEQName())
41 .append(" as ")
42 .append(getSequenceType().toSignature());
43
44 return builder.toString();
45 }
46
47 @Override
48 public int hashCode() {
49 return Objects.hash(name, sequenceType);
50 }
51
52 @Override
53 public boolean equals(Object obj) {
54 if (this == obj) {
55 return true;
56 }
57 if (obj == null || getClass() != obj.getClass()) {
58 return false;
59 }
60 ArgumentImpl other = (ArgumentImpl) obj;
61 return Objects.equals(name, other.name) && Objects.equals(sequenceType, other.sequenceType);
62 }
63 }