diff --git a/build.gradle b/build.gradle index c60a0a7..a0777f1 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ configure(javaProjects) { apply plugin: "signing" apply plugin: "biz.aQute.bnd.builder" apply plugin: "com.diffplug.gradle.spotless" - + uploadArchives.enabled = false group = cfgGroup diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/Data.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/Data.java index 32e5bc3..2a734bf 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/Data.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/Data.java @@ -5,11 +5,11 @@ import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; import com.beanit.jasn1.ber.types.BerBitString; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerInteger; import com.beanit.jasn1.ber.types.BerOctetString; import com.beanit.jasn1.ber.types.BerType; import com.beanit.jasn1.ber.types.string.BerVisibleString; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileDirectoryResponse.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileDirectoryResponse.java index 168303d..439fa58 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileDirectoryResponse.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileDirectoryResponse.java @@ -4,8 +4,8 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileReadResponse.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileReadResponse.java index 1b7295a..514cf1f 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileReadResponse.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/FileReadResponse.java @@ -4,9 +4,9 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerOctetString; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNameListResponse.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNameListResponse.java index c5fd18a..6769f1e 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNameListResponse.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNameListResponse.java @@ -4,8 +4,8 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNamedVariableListAttributesResponse.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNamedVariableListAttributesResponse.java index e29e669..f97f6d0 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNamedVariableListAttributesResponse.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetNamedVariableListAttributesResponse.java @@ -4,8 +4,8 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetVariableAccessAttributesResponse.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetVariableAccessAttributesResponse.java index 6164bc7..be66df8 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetVariableAccessAttributesResponse.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/GetVariableAccessAttributesResponse.java @@ -4,8 +4,8 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/ReadRequest.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/ReadRequest.java index 57aa556..1ed6738 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/ReadRequest.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/ReadRequest.java @@ -4,8 +4,8 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/TypeDescription.java b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/TypeDescription.java index f95e882..fb9520f 100644 --- a/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/TypeDescription.java +++ b/src/main/java-gen/com/beanit/openiec61850/internal/mms/asn1/TypeDescription.java @@ -4,9 +4,9 @@ package com.beanit.openiec61850.internal.mms.asn1; import com.beanit.jasn1.ber.BerLength; import com.beanit.jasn1.ber.BerTag; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerNull; import com.beanit.jasn1.ber.types.BerType; +import com.beanit.openiec61850.internal.BerBoolean; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff --git a/src/main/java/com/beanit/openiec61850/BdaBoolean.java b/src/main/java/com/beanit/openiec61850/BdaBoolean.java index 59ebc76..a9b7788 100644 --- a/src/main/java/com/beanit/openiec61850/BdaBoolean.java +++ b/src/main/java/com/beanit/openiec61850/BdaBoolean.java @@ -13,8 +13,8 @@ */ package com.beanit.openiec61850; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerNull; +import com.beanit.openiec61850.internal.BerBoolean; import com.beanit.openiec61850.internal.mms.asn1.Data; import com.beanit.openiec61850.internal.mms.asn1.TypeDescription; diff --git a/src/main/java/com/beanit/openiec61850/BdaEntryTime.java b/src/main/java/com/beanit/openiec61850/BdaEntryTime.java index 6e90aa8..6602304 100644 --- a/src/main/java/com/beanit/openiec61850/BdaEntryTime.java +++ b/src/main/java/com/beanit/openiec61850/BdaEntryTime.java @@ -13,7 +13,7 @@ */ package com.beanit.openiec61850; -import com.beanit.jasn1.ber.types.BerBoolean; +import com.beanit.openiec61850.internal.BerBoolean; import com.beanit.openiec61850.internal.mms.asn1.Data; import com.beanit.openiec61850.internal.mms.asn1.TimeOfDay; import com.beanit.openiec61850.internal.mms.asn1.TypeDescription; diff --git a/src/main/java/com/beanit/openiec61850/ClientAssociation.java b/src/main/java/com/beanit/openiec61850/ClientAssociation.java index 9146317..b2c87e1 100644 --- a/src/main/java/com/beanit/openiec61850/ClientAssociation.java +++ b/src/main/java/com/beanit/openiec61850/ClientAssociation.java @@ -14,7 +14,6 @@ package com.beanit.openiec61850; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerInteger; import com.beanit.jasn1.ber.types.BerNull; import com.beanit.jasn1.ber.types.string.BerGraphicString; @@ -23,6 +22,7 @@ import com.beanit.josistack.AcseAssociation; import com.beanit.josistack.ByteBufferInputStream; import com.beanit.josistack.ClientAcseSap; import com.beanit.josistack.DecodingException; +import com.beanit.openiec61850.internal.BerBoolean; import com.beanit.openiec61850.internal.mms.asn1.AccessResult; import com.beanit.openiec61850.internal.mms.asn1.ConfirmedRequestPDU; import com.beanit.openiec61850.internal.mms.asn1.ConfirmedResponsePDU; diff --git a/src/main/java/com/beanit/openiec61850/ServerAssociation.java b/src/main/java/com/beanit/openiec61850/ServerAssociation.java index aa1652c..0f2a63c 100644 --- a/src/main/java/com/beanit/openiec61850/ServerAssociation.java +++ b/src/main/java/com/beanit/openiec61850/ServerAssociation.java @@ -14,13 +14,13 @@ package com.beanit.openiec61850; import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; -import com.beanit.jasn1.ber.types.BerBoolean; import com.beanit.jasn1.ber.types.BerInteger; import com.beanit.jasn1.ber.types.BerNull; import com.beanit.jasn1.ber.types.string.BerVisibleString; import com.beanit.josistack.AcseAssociation; import com.beanit.josistack.ByteBufferInputStream; import com.beanit.josistack.DecodingException; +import com.beanit.openiec61850.internal.BerBoolean; import com.beanit.openiec61850.internal.NamedDefaultThreadFactory; import com.beanit.openiec61850.internal.mms.asn1.AccessResult; import com.beanit.openiec61850.internal.mms.asn1.ConfirmedErrorPDU; diff --git a/src/main/java/com/beanit/openiec61850/internal/BerBoolean.java b/src/main/java/com/beanit/openiec61850/internal/BerBoolean.java new file mode 100644 index 0000000..6e7360d --- /dev/null +++ b/src/main/java/com/beanit/openiec61850/internal/BerBoolean.java @@ -0,0 +1,120 @@ +/* + * Copyright 2012 The jASN1 Authors + * + * 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 com.beanit.openiec61850.internal; + +import com.beanit.jasn1.ber.BerLength; +import com.beanit.jasn1.ber.BerTag; +import com.beanit.jasn1.ber.ReverseByteArrayOutputStream; +import com.beanit.jasn1.ber.types.BerType; +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Serializable; + +public class BerBoolean implements Serializable, BerType { + + public static final BerTag tag = + new BerTag(BerTag.UNIVERSAL_CLASS, BerTag.PRIMITIVE, BerTag.BOOLEAN_TAG); + private static final long serialVersionUID = 1L; + public byte[] code = null; + + public boolean value; + + public BerBoolean() {} + + public BerBoolean(byte[] code) { + this.code = code; + } + + public BerBoolean(boolean value) { + this.value = value; + } + + @Override + public int encode(OutputStream reverseOS) throws IOException { + return encode(reverseOS, true); + } + + public int encode(OutputStream reverseOS, boolean withTag) throws IOException { + + if (code != null) { + for (int i = code.length - 1; i >= 0; i--) { + reverseOS.write(code[i]); + } + if (withTag) { + return tag.encode(reverseOS) + code.length; + } + return code.length; + } + + int codeLength = 1; + + if (value) { + reverseOS.write(0xff); + } else { + reverseOS.write(0); + } + + codeLength += BerLength.encodeLength(reverseOS, codeLength); + + if (withTag) { + codeLength += tag.encode(reverseOS); + } + + return codeLength; + } + + @Override + public int decode(InputStream is) throws IOException { + return decode(is, true); + } + + public int decode(InputStream is, boolean withTag) throws IOException { + + int codeLength = 0; + + if (withTag) { + codeLength += tag.decodeAndCheck(is); + } + + BerLength length = new BerLength(); + codeLength += length.decode(is); + + if (length.val != 1) { + throw new IOException("Decoded length of BerBoolean is not correct"); + } + + int nextByte = is.read(); + if (nextByte == -1) { + throw new EOFException("Unexpected end of input stream."); + } + + codeLength++; + value = nextByte != 0; + + return codeLength; + } + + public void encodeAndSave(int encodingSizeGuess) throws IOException { + ReverseByteArrayOutputStream os = new ReverseByteArrayOutputStream(encodingSizeGuess); + encode(os, false); + code = os.getArray(); + } + + @Override + public String toString() { + return "" + value; + } +}