7.3. unmarshal
ASN.1 구조화된 메시지를 해제하는 세 가지 방법이 있습니다. (일반적으로 바이너리 파일)
이 첫 번째 예제에서는 OutputStream에 BER 파일 페이로드를 마운트 해제하여 mock 엔드포인트로 보냅니다.
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
두 번째 예제에서는 Split EIP를 사용하여 바이트 배열로 BER 파일 페이로드를 해제했습니다. 분할 EIP를 적용하는 이유는 일반적으로 각 BER 파일 또는 (ASN.1 구조화된 파일)이 처리할 여러 개의 레코드를 포함하고 Split EIP는 실제로 ASN1Primitive의 인스턴스인 바이트 배열로 각 레코드를 얻을 수 있도록 도와줍니다(Bouncy Castle의 ASN.1 사용). bcprov-jdk18on 라이브러리 지원) Byte 배열은 다음에서 공용 정적 메서드 (ASN1Primitive.fromByteArray)를 통해 ASN1Primitive로 변환 될 수 있습니다. help erator=true를 사용하여
설정해야 합니다.
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
마지막 예제에서는 Split EIP를 사용하여 일반 이전 Java 개체로 BER 파일 페이로드를 해제했습니다. EIP 분할을 적용하는 이유는 이미 이전 예에서 언급되어 있습니다. 이 이유를 염두에 두고 기록해 두십시오. 이러한 예제에서는 데이터 형식을 통해 클래스의 정규화된 이름 또는 <gradleObject>.class 참조를 설정해야 합니다. 여기서 중요한 것은 객체가 jasn1 컴파일러에 의해 생성되어야 한다는 것입니다. 이 컴파일러는 ASN.1 구조의 java 객체 표현을 생성하는 좋은 도구입니다. jasn1 컴파일러의 참조 사용에 대한 자세한 내용은 [JASN.1 Project Page](https://www.openmuc.org/asn1/)을 참조하고 maven의 exec 플러그인의 도움말을 사용하여 컴파일러가 호출되는 방법도 확인하십시오. 예를 들어 이 데이터 형식의 단위 테스트에서 예제 ASN.1 구조(TestSMSBerCdr.asn1)가 seccomp /test/resources/asn1_structure
에 추가됩니다. jasn1 컴파일러가 호출되고 java 개체의 표현이 ${basedir}/target/generated/src/test/java
에 생성됩니다. mock 끝점에서 또는 끝점이 있는 모든 위치에서 seccomp 인스턴스를 가져옵니다.
from("direct:unmarshaldsl") .unmarshal() .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr") .split(body(Iterator.class)).streaming() .to("mock:unmarshaldsl");
from("direct:unmarshaldsl")
.unmarshal()
.asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
.split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");