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