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