You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/08/28 08:12:38 UTC

[1/5] camel git commit: CAMEL-11612 - ASN.1 Data Format Component with Bouncy Castle-bcprov-jdk15on and openmuc-jasn1(referencing #1885-all cr addressed)

Repository: camel
Updated Branches:
  refs/heads/master 81722315c -> 58a189fb7


http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/resources/asn1_structure/TestSMSCBerCdr.asn1
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/resources/asn1_structure/TestSMSCBerCdr.asn1 b/components/camel-asn1/src/test/resources/asn1_structure/TestSMSCBerCdr.asn1
new file mode 100644
index 0000000..9eee38e
--- /dev/null
+++ b/components/camel-asn1/src/test/resources/asn1_structure/TestSMSCBerCdr.asn1
@@ -0,0 +1,480 @@
+TestSMSCBerCdr DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+SmsCdr ::= CHOICE
+{
+	callDetailRecord	CallDetailRecord,
+	commandRecord 	[APPLICATION 0] CommandRecord,
+	notificationRecord	[APPLICATION 1] NotificationRecord,
+	summaryRecord	[APPLICATION 2] SummaryRecord
+}
+
+CallDetailRecord ::= SEQUENCE
+{
+	origAddress		[0]	AddressInformation	OPTIONAL,
+	origAddressGSM	[1]	AddressString		OPTIONAL,
+	recipAddress		[2]	AddressInformation	OPTIONAL,
+	recipAddressGSM	[3]	AddressString		OPTIONAL,
+	submitDate		[4]	Date		OPTIONAL,
+	submitTime		[5]	Time		OPTIONAL,
+	status		[6]	Status		OPTIONAL,
+	terminDate		[7]	Date		OPTIONAL,
+	terminTime		[8]	Time		OPTIONAL,
+	lengthOfMessage	[9]	MessageLength	OPTIONAL,
+	prioIndicator		[10]	IMPLICIT BOOLEAN	OPTIONAL,
+	validityPeriod		[11]	Period		OPTIONAL,
+	deferIndicator		[12]	IMPLICIT BOOLEAN	OPTIONAL,
+	deferPeriod		[13]	Period		OPTIONAL,
+	notifIndicator		[14]	IMPLICIT BOOLEAN	OPTIONAL,
+	notifAddress		[15]	AddressInformation	OPTIONAL,
+	notifAddressGSM 	[16]	AddressString		OPTIONAL,
+	vsmscid		[17]	RangeVSMSC		OPTIONAL,
+	vsmsctype		[18]	TypeVSMSC		OPTIONAL,
+	dgtiAddress		[19]	AddressInformation	OPTIONAL,
+	dgtiAddressGSM	[20]	AddressString		OPTIONAL,
+	destPointCode		[21]	C7PointCode		OPTIONAL,
+	ogtiAddress		[22]	AddressInformation	OPTIONAL,
+	ogtiAddressGSM	[23]	AddressString		OPTIONAL,
+	origPointCode		[24]	C7PointCode		OPTIONAL,
+	orglSubmitDate		[25]	Date		OPTIONAL,
+	orglSubmitTime	[26]	Time		OPTIONAL,
+	transparentPid		[27]	TransparentPid		OPTIONAL,
+	mesgReplyPath	[28]	MesgReplyPath		OPTIONAL,
+	intlMobileSubId		[29]	IMSI		OPTIONAL,
+	callingLineId		[30]	AddressInformation	OPTIONAL,
+	callingLineIdGSM 	[31]	AddressString		OPTIONAL,
+	consolidation		[32]	IA5String		OPTIONAL,
+	portNumber		[33]	PortNumber		OPTIONAL,
+	aser		[34]	AdditionalServices	OPTIONAL,
+	mser		[35]	RequestedServices	OPTIONAL,
+	nser		[36]	NewServices		OPTIONAL,
+	xser		[37]	ExtraServices		OPTIONAL,
+	origIntlMobileSubId	[38]	IMSI		OPTIONAL,
+	billid		[39]	IA5String		OPTIONAL,
+	lang		[40]	LanguageIndicator	OPTIONAL,
+	cbat		[41]	IA5String		OPTIONAL,
+	ppPser		[42]	PrepaidPrimSer	OPTIONAL,
+	ppAser		[43]	PrepaidAddSer		OPTIONAL,
+	ppAserDuringJam	[44]	PrepaidAddSer		OPTIONAL,
+	ppAserFree		[45]	PrepaidAddSer		OPTIONAL,
+	ppAserRecip		[46]	PrepaidAddSer		OPTIONAL,
+	smeReference		[47]	SmeReference		OPTIONAL,
+	smsContentDcs	[48]	IA5String		OPTIONAL,
+	smsContents		[49]	SMS-STRING		OPTIONAL,
+	cmReferenceNr		[50]	CmReference		OPTIONAL,
+	currentSegment	[51]	CmNumber		OPTIONAL,
+	segmentsTotal		[52]	CmNumber		OPTIONAL,
+	textFormatting		[53]	EmsBitString		OPTIONAL,
+	bytesCompressedData	[54]	EmsBytesCompressed	OPTIONAL,
+	predefinedAnimations	[55]	EmsNumber		OPTIONAL,
+	userDefinedAnimations	[56]	EmsNumber		OPTIONAL,
+	predefinedSounds	[57]	EmsNumber		OPTIONAL,
+	userDefinedSounds	[58]	EmsNumber		OPTIONAL,
+	blackWhitePictures	[59]	EmsNumber		OPTIONAL,
+	standardWvg		[60]	EmsNumber		OPTIONAL,
+	characterSizeWvg	[61]	EmsNumber		OPTIONAL,
+	greyscalePictures     	[62]	EmsNumber		OPTIONAL,
+	colourPictures		[63]	EmsNumber		OPTIONAL,
+	businessCards		[64]	EmsNumber		OPTIONAL,
+	calendarEntries		[65]	EmsNumber		OPTIONAL,
+	polyphonicMelodies	[66]	EmsNumber		OPTIONAL,
+	bit8PortNumberDest	[67]	EmsPortNumbers8	OPTIONAL,
+	bit16PortNumberDest	[68]	EmsPortNumbers16	OPTIONAL,
+	lmsgNrSeg		[69]	LmsgNumseg		OPTIONAL,
+	messageReference	[70]	MsgRef		OPTIONAL,
+	boolSer		[71]	BooleanServices	OPTIONAL,
+	origLASN		[72]	IA5String		OPTIONAL,
+	recipLASN		[73]	IA5String		OPTIONAL,
+	origMsgID		[74]	IA5String		OPTIONAL,
+	recipMsgID		[75]	IA5String		OPTIONAL,
+	receiptDate		[76]	Date		OPTIONAL,
+	receiptTime		[77]	Time		OPTIONAL,
+	isr		[78]	ISRFlags		OPTIONAL,
+	recipAltAddress		[79]	AddressInformation	OPTIONAL,
+	generatedSegments	[80]	NumGenSegments	OPTIONAL,
+	serviceType		[81]	IA5String		OPTIONAL,
+	deliveryAttempts	[82]	DeliveryAttempts	OPTIONAL,
+	untranslOrigAddress	[83]	UTF8AddressInformation	OPTIONAL,
+	untranslOrigAddressGSM	[84]	AddressString		OPTIONAL,
+	untranslRecipAddress	[85]	UTF8AddressInformation	OPTIONAL,
+	untranslRecipAddressGSM	[86]	AddressString		OPTIONAL,
+	msgError		[87]	MessageError		OPTIONAL,
+	tpDCS		[88]	GSM-TP-DCS		OPTIONAL,
+	bgwCdrType		[100]	CdrType		OPTIONAL,
+	smppBillid		[101]	IA5String	OPTIONAL,
+	subscriptionType	[200]	OCTET STRING	OPTIONAL,
+	predefinedPaymentOption	[201]	OCTET STRING	OPTIONAL,
+	iNRatedAmount		[202]	IA5String		OPTIONAL,
+	cspsServiceId		[203]	IA5String		OPTIONAL,
+	cspsCdrSequence	[204]	IA5String		OPTIONAL,
+	chargingMultiplier 	[205]	IA5String		OPTIONAL,
+	contentId 		[206]	IA5String		OPTIONAL,
+	calledPartyMNPInfo [207] OCTET STRING OPTIONAL,
+	chargeInfo [208] ChargeInfo OPTIONAL,
+	bgwDomain		[209]	Domain		OPTIONAL,
+	cdrUniqueKey	[300]	CdrUniqueKey OPTIONAL
+}
+
+CommandRecord ::= SEQUENCE
+{
+	commandType		[0]	CommandType		OPTIONAL,
+	origAddress		[1]	AddressInformation	OPTIONAL,
+	origAddressGSM	[2]	AddressString		OPTIONAL,
+	recipAddress		[3]	AddressInformation	OPTIONAL,
+	recipAddressGSM	[4]	AddressString		OPTIONAL,
+	cmdTerminReason	[5]	CmdTerminReason	OPTIONAL,
+	vsmscid		[6]	RangeVSMSC		OPTIONAL,
+	vsmsctype		[7]	TypeVSMSC		OPTIONAL,
+	ogtiAddress		[8]	AddressInformation	OPTIONAL,
+	ogtiAddressGSM	[9]	AddressString		OPTIONAL,
+	origPointCode		[10]	C7PointCode		OPTIONAL,
+	orglSubmitDate		[11]	Date		OPTIONAL,
+	orglSubmitTime	[12]	Time		OPTIONAL,
+	intlMobileSubId		[13]	IMSI		OPTIONAL,
+	callingLineId		[14]	AddressInformation	OPTIONAL,
+	callingLineIdGSM 	[15]	AddressString		OPTIONAL,
+	consolidation		[16]	IA5String		OPTIONAL,
+	billid		[17]	IA5String		OPTIONAL,
+	smeReference		[18]	SmeReference		OPTIONAL,
+	smsContentDcs	[19]	IA5String		OPTIONAL,
+	smsContents		[20]	SMS-STRING		OPTIONAL,	
+	messageReference	[21]	MsgRef		OPTIONAL,
+	serviceType		[22]	IA5String		OPTIONAL,
+	tpDCS		[23]	GSM-TP-DCS		OPTIONAL
+}
+
+NotificationRecord ::= SEQUENCE
+{
+	orglOrigAddress	[0]	AddressInformation	OPTIONAL,
+	orglOrigAddressGSM	[1]	AddressString		OPTIONAL,
+	orglRecipAddress	[2]	AddressInformation	OPTIONAL,
+	orglRecipAddressGSM	[3]	AddressString		OPTIONAL,
+	orglNotifAddress	[4]	AddressInformation	OPTIONAL,
+	orglNotifAddressGSM	[5]	AddressString		OPTIONAL,
+	submitDate		[6]	Date		OPTIONAL,
+	submitTime		[7]	Time		OPTIONAL,
+	orglSubmitDate		[8]	Date		OPTIONAL,
+	orglSubmitTime	[9]	Time		OPTIONAL,
+	status		[10]	Status		OPTIONAL,
+	terminDate		[11]	Date		OPTIONAL,
+	terminTime		[12]	Time		OPTIONAL,
+	lengthOfMessage	[13]	MessageLength	OPTIONAL,
+	validityPeriod		[14]	Period		OPTIONAL,
+	vsmscid		[15]	RangeVSMSC		OPTIONAL,
+	vsmsctype		[16]	TypeVSMSC		OPTIONAL,
+	consolidation		[17]	IA5String		OPTIONAL,
+	billid		[18]	IA5String		OPTIONAL,
+	smeReference		[19]	SmeReference		OPTIONAL,
+	smsContentDcs	[20]	IA5String		OPTIONAL,
+	smsContents		[21]	SMS-STRING		OPTIONAL,
+	messageReference	[22]	MsgRef		OPTIONAL,
+	recipLASN		[23]	IA5String		OPTIONAL,
+	origMsgID		[24]	IA5String		OPTIONAL,
+	isr		[25]	ISRFlags		OPTIONAL,
+	boolSer		[26]	BooleanServicesNotif	OPTIONAL,
+	recipAltAddress		[27]	AddressInformation 	OPTIONAL,
+	serviceType		[28]	IA5String		OPTIONAL,
+	orglDgtiAddress	[29]	AddressInformation	OPTIONAL,
+	orglDgtiAddressGSM	[30]	AddressString		OPTIONAL,
+	orglDestPointCode	[31]	C7PointCode		OPTIONAL,
+	orglOgtiAddress	[32]	AddressInformation	OPTIONAL,
+	orglOgtiAddressGSM	[33]	AddressString		OPTIONAL,
+	orglOrigPointCode	[34]	C7PointCode		OPTIONAL,
+	deliveryAttempts	[35]	DeliveryAttempts	OPTIONAL,
+	orglUntranslOrigAddress	[36]	UTF8AddressInformation	OPTIONAL,
+	orglUntranslOrigAddressGSM	[37]	AddressString		OPTIONAL,
+	orglUntranslRecipAddress	[38]	UTF8AddressInformation	OPTIONAL,
+	orglUntranslRecipAddressGSM	[39]	AddressString		OPTIONAL,
+	msgError		[40]	MessageError		OPTIONAL,
+	tpDCS		[41]	GSM-TP-DCS		OPTIONAL
+}
+
+SummaryRecord ::= SEQUENCE
+{
+	origAddress		[0]	AddressInformation 	OPTIONAL,
+	origAddressGSM	[1]	AddressString 		OPTIONAL,
+	recipAddress		[2]	AddressInformation 	OPTIONAL,
+	recipAddressGSM	[3]	AddressString 		OPTIONAL,
+	status		[4]	Status 		OPTIONAL,
+	vsmscid		[5]	RangeVSMSC 		OPTIONAL,
+	vsmsctype		[6]	TypeVSMSC 		OPTIONAL,
+	dgtiAddress		[7]	AddressInformation 	OPTIONAL,
+	dgtiAddressGSM	[8]	AddressString 		OPTIONAL,
+	destPointCode		[9]	C7PointCode 		OPTIONAL,
+	ogtiAddress		[10]	AddressInformation 	OPTIONAL,
+	ogtiAddressGSM	[11]	AddressString 		OPTIONAL,
+	origPointCode		[12]	C7PointCode 		OPTIONAL,
+	transparentPid		[13]	TransparentPid 	OPTIONAL,
+	intlMobileSubId		[14]	IMSI 		OPTIONAL,
+	callingLineId		[15]	AddressInformation 	OPTIONAL,
+	callingLineIdGSM 	[16]	AddressString 		OPTIONAL,
+	origIntlMobileSubId 	[17] 	IMSI 		OPTIONAL,
+	billid		[18]	IA5String 		OPTIONAL,
+	ppPser		[19]	PrepaidPrimSer 	OPTIONAL,
+	totalUdLength		[20]	UdLength 		OPTIONAL,
+	submissionTimeFirst   	[21] 	Time		OPTIONAL,
+	submissionDateFirst    	[22] 	Date		OPTIONAL,
+	submissionTimeLast    	[23] 	Time		OPTIONAL,
+	submissionDateLast    	[24] 	Date		OPTIONAL,	
+	deliveryTimeFirst     	[25] 	Time		OPTIONAL,
+	deliveryDateFirst     	[26] 	Date		OPTIONAL,
+	deliveryTimeLast      	[27] 	Time		OPTIONAL,
+	deliveryDateLast     	[28] 	Date		OPTIONAL,
+	cmReferenceNr         	[29] 	CmReference		OPTIONAL,
+	segmentsTotal         	[30] 	CmNumber		OPTIONAL,
+	segmentsAccepted      	[31] 	CmNumber		OPTIONAL,
+	segmentsDelivered     	[32] 	CmNumber		OPTIONAL,
+	segmentsDuplicate     	[33] 	CmNumber		OPTIONAL,
+	segmentsReplaced      	[34] 	CmNumber		OPTIONAL,
+	textFormatting        	[35] 	EmsBitString		OPTIONAL,
+	bytesCompressedData   	[36] 	EmsBytesCompressed	OPTIONAL,
+	predefinedAnimations  	[37] 	EmsNumber		OPTIONAL,
+	userDefinedAnimations 	[38] 	EmsNumber		OPTIONAL,
+	predefinedSounds      	[39] 	EmsNumber		OPTIONAL,
+	userDefinedSounds     	[40] 	EmsNumber		OPTIONAL,
+	blackWhitePictures    	[41] 	EmsNumber		OPTIONAL,
+	standardWvg		[42]	EmsNumber		OPTIONAL,
+	characterSizeWvg	[43]	EmsNumber		OPTIONAL,
+	greyscalePictures     	[44] 	EmsNumber      	OPTIONAL,
+	colourPictures        	[45] 	EmsNumber            	OPTIONAL,
+	businessCards         	[46] 	EmsNumber            	OPTIONAL,
+	calendarEntries       	[47] 	EmsNumber            	OPTIONAL,
+	polyphonicMelodies	[48] 	EmsNumber            	OPTIONAL,
+	bit8PortNumberDest    	[49] 	EmsPortNumbers8      	OPTIONAL,
+	bit16PortNumberDest   	[50] 	EmsPortNumbers16     	OPTIONAL,
+	boolSer		[51]	BooleanServicesCM	OPTIONAL,
+	recipAltAddress		[52]	AddressInformation 	OPTIONAL,
+	serviceType		[53]	IA5String		OPTIONAL,
+	totalAttempts		[54]	DeliveryAttempts	OPTIONAL,
+	segmError		[55]	MessageError		OPTIONAL
+}
+
+AddressInformation ::= SEQUENCE
+{
+	ton	[0]	TypeOfNumber		OPTIONAL,
+	npi	[1]	NumberingPlanIndicator	OPTIONAL,
+	pid	[2]	ProtocolIdentifier	OPTIONAL,
+	msisdn	[3]	IA5String		OPTIONAL,
+	msisdnUTF8	[4]	UTF8String		OPTIONAL
+}
+
+UTF8AddressInformation ::= SEQUENCE
+{
+	ton	[0]	TypeOfNumber		OPTIONAL,
+	npi	[1]	NumberingPlanIndicator	OPTIONAL,
+	pid	[2]	ProtocolIdentifier	OPTIONAL,
+	msisdn	[3]	UTF8String		OPTIONAL
+}
+
+TypeOfNumber ::= ENUMERATED
+{
+	unknown (0), 
+	international (1),
+	national (2),
+	network (3),
+	short (4),
+	alpha (5),
+	abbreviated (6),
+	reserved7 (7)
+}
+
+NumberingPlanIndicator ::= ENUMERATED 
+{
+	unknown (0),
+	telephone (1),
+	reserved2 (2),
+	data (3),
+	telex (4),
+	tcpip (5),
+	landmobile (6),
+	reserved7 (7),
+	national (8),
+	private (9),
+	ermes (10),
+	reserved11 (11),
+	reserved12 (12),
+	reserved13 (13),
+	internet (14),
+	reserved15 (15)
+}
+
+ProtocolIdentifier ::= ENUMERATED
+{
+	plmn (0),
+	globaltitle (24),
+	faxg3 (34),
+	faxg4 (35),
+	ivr (36),
+	speech (36),
+	ermes (37),
+	menu (56),
+	pc (57),
+	tap (58),
+	smpp (59),
+	wap (60),
+	ois (61),
+	vms (62),
+	smtp (204)
+}
+
+Date ::= OCTET STRING (SIZE (3))
+	-- 3 octets [yy][mm][dd]
+
+Time ::= OCTET STRING (SIZE (3))
+	-- 3 octets [hh][mm][ss]
+
+Status ::= ENUMERATED
+{
+	delivered (0),
+	expired (1),
+	deleted (2),
+	replaced (3),
+	submitted (4),
+	incomplete-submission (5),
+	incomplete-delivery (6),
+	undeliverable (7),
+	passed-on (8),
+	pp-rejected (9)
+}
+
+MessageLength ::= INTEGER {min (0), max (640)}
+
+LanguageIndicator ::= INTEGER {min (0), max (255)}
+
+Period ::= SEQUENCE
+{
+	hours	[0]	HoursPeriod	OPTIONAL,
+	minutes	[1]	Minutes	OPTIONAL
+}
+
+HoursPeriod ::= INTEGER {min (0), max (8760)}
+
+Minutes ::= INTEGER {first (0), last (59)}
+
+RangeVSMSC ::= INTEGER 
+
+TypeVSMSC  ::= ENUMERATED
+{
+	none (0), 
+	private (1),
+	public (2)
+}
+
+C7PointCode ::= INTEGER {max (16777215)}
+
+TransparentPid ::= INTEGER {min (0), max (255)}
+
+PortNumber  ::= INTEGER
+
+SmeReference ::= INTEGER { min(0), max(4294967295)}
+
+MesgReplyPath ::= ENUMERATED
+{
+	request (1),
+	response (2)
+}       
+
+CommandType ::= ENUMERATED
+{
+	phase1cmdinqm (0), -- phase1 command "inquire message"
+	phase1cmddelm (1), -- phase1 command "delete message"
+	gsmcmdcenq (2),    -- gsm    command "enquire message"
+	gsmcmdcdel (3),    -- gsm    command "delete message"
+	gsmcmdcesr (4),    -- gsm    command "enable status report"
+	gsmcmdccsr (5),    -- gsm    command "clear  status report"
+	phase1cmdmodm (6), -- phase1 command "modify message"
+	gsmcmdssdl (7)     -- gsm    command "show subsciber distribution list"
+}       
+
+CmdTerminReason ::= ENUMERATED
+{
+	notaccepted (0),
+	accepted (1),
+	notfound (2),
+	tmpnotavail (3)
+}
+
+AdditionalServices ::= OCTET STRING (SIZE(4))
+
+RequestedServices ::= OCTET STRING (SIZE(2))
+
+NewServices ::= OCTET STRING (SIZE(4))
+
+ExtraServices ::= OCTET STRING (SIZE(2))
+
+PrepaidPrimSer ::= OCTET STRING (SIZE(4))
+
+PrepaidAddSer ::= OCTET STRING (SIZE(4))
+
+ISRFlags ::= OCTET STRING (SIZE(1))
+
+UdLength ::= INTEGER {min (0), max (40800) }
+
+CmReference ::=  INTEGER {min (0), max (65535) }
+
+CmNumber ::=  INTEGER {min (0), max (255) }
+
+EmsBitString ::= OCTET STRING (SIZE(1))
+
+EmsBytesCompressed ::= INTEGER  {min (0), max (35700) }
+
+EmsNumber ::=  INTEGER {min (0), max (8607) }
+
+EmsPortNumbers8 ::=  INTEGER {min (0), max (255) }
+
+EmsPortNumbers16 ::=  INTEGER {min (0), max (65535) }
+
+LmsgNumseg ::= INTEGER {min (0), max (255)}
+
+BooleanServices ::= OCTET STRING (SIZE(4))
+
+BooleanServicesNotif ::= OCTET STRING (SIZE(4))
+
+BooleanServicesCM ::= OCTET STRING (SIZE(4))
+
+SMS-STRING ::= IA5String
+
+MsgRef ::= OCTET STRING
+
+NumGenSegments ::= INTEGER {min (0), max (255) }    -- generatedSegments for CR SMSC_2002_182: Hebrew conv.
+
+DeliveryAttempts ::=  INTEGER {min (1), max (65535) } -- CR SMSC_3057
+
+TBCD-STRING ::= OCTET STRING
+
+AddressString   ::= OCTET STRING (SIZE (1..20))
+
+IMSI    ::= TBCD-STRING (SIZE (3..8))
+
+MessageError ::= INTEGER {min (0), max (65534)}
+
+GSM-TP-DCS ::= INTEGER {min (0), max (255) }
+
+CdrType ::= ENUMERATED
+{
+	undefined		(0),
+	peer2peer		(1),
+	peer2vasNonALA	(2),
+	peer2vasALA		(3),
+	vas2peer		(4),
+	alpha2peer		(5),
+	long2peer		(6)
+}
+
+Domain ::= ENUMERATED
+{
+	domain0		(0),
+	domain1		(1),
+	domain2		(2)
+}
+
+ChargeInfo ::= ENUMERATED
+{
+noCharge (0),
+charge (1)
+}
+
+CdrUniqueKey ::= IA5String
+
+END

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/resources/log4j2.properties
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/resources/log4j2.properties b/components/camel-asn1/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..b011102
--- /dev/null
+++ b/components/camel-asn1/src/test/resources/log4j2.properties
@@ -0,0 +1,28 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You 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.
+## ---------------------------------------------------------------------------
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-asn1-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = [%30.30t] %-30.30c{1} %-5p %m%n
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/resources/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/resources/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.xml b/components/camel-asn1/src/test/resources/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.xml
new file mode 100644
index 0000000..f040de2
--- /dev/null
+++ b/components/camel-asn1/src/test/resources/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+  <!-- START SNIPPET: e1 -->
+  
+  <bean id="asn1" class="org.apache.camel.dataformat.asn1.ASN1DataFormat">
+    <property name="usingIterator" value="true"/> 
+    <property name="clazzName" value="org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr"/>
+  </bean>
+
+  <camelContext xmlns="http://camel.apache.org/schema/spring">
+    <route>
+      <from uri="direct:unmarshal"/>
+      <unmarshal ref="asn1"/>
+      <split streaming="true">
+        <simple>${body}</simple>
+        <to uri="mock:unmarshal"/>
+      </split>
+    </route>
+  </camelContext>
+  <!-- END SNIPPET: e1 -->
+
+</beans>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/pom.xml
----------------------------------------------------------------------
diff --git a/components/pom.xml b/components/pom.xml
index 9412e0a..b5f30b3 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -68,6 +68,7 @@
     <module>camel-ahc-ws</module>
     <module>camel-amqp</module>
     <module>camel-apns</module>
+    <module>camel-asn1</module>
     <module>camel-asterisk</module>
     <module>camel-atmos</module>
     <module>camel-atmosphere-websocket</module>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index cb2683a..c917166 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -323,6 +323,7 @@
     <jackrabbit-version>2.15.5</jackrabbit-version>
     <jackrabbit-guava-version>15.0</jackrabbit-guava-version>
     <jain-sip-ri-bundle-version>1.2.154_2</jain-sip-ri-bundle-version>
+    <jasn1-version>1.8.1</jasn1-version>
     <jasper-bundle-version>6.0.44_1</jasper-bundle-version>
     <jasypt-bundle-version>1.9.2_1</jasypt-bundle-version>
     <jasypt-version>1.9.2</jasypt-version>
@@ -830,6 +831,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-asn1</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-asterisk</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -2305,6 +2311,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-asn1-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-atmosphere-websocket-starter</artifactId>
         <version>${project.version}</version>
       </dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/pom.xml b/platforms/spring-boot/components-starter/camel-asn1-starter/pom.xml
new file mode 100644
index 0000000..beddb35
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>components-starter</artifactId>
+    <version>2.20.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>camel-asn1-starter</artifactId>
+  <packaging>jar</packaging>
+  <name>Spring-Boot Starter :: Camel :: ASN.1</name>
+  <description>Spring-Boot Starter for Camel ASN.1 support</description>
+  <dependencies>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <version>${spring-boot-version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-asn1</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <!--START OF GENERATED CODE-->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-starter</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-spring-boot-starter</artifactId>
+    </dependency>
+    <!--END OF GENERATED CODE-->
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatAutoConfiguration.java
new file mode 100644
index 0000000..9069d8d
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatAutoConfiguration.java
@@ -0,0 +1,128 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1.springboot;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.dataformat.asn1.ASN1DataFormat;
+import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.DataFormatCustomizer;
+import org.apache.camel.spi.DataFormatFactory;
+import org.apache.camel.spi.HasId;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.DataFormatConfigurationProperties;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@Configuration
+@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
+        ASN1DataFormatAutoConfiguration.GroupConditions.class})
+@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@EnableConfigurationProperties({DataFormatConfigurationProperties.class,
+        ASN1DataFormatConfiguration.class})
+public class ASN1DataFormatAutoConfiguration {
+
+    private static final Logger LOGGER = LoggerFactory
+            .getLogger(ASN1DataFormatAutoConfiguration.class);
+    @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
+    private CamelContext camelContext;
+    @Autowired
+    private ASN1DataFormatConfiguration configuration;
+    @Autowired(required = false)
+    private List<DataFormatCustomizer<ASN1DataFormat>> customizers;
+
+    static class GroupConditions extends GroupCondition {
+        public GroupConditions() {
+            super("camel.dataformat", "camel.dataformat.asn1");
+        }
+    }
+
+    @Bean(name = "asn1-dataformat-factory")
+    @ConditionalOnMissingBean(ASN1DataFormat.class)
+    public DataFormatFactory configureASN1DataFormatFactory() throws Exception {
+        return new DataFormatFactory() {
+            @Override
+            public DataFormat newInstance() {
+                ASN1DataFormat dataformat = new ASN1DataFormat();
+                if (CamelContextAware.class
+                        .isAssignableFrom(ASN1DataFormat.class)) {
+                    CamelContextAware contextAware = CamelContextAware.class
+                            .cast(dataformat);
+                    if (contextAware != null) {
+                        contextAware.setCamelContext(camelContext);
+                    }
+                }
+                try {
+                    Map<String, Object> parameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(configuration,
+                            parameters, null, false);
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), dataformat,
+                            parameters);
+                } catch (Exception e) {
+                    throw new RuntimeCamelException(e);
+                }
+                if (ObjectHelper.isNotEmpty(customizers)) {
+                    for (DataFormatCustomizer<ASN1DataFormat> customizer : customizers) {
+                        boolean useCustomizer = (customizer instanceof HasId)
+                                ? HierarchicalPropertiesEvaluator.evaluate(
+                                        applicationContext.getEnvironment(),
+                                        "camel.dataformat.customizer",
+                                        "camel.dataformat.asn1.customizer",
+                                        ((HasId) customizer).getId())
+                                : HierarchicalPropertiesEvaluator.evaluate(
+                                        applicationContext.getEnvironment(),
+                                        "camel.dataformat.customizer",
+                                        "camel.dataformat.asn1.customizer");
+                        if (useCustomizer) {
+                            LOGGER.debug(
+                                    "Configure dataformat {}, with customizer {}",
+                                    dataformat, customizer);
+                            customizer.customize(dataformat);
+                        }
+                    }
+                }
+                return dataformat;
+            }
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatConfiguration.java b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatConfiguration.java
new file mode 100644
index 0000000..45321bb
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/java/org/apache/camel/dataformat/asn1/springboot/ASN1DataFormatConfiguration.java
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1.springboot;
+
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.DataFormatConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Camel ASN.1 support
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.dataformat.asn1")
+public class ASN1DataFormatConfiguration
+        extends
+            DataFormatConfigurationPropertiesCommon {
+
+    /**
+     * If the asn1 file has more then one entry the setting this option to true
+     * allows to work with the splitter EIP to split the data using an iterator
+     * in a streaming mode.
+     */
+    private Boolean usingIterator = false;
+    /**
+     * Name of class to use when unarmshalling
+     */
+    private String clazzName;
+    /**
+     * Whether the data format should set the Content-Type header with the type
+     * from the data format if the data format is capable of doing so. For
+     * example application/xml for data formats marshalling to XML or
+     * application/json for data formats marshalling to JSon etc.
+     */
+    private Boolean contentTypeHeader = false;
+
+    public Boolean getUsingIterator() {
+        return usingIterator;
+    }
+
+    public void setUsingIterator(Boolean usingIterator) {
+        this.usingIterator = usingIterator;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public Boolean getContentTypeHeader() {
+        return contentTypeHeader;
+    }
+
+    public void setContentTypeHeader(Boolean contentTypeHeader) {
+        this.contentTypeHeader = contentTypeHeader;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/LICENSE.txt
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/LICENSE.txt b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/NOTICE.txt
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/NOTICE.txt b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.factories b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..368cd80
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You 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.
+## ---------------------------------------------------------------------------
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.dataformat.asn1.springboot.ASN1DataFormatAutoConfiguration

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.provides
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.provides b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.provides
new file mode 100644
index 0000000..0dbbb87
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-asn1-starter/src/main/resources/META-INF/spring.provides
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You 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.
+## ---------------------------------------------------------------------------
+provides: camel-asn1

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/platforms/spring-boot/components-starter/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/pom.xml b/platforms/spring-boot/components-starter/pom.xml
index 670bdf7..49df479 100644
--- a/platforms/spring-boot/components-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/pom.xml
@@ -79,6 +79,7 @@
     <module>camel-ahc-ws-starter</module>
     <module>camel-amqp-starter</module>
     <module>camel-apns-starter</module>
+    <module>camel-asn1-starter</module>
     <module>camel-asterisk-starter</module>
     <module>camel-atmos-starter</module>
     <module>camel-atmosphere-websocket-starter</module>


[3/5] camel git commit: CAMEL-11612: Added camel-asn1 and starter to kit

Posted by ac...@apache.org.
CAMEL-11612: Added camel-asn1 and starter to kit


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9f2ced04
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9f2ced04
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9f2ced04

Branch: refs/heads/master
Commit: 9f2ced04d362bf4a28f7931db9538138a73c9115
Parents: 9bb2036
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Aug 28 08:38:48 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Aug 28 08:38:48 2017 +0200

----------------------------------------------------------------------
 apache-camel/src/main/descriptors/common-bin.xml | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9f2ced04/apache-camel/src/main/descriptors/common-bin.xml
----------------------------------------------------------------------
diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index 4554ea5..ceed50a 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -29,6 +29,7 @@
         <include>org.apache.camel:camel-ahc-ws</include>
         <include>org.apache.camel:camel-amqp</include>
         <include>org.apache.camel:camel-apns</include>
+        <include>org.apache.camel:camel-asn1</include>
         <include>org.apache.camel:camel-asterisk</include>
         <include>org.apache.camel:camel-atmos</include>
         <include>org.apache.camel:camel-atmosphere-websocket</include>
@@ -328,6 +329,7 @@
         <include>org.apache.camel:camel-ahc-ws-starter</include>
         <include>org.apache.camel:camel-amqp-starter</include>
         <include>org.apache.camel:camel-apns-starter</include>
+        <include>org.apache.camel:camel-asn1-starter</include>
         <include>org.apache.camel:camel-atmosphere-websocket-starter</include>
         <include>org.apache.camel:camel-atmos-starter</include>
         <include>org.apache.camel:camel-atom-starter</include>


[2/5] camel git commit: CAMEL-11612 - ASN.1 Data Format Component with Bouncy Castle-bcprov-jdk15on and openmuc-jasn1(referencing #1885-all cr addressed)

Posted by ac...@apache.org.
CAMEL-11612 - ASN.1 Data Format Component with Bouncy Castle-bcprov-jdk15on and openmuc-jasn1(referencing #1885-all cr addressed)


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9bb2036c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9bb2036c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9bb2036c

Branch: refs/heads/master
Commit: 9bb2036c0f7ffd6aec52e006e5995f49199967bc
Parents: 8172231
Author: onders86 <on...@gmail.com>
Authored: Sun Aug 27 13:25:12 2017 +0300
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Aug 28 08:30:50 2017 +0200

----------------------------------------------------------------------
 apache-camel/pom.xml                            |   4 +
 .../apache/camel/builder/DataFormatClause.java  |  17 +
 .../apache/camel/model/MarshalDefinition.java   |   2 +
 .../apache/camel/model/UnmarshalDefinition.java |   2 +
 .../camel/model/dataformat/ASN1DataFormat.java  |  89 ++++
 .../model/dataformat/DataFormatsDefinition.java |   1 +
 .../DataFormatTransformerDefinition.java        |   2 +
 .../apache/camel/model/dataformat/jaxb.index    |   1 +
 components/camel-asn1/pom.xml                   | 144 ++++++
 .../src/main/docs/asn1-dataformat.adoc          |  74 +++
 .../camel/dataformat/asn1/ASN1DataFormat.java   | 148 ++++++
 .../dataformat/asn1/ASN1GenericIterator.java    | 144 ++++++
 .../dataformat/asn1/ASN1MessageIterator.java    | 133 +++++
 .../camel/dataformat/asn1/ASN1Splitter.java     |  42 ++
 .../src/main/resources/META-INF/LICENSE.txt     | 203 ++++++++
 .../src/main/resources/META-INF/NOTICE.txt      |  11 +
 .../services/org/apache/camel/dataformat/asn1   |  18 +
 .../asn1/ASN1DataFormatTestHelper.java          |  34 ++
 ...taFormatWithStreamIteratorByteArrayTest.java |  95 ++++
 ...N1DataFormatWithStreamIteratorClassTest.java | 190 ++++++++
 .../asn1/ASN1DataFormatWithStreamTest.java      |  91 ++++
 .../asn1/SpringASN1DataFormatRouteTest.java     |  62 +++
 .../src/test/resources/asn1_data/SMS_SINGLE.tt  | Bin 0 -> 229 bytes
 .../asn1_structure/TestSMSCBerCdr.asn1          | 480 +++++++++++++++++++
 .../src/test/resources/log4j2.properties        |  28 ++
 .../asn1/SpringASN1DataFormatRouteTest.xml      |  46 ++
 components/pom.xml                              |   1 +
 parent/pom.xml                                  |  11 +
 .../camel-asn1-starter/pom.xml                  |  53 ++
 .../ASN1DataFormatAutoConfiguration.java        | 128 +++++
 .../springboot/ASN1DataFormatConfiguration.java |  75 +++
 .../src/main/resources/META-INF/LICENSE.txt     | 203 ++++++++
 .../src/main/resources/META-INF/NOTICE.txt      |  11 +
 .../main/resources/META-INF/spring.factories    |  19 +
 .../src/main/resources/META-INF/spring.provides |  17 +
 .../spring-boot/components-starter/pom.xml      |   1 +
 36 files changed, 2580 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/apache-camel/pom.xml
----------------------------------------------------------------------
diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index 7ea36a5..098527c 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -72,6 +72,10 @@
     </dependency>
     <dependency>
       <groupId>org.apache.camel</groupId>
+      <artifactId>camel-asn1</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
       <artifactId>camel-asterisk</artifactId>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index ec719b8..23a70c4 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -24,6 +24,7 @@ import org.w3c.dom.Node;
 
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
 import org.apache.camel.model.dataformat.BeanioDataFormat;
@@ -1163,6 +1164,22 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
         ZipFileDataFormat zfdf = new ZipFileDataFormat();
         return dataFormat(zfdf);
     }
+    
+    /**
+     * Uses the ASN.1 file data format
+     */
+    public T asn1() {
+        ASN1DataFormat asn1Df = new ASN1DataFormat();
+        return dataFormat(asn1Df);
+    }
+    
+    public T asn1(String clazzName) {
+        return dataFormat(new ASN1DataFormat(clazzName));
+    }
+    
+    public T asn1(Boolean usingIterator) {
+        return dataFormat(new ASN1DataFormat(usingIterator));
+    }
 
     @SuppressWarnings("unchecked")
     private T dataFormat(DataFormatDefinition dataFormatType) {

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
index a2bddfc..2b832e0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Processor;
+import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
 import org.apache.camel.model.dataformat.BeanioDataFormat;
@@ -81,6 +82,7 @@ public class MarshalDefinition extends NoOutputDefinition<MarshalDefinition> {
 
     // cannot use @XmlElementRef as it doesn't allow optional properties
     @XmlElements({
+        @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class),
         @XmlElement(required = false, name = "avro", type = AvroDataFormat.class),
         @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),
         @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
index cd97c61..462c954 100644
--- a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Processor;
+import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
 import org.apache.camel.model.dataformat.BeanioDataFormat;
@@ -81,6 +82,7 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition>
 
     // cannot use @XmlElementRef as it doesn't allow optional properties
     @XmlElements({
+        @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class),
         @XmlElement(required = false, name = "avro", type = AvroDataFormat.class),
         @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),
         @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
new file mode 100644
index 0000000..a61ce69
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.model.dataformat;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.Metadata;
+
+/**
+ * ASN.1 data format
+ */
+@Metadata(firstVersion = "2.20.0", label = "dataformat,transformation,file", title = "ASN.1 File")
+@XmlRootElement(name = "asn1")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ASN1DataFormat extends DataFormatDefinition {
+    @XmlAttribute
+    private Boolean usingIterator;
+    @XmlAttribute
+    private String clazzName;
+
+    public ASN1DataFormat() {
+        super("asn1");
+    }
+    
+    public ASN1DataFormat(Boolean usingIterator) {
+        this();
+        setUsingIterator(usingIterator); 
+    }
+    
+    public ASN1DataFormat(String clazzName) {
+        this();
+        setUsingIterator(Boolean.TRUE);
+        setClazzName(clazzName); 
+    }
+    
+    @Override
+    protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+        if (usingIterator != null) {
+            setProperty(camelContext, dataFormat, "usingIterator", usingIterator);
+        }
+        if (this.clazzName != null) {
+            setProperty(camelContext, dataFormat, "clazzName", clazzName);
+        }
+    }
+    
+    public Boolean getUsingIterator() {
+        return usingIterator;
+    }
+    
+    /**
+     * If the asn1 file has more then one entry, the setting this option to true, allows to work with the splitter EIP,
+     * to split the data using an iterator in a streaming mode.
+     */
+    public void setUsingIterator(Boolean usingIterator) {
+        this.usingIterator = usingIterator;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    /**
+     * Name of class to use when unarmshalling
+     */
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
index 43133b0..11aa7b0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
@@ -38,6 +38,7 @@ public class DataFormatsDefinition {
 
     // cannot use @XmlElementRef as it doesn't allow optional properties
     @XmlElements({
+        @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class),
         @XmlElement(required = false, name = "avro", type = AvroDataFormat.class),
         @XmlElement(required = false, name = "barcode", type = BarcodeDataFormat.class),
         @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
index adda5df..755d9b4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.transformer.DataFormatTransformer;
 import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.dataformat.ASN1DataFormat;
 import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.BarcodeDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
@@ -84,6 +85,7 @@ import org.apache.camel.spi.Transformer;
 public class DataFormatTransformerDefinition extends TransformerDefinition {
 
     @XmlElements({
+        @XmlElement(required = false, name = "asn1", type = ASN1DataFormat.class),
         @XmlElement(required = false, name = "avro", type = AvroDataFormat.class),
         @XmlElement(required = false, name = "barcode", type = BarcodeDataFormat.class),
         @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
----------------------------------------------------------------------
diff --git a/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index b/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
index 4fe9c7d..3e046e1 100644
--- a/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
+++ b/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
@@ -14,6 +14,7 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ------------------------------------------------------------------------
+ASN1DataFormat
 AvroDataFormat
 Base64DataFormat
 BeanioDataFormat

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-asn1/pom.xml b/components/camel-asn1/pom.xml
new file mode 100644
index 0000000..70b7af1
--- /dev/null
+++ b/components/camel-asn1/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>components</artifactId>
+    <version>2.20.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>camel-asn1</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel :: ASN.1</name>
+  <description>Camel ASN.1 support</description>
+
+  <properties>
+    <camel.osgi.import>
+    	!org.apache.camel.dataformat.asn1,
+    	*
+    </camel.osgi.import>
+    <camel.osgi.export>
+    	org.apache.camel.dataformat.asn1;${camel.osgi.version}
+    </camel.osgi.export>
+    <camel.osgi.export.service>org.apache.camel.spi.DataFormatResolver;dataformat=asn1</camel.osgi.export.service>
+    
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.bouncycastle</groupId>
+      <artifactId>bcprov-jdk15on</artifactId>
+      <version>${bouncycastle-version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.openmuc</groupId>
+      <artifactId>jasn1</artifactId>
+      <version>${jasn1-version}</version>
+    </dependency>
+
+    <!-- test dependencies -->
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-test-spring</artifactId>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+         <executions>
+           <execution>
+             <id>generate-test-sources</id>
+             <phase>generate-sources</phase>
+             <goals>
+               <goal>java</goal>
+             </goals>
+             <configuration>
+               <includeProjectDependencies>false</includeProjectDependencies>
+               <includePluginDependencies>true</includePluginDependencies>
+               <testSourceRoot>${basedir}/target/generated/src/test/java</testSourceRoot>
+               <executableDependency>
+                 <groupId>org.openmuc</groupId>
+                 <artifactId>jasn1-compiler</artifactId>
+               </executableDependency>
+               <mainClass>org.openmuc.jasn1.compiler.Compiler</mainClass>
+               <arguments>
+                 <argument>-o</argument>
+                 <argument>target/generated/src/test/java</argument>
+                 <argument>-p</argument>
+                 <argument>org.apache.camel.dataformat.asn1.model</argument>
+                 <argument>-f</argument>
+                 <argument>src/test/resources/asn1_structure/TestSMSCBerCdr.asn1</argument>
+                 <argument>-il</argument>
+               </arguments>
+             </configuration>
+           </execution>
+         </executions>
+         <dependencies>
+           <dependency>
+             <groupId>org.openmuc</groupId>
+             <artifactId>jasn1-compiler</artifactId>
+             <version>${jasn1-version}</version>
+           </dependency>
+         </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/docs/asn1-dataformat.adoc
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/docs/asn1-dataformat.adoc b/components/camel-asn1/src/main/docs/asn1-dataformat.adoc
new file mode 100644
index 0000000..eb050c4
--- /dev/null
+++ b/components/camel-asn1/src/main/docs/asn1-dataformat.adoc
@@ -0,0 +1,74 @@
+## ASN.1 File DataFormat
+
+*Available as of Camel version 2.20*
+
+The ASN.1 Data Format link:data-format.html[Data Format] [Intoduction to ASN.1](https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx) is a Camel Frameworks's data format implementation based on Bouncy Castle's bcprov-jdk15on library and jASN.1's java compiler for the formal notation used for describing data transmitted by telecommunications protocols, regardless of language implementation and physical representation of these data, whatever the application, whether complex or very simple. Messages can be unmarshalled (conversion to simple Java POJO(s)) to plain Java objects. By the help of Camel's routing engine and data transformations you can then play with POJO(s) and apply customised formatting and call other Camel Component's to convert and send messages to upstream systems.
+
+### ASN.1 Data Format Options
+
+// dataformat options: START
+The ASN.1 File dataformat supports 3 options which are listed below.
+
+
+
+[width="100%",cols="2s,1m,1m,6",options="header"]
+|=======================================================================
+| Name | Default | Java Type | Description
+| usingIterator | false | Boolean | If the asn1 file has more then one entry the setting this option to true allows to work with the splitter EIP to split the data using an iterator in a streaming mode.
+| clazzName |  | String | Name of class to use when unarmshalling
+| contentTypeHeader | false | Boolean | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML or application/json for data formats marshalling to JSon etc.
+|=======================================================================
+// dataformat options: END
+
+### Unmarshal
+
+There are 3 different ways to unmarshal ASN.1 structured messages. (Usually binary files)
+
+In this first example we unmarshal BER file payload to OutputStream and send it to mock endpoint.
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
+-----------------------------------------------------------------------
+
+In the second example we unmarshal BER file payload to byte array using Split EIP. The reason for applying Split EIP is that usually each BER file or (ASN.1 structured file) contains multiple records to process and Split EIP helps us to get each record in a file as byte arrays which is actually ASN1Primitive's instance (by the use of Bouncy Castle's ASN.1 support in bcprov-jdk15on library)
+Byte arrays then may be converted to ASN1Primitive by the help of public static method in (ASN1Primitive.fromByteArray)
+In such example, note that you need to set `usingIterator=true`
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
+-----------------------------------------------------------------------
+
+In the last example we unmarshal BER file payload to plain old Java Objects using Split EIP. The reason for applying Split EIP is already mentioned in the previous example. Please note and keep in mind that reason. In such example we also need to set the fully qualified name of the class or <YourObject>.class reference through data format.
+The important thing to note here is that your object should have been generated by jasn1 compiler which is a nice tool to generate java object representations of your ASN.1 structure. For the reference usage of jasn1 compiler see [JASN.1 Project Page](https://www.openmuc.org/asn1/) and please also see how the compiler is invoked with the help of maven's exec plugin.
+For example, in this data format's unit tests an example ASN.1 structure(TestSMSBerCdr.asn1) is added in `src/test/resources/asn1_structure`. jasn1 compiler is invoked and java object's representations are generated in `${basedir}/target/generated/src/test/java`
+The nice thing about this example, you will get POJO instance at the mock endpoint or at whatever your endpoint is.    
+
+[source,java]
+-----------------------------------------------------------------------
+from("direct:unmarshaldsl")
+         .unmarshal()
+         .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
+         .split(body(Iterator.class)).streaming()
+.to("mock:unmarshaldsl");
+-----------------------------------------------------------------------
+
+### Dependencies
+
+To use ASN.1 data format in your camel routes you need to add a dependency on
+*camel-asn1* which implements this data format.
+
+If you use Maven you can just add the following to your `pom.xml`,
+substituting the version number for the latest & greatest release (see
+link:download.html[the download page for the latest versions]).
+
+[source,xml]
+----------------------------------------------------------
+<dependency>
+  <groupId>org.apache.camel</groupId>
+  <artifactId>camel-asn1</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
new file mode 100644
index 0000000..446ea4c
--- /dev/null
+++ b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1DataFormat.java
@@ -0,0 +1,148 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.spi.DataFormat;
+import org.apache.camel.spi.DataFormatName;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ObjectHelper;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
+
+public class ASN1DataFormat extends ServiceSupport implements DataFormat, DataFormatName {
+    private boolean usingIterator;
+    private String clazzName;
+
+    public ASN1DataFormat() {
+        this.usingIterator = false;
+    }
+
+    public ASN1DataFormat(String clazzName) {
+        this.usingIterator = true;
+        this.clazzName = clazzName;
+    }
+
+    public ASN1DataFormat(Class<?> clazz) {
+        this.usingIterator = true;
+        this.clazzName = clazz.getName();
+    }
+
+    @Override
+    public String getDataFormatName() {
+        return "asn1";
+    }
+
+    @Override
+    public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
+        InputStream berOut = null;
+        if (usingIterator) {
+            if (clazzName != null) {
+                Class<?> clazz = exchange.getContext().getClassResolver().resolveMandatoryClass(clazzName);
+                encodeGenericTypeObject(exchange, clazz, stream);
+                return;
+            }
+            Object record = exchange.getIn().getBody();
+            if (record instanceof ASN1Primitive) {
+                ASN1Primitive asn1Primitive = ObjectHelper.cast(ASN1Primitive.class, record);
+                berOut = new ByteArrayInputStream(asn1Primitive.getEncoded());
+            } else if (record instanceof byte[]) {
+                berOut = new ByteArrayInputStream(ObjectHelper.cast(byte[].class, record));
+            }
+        } else {
+            byte[] byteInput = exchange.getContext().getTypeConverter().mandatoryConvertTo(byte[].class, exchange, graph);
+            berOut = new ByteArrayInputStream(byteInput);
+        }
+        try {
+            IOHelper.copy(berOut, stream);
+        } finally {
+            IOHelper.close(berOut, stream);
+        }
+    }
+
+    private void encodeGenericTypeObject(Exchange exchange, Class<?> clazz, OutputStream stream)
+        throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
+        Class<?>[] paramOut = new Class<?>[1];
+        paramOut[0] = BerByteArrayOutputStream.class;
+        BerByteArrayOutputStream berOut = new BerByteArrayOutputStream(IOHelper.DEFAULT_BUFFER_SIZE / 256, true);
+        Method encodeMethod = exchange.getIn().getBody().getClass().getDeclaredMethod("encode", paramOut);
+        encodeMethod.invoke(exchange.getIn().getBody(), berOut);
+        stream.write(berOut.getArray());
+    }
+
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    @Override
+    public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+        if (usingIterator) {
+            if (clazzName != null) {
+                Class<?> clazz = exchange.getContext().getClassResolver().resolveMandatoryClass(clazzName);
+                ASN1GenericIterator asn1GenericIterator = new ASN1GenericIterator(clazz, stream);
+                return asn1GenericIterator;
+            }
+            ASN1MessageIterator asn1MessageIterator = new ASN1MessageIterator(exchange, stream);
+            return asn1MessageIterator;
+        } else {
+            ASN1Primitive asn1Record = null;
+            byte[] asn1Bytes;
+            try (ASN1InputStream ais = new ASN1InputStream(stream); ByteArrayOutputStream asn1Out = new ByteArrayOutputStream();) {
+                while (ais.available() > 0) {
+                    asn1Record = ais.readObject();
+                    asn1Out.write(asn1Record.getEncoded());
+                }
+                asn1Bytes = asn1Out.toByteArray();
+            }
+            return asn1Bytes;
+        }
+    }
+
+    public boolean isUsingIterator() {
+        return usingIterator;
+    }
+
+    public void setUsingIterator(boolean usingIterator) {
+        this.usingIterator = usingIterator;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        // no op
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // no op
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1GenericIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1GenericIterator.java b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1GenericIterator.java
new file mode 100644
index 0000000..8014777
--- /dev/null
+++ b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1GenericIterator.java
@@ -0,0 +1,144 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ObjectHelper;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ASN1GenericIterator<T> implements Iterator<T>, Closeable {
+    static final Logger LOGGER = LoggerFactory.getLogger(ASN1GenericIterator.class);
+
+    private volatile ASN1InputStream asn1InputStream;
+    private volatile T parent;
+    private Class<T> clazz;
+
+    public ASN1GenericIterator(Class<T> clazz, InputStream inputStream) {
+        if (inputStream instanceof ASN1InputStream) {
+            this.asn1InputStream = (ASN1InputStream)inputStream;
+        } else {
+            this.asn1InputStream = new ASN1InputStream(inputStream);
+        }
+        this.parent = null;
+        this.clazz = clazz;
+    }
+
+    @Override
+    public boolean hasNext() {
+        try {
+            if (asn1InputStream == null) {
+                return false;
+            }
+            boolean availableDataInCurrentEntry = asn1InputStream.available() > 0;
+            if (!availableDataInCurrentEntry) {
+                // advance to the next entry.
+                parent = getNextElement();
+                if (parent == null) {
+                    asn1InputStream.close();
+                    availableDataInCurrentEntry = false;
+                } else {
+                    availableDataInCurrentEntry = true;
+                }
+            }
+            return availableDataInCurrentEntry;
+        } catch (IOException exception) {
+            // Just wrap the IOException as CamelRuntimeException
+            throw new RuntimeCamelException(exception);
+        }
+    }
+
+    private T getNextElement() {
+        if (asn1InputStream == null) {
+            return null;
+        }
+
+        try {
+            ASN1Primitive current = getNextEntry();
+
+            if (current != null) {
+                T instance = ObjectHelper.cast(clazz, createGenericTypeObject(current, clazz));
+                return instance;
+            } else {
+                LOGGER.trace("close asn1InputStream");
+                return null;
+            }
+        } catch (Throwable exception) {
+            // Just wrap the IOException as CamelRuntimeException
+            throw new RuntimeCamelException(exception);
+        }
+    }
+
+    @SuppressWarnings("rawtypes")
+    private Object createGenericTypeObject(ASN1Primitive current, Class<T> clazz2) throws Throwable {
+        Class<?>[] paramIS = new Class[1];
+        paramIS[0] = InputStream.class;
+
+        Method m = clazz.getDeclaredMethod("decode", paramIS);
+
+        InputStream is = new ByteArrayInputStream(current.getEncoded());
+        Object clazzInstance = clazz.newInstance();
+        m.invoke(clazzInstance, is);
+
+        return clazzInstance;
+    }
+
+    private ASN1Primitive getNextEntry() throws IOException {
+        return asn1InputStream.readObject();
+    }
+
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public T next() {
+        if (parent == null) {
+            parent = getNextElement();
+        }
+        T answer = parent;
+        parent = null;
+        checkNullAnswer(answer);
+
+        return answer;
+    }
+
+    private void checkNullAnswer(T answer) {
+        if (answer == null && asn1InputStream != null) {
+            IOHelper.close(asn1InputStream);
+            asn1InputStream = null;
+        }
+    }
+
+    @Override
+    public void close() throws IOException {
+        IOHelper.close(asn1InputStream);
+        asn1InputStream = null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1MessageIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1MessageIterator.java b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1MessageIterator.java
new file mode 100644
index 0000000..4c1579a
--- /dev/null
+++ b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1MessageIterator.java
@@ -0,0 +1,133 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.impl.DefaultMessage;
+import org.apache.camel.util.IOHelper;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ASN1MessageIterator implements Iterator<Message>, Closeable {
+    
+    static final Logger LOGGER = LoggerFactory.getLogger(ASN1MessageIterator.class);
+    
+    private final Exchange exchange;
+    private volatile ASN1InputStream asn1InputStream;
+    private volatile Message parent;
+    
+    public ASN1MessageIterator(Exchange exchange, InputStream inputStream) {
+        this.exchange = exchange;
+        if (inputStream instanceof ASN1InputStream) {
+            this.asn1InputStream = (ASN1InputStream) inputStream;
+        } else {
+            this.asn1InputStream = new ASN1InputStream(inputStream);
+        }
+        this.parent = null;
+    }
+
+    @Override
+    public boolean hasNext() {
+        try {
+            if (asn1InputStream == null) {
+                return false;
+            }
+            boolean availableDataInCurrentEntry = asn1InputStream.available() > 0;
+            if (!availableDataInCurrentEntry) {
+                // advance to the next entry.
+                parent = getNextElement();
+                if (parent == null) {
+                    asn1InputStream.close();
+                    availableDataInCurrentEntry = false;
+                } else {
+                    availableDataInCurrentEntry = true;
+                }
+            }
+            return availableDataInCurrentEntry;
+        } catch (IOException exception) {
+            //Just wrap the IOException as CamelRuntimeException
+            throw new RuntimeCamelException(exception);
+        }
+    }
+    
+    private Message getNextElement() {
+        if (asn1InputStream == null) {
+            return null;
+        }
+
+        try {
+            ASN1Primitive current = getNextEntry();
+
+            if (current != null) {
+                Message answer = new DefaultMessage(exchange.getContext());
+                answer.getHeaders().putAll(exchange.getIn().getHeaders());
+                answer.setBody(current.getEncoded());
+                return answer;
+            } else {
+                LOGGER.trace("close asn1InputStream");
+                return null;
+            }
+        } catch (IOException exception) {
+            //Just wrap the IOException as CamelRuntimeException
+            throw new RuntimeCamelException(exception);
+        }
+    }
+    
+    private ASN1Primitive getNextEntry() throws IOException {
+        return asn1InputStream.readObject();
+    }
+    
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Message next() {
+        if (parent == null) {
+            parent = getNextElement();
+        }
+        Message answer = parent;
+        parent = null;
+        checkNullAnswer(answer);
+
+        return answer;
+    }
+    
+    private void checkNullAnswer(Message answer) {
+        if (answer == null && asn1InputStream != null) {
+            IOHelper.close(asn1InputStream);
+            asn1InputStream = null;
+        }
+    }
+
+    @Override
+    public void close() throws IOException {
+        IOHelper.close(asn1InputStream);
+        asn1InputStream = null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1Splitter.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1Splitter.java b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1Splitter.java
new file mode 100644
index 0000000..e51bf3d
--- /dev/null
+++ b/components/camel-asn1/src/main/java/org/apache/camel/dataformat/asn1/ASN1Splitter.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.InputStream;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Message;
+
+public class ASN1Splitter implements Expression {
+
+    public ASN1Splitter() {
+    }
+
+    public Object evaluate(Exchange exchange) {
+        Message inputMessage = exchange.getIn();
+        InputStream inputStream = inputMessage.getBody(InputStream.class);
+        return new ASN1MessageIterator(exchange, inputStream);
+    }
+
+    @Override
+    public <T> T evaluate(Exchange exchange, Class<T> type) {
+        Object result = evaluate(exchange);
+        return exchange.getContext().getTypeConverter().convertTo(type, exchange, result);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/resources/META-INF/LICENSE.txt
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/resources/META-INF/LICENSE.txt b/components/camel-asn1/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/components/camel-asn1/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/resources/META-INF/NOTICE.txt
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/resources/META-INF/NOTICE.txt b/components/camel-asn1/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/components/camel-asn1/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1 b/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1
new file mode 100644
index 0000000..e2890a5
--- /dev/null
+++ b/components/camel-asn1/src/main/resources/META-INF/services/org/apache/camel/dataformat/asn1
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+#
+
+class=org.apache.camel.dataformat.asn1.ASN1DataFormat

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatTestHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatTestHelper.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatTestHelper.java
new file mode 100644
index 0000000..cf552fd
--- /dev/null
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatTestHelper.java
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+
+final class ASN1DataFormatTestHelper {
+    
+    private ASN1DataFormatTestHelper() {
+    }
+    
+    public static ByteArrayInputStream reteriveByteArrayInputStream(File file) throws IOException {
+        return new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java
new file mode 100644
index 0000000..58f7bd8
--- /dev/null
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorByteArrayTest.java
@@ -0,0 +1,95 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.commons.io.FileUtils;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.junit.Test;
+
+public class ASN1DataFormatWithStreamIteratorByteArrayTest extends CamelTestSupport {
+
+    private ASN1DataFormat asn1;
+    private String fileName = "src/test/resources/asn1_data/SMS_SINGLE.tt";
+
+    private void baseASN1DataFormatWithStreamIteratorByteArrayTest(String mockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(mockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchanges = getMockEndpoint(mockEnpointName).getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof byte[]);
+            assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), exchange.getIn().getBody(byte[].class)));
+            assertTrue(ASN1Primitive.fromByteArray(exchange.getIn().getBody(byte[].class)) instanceof ASN1Primitive);
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
+    public void testUnmarshalReturnByteArray() throws Exception {
+        baseASN1DataFormatWithStreamIteratorByteArrayTest("mock:unmarshal", "direct:unmarshal");
+    }
+    
+    @Test
+    public void testUnmarshalReturnByteArrayDsl() throws Exception {
+        baseASN1DataFormatWithStreamIteratorByteArrayTest("mock:unmarshaldsl", "direct:unmarshaldsl");
+    }
+
+    @Test
+    public void testUnmarshalMarshalReturnOutputStream() throws Exception {
+        baseASN1DataFormatWithStreamIteratorByteArrayTest("mock:marshal", "direct:unmarshalthenmarshal");
+    }
+    
+    @Test
+    public void testUnmarshalMarshalReturnOutputStreamDsl() throws Exception {
+        baseASN1DataFormatWithStreamIteratorByteArrayTest("mock:marshaldsl", "direct:unmarshalthenmarshaldsl");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+
+                asn1 = new ASN1DataFormat();
+                asn1.setUsingIterator(true);
+
+                from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
+                from("direct:unmarshalthenmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().marshal(asn1).to("mock:marshal");
+                
+                from("direct:unmarshaldsl").unmarshal().asn1(true).split(body(Iterator.class)).streaming().to("mock:unmarshaldsl");
+                from("direct:unmarshalthenmarshaldsl").unmarshal().asn1(true).split(body(Iterator.class)).streaming().marshal().asn1(true).to("mock:marshaldsl");
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
new file mode 100644
index 0000000..16dc39c
--- /dev/null
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
@@ -0,0 +1,190 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import org.junit.Ignore;
+
+public class ASN1DataFormatWithStreamIteratorClassTest extends CamelTestSupport {
+
+    private ASN1DataFormat asn1;
+    private String fileName = "src/test/resources/asn1_data/SMS_SINGLE.tt";
+
+    private void baseUnmarshalReturnClassObjectTest(String mockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(mockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchanges = getMockEndpoint(mockEnpointName).getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof SmsCdr);
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
+    public void testUnmarshalReturnClassObject() throws Exception {
+        baseUnmarshalReturnClassObjectTest("mock:unmarshal", "direct:unmarshal");
+    }
+
+    @Test
+    public void testUnmarshalReturnClassObjectDsl() throws Exception {
+        baseUnmarshalReturnClassObjectTest("mock:unmarshaldsl", "direct:unmarshaldsl");
+    }
+
+    private void baseUnmarshalMarshalReturnOutputStreamTest(String mockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(mockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchanges = getMockEndpoint(mockEnpointName).getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof byte[]);
+            // assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile),
+            // exchange.getIn().getBody(byte[].class)));
+
+            // FileOutputStream fos = new
+            // FileOutputStream("src/test/resources/after_unmarshal_marshal_SMS_SINGLE.tt");
+            // fos.write(ObjectHelper.cast(byte[].class,
+            // exchange.getIn().getBody()));
+            // fos.close();
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
+    public void testUnmarshalMarshalReturnOutputStream() throws Exception {
+        baseUnmarshalMarshalReturnOutputStreamTest("mock:marshal", "direct:unmarshalthenmarshal");
+    }
+
+    @Test
+    public void testUnmarshalMarshalReturnOutputStreamDsl() throws Exception {
+        baseUnmarshalMarshalReturnOutputStreamTest("mock:marshaldsl", "direct:unmarshalthenmarshaldsl");
+    }
+
+    @Test
+    @Ignore
+    public void testUnmarshalReturnClassObjectAfterUnmarshalMarshalReturnOutputStream() throws Exception {
+        getMockEndpoint("mock:unmarshal").expectedMessageCount(1);
+
+        File testFile = new File("src/test/resources/after_unmarshal_marshal_SMS_SINGLE.tt");
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody("direct:unmarshal", bais);
+
+        List<Exchange> exchanges = getMockEndpoint("mock:unmarshal").getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof SmsCdr);
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    private void baseDoubleUnmarshalTest(String firstMockEnpointName, String secondMockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(firstMockEnpointName).expectedMessageCount(1);
+        getMockEndpoint(secondMockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchangesFirst = getMockEndpoint(firstMockEnpointName).getExchanges();
+
+        assertTrue(exchangesFirst.size() == 1);
+        SmsCdr firstUnmarshalledCdr = null;
+        for (Exchange exchange : exchangesFirst) {
+            assertTrue(exchange.getIn().getBody() instanceof SmsCdr);
+            firstUnmarshalledCdr = exchange.getIn().getBody(SmsCdr.class);
+        }
+
+        Thread.sleep(100);
+
+        List<Exchange> exchangesSecond = getMockEndpoint(secondMockEnpointName).getExchanges();
+
+        assertTrue(exchangesSecond.size() == 1);
+        SmsCdr secondUnmarshalledCdr = null;
+        for (Exchange exchange : exchangesSecond) {
+            assertTrue(exchange.getIn().getBody() instanceof SmsCdr);
+            secondUnmarshalledCdr = exchange.getIn().getBody(SmsCdr.class);
+        }
+
+        assertTrue(firstUnmarshalledCdr.toString().equals(secondUnmarshalledCdr.toString()));
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
+    public void testDoubleUnmarshal() throws Exception {
+        baseDoubleUnmarshalTest("mock:firstunmarshal", "mock:secondunmarshal", "direct:doubleunmarshal");
+    }
+
+    @Test
+    public void testDoubleUnmarshalDsl() throws Exception {
+        baseDoubleUnmarshalTest("mock:firstunmarshaldsldsl", "mock:secondunmarshaldsl", "direct:doubleunmarshaldsl");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+
+                asn1 = new ASN1DataFormat(SmsCdr.class);
+
+                from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
+                from("direct:unmarshalthenmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().marshal(asn1).to("mock:marshal");
+                from("direct:doubleunmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().wireTap("direct:secondunmarshal").to("mock:firstunmarshal");
+                from("direct:secondunmarshal").marshal(asn1).unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:secondunmarshal");
+
+                from("direct:unmarshaldsl").unmarshal().asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").split(body(Iterator.class)).streaming()
+                    .to("mock:unmarshaldsl");
+                from("direct:unmarshalthenmarshaldsl").unmarshal().asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").split(body(Iterator.class)).streaming()
+                    .marshal().asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").to("mock:marshaldsl");
+
+                from("direct:doubleunmarshaldsl").unmarshal().asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").split(body(Iterator.class)).streaming()
+                    .wireTap("direct:secondunmarshaldsl").to("mock:firstunmarshaldsldsl");
+                from("direct:secondunmarshaldsl").marshal().asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").unmarshal()
+                    .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr").split(body(Iterator.class)).streaming().to("mock:secondunmarshaldsl");
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java
new file mode 100644
index 0000000..f7c0ef9
--- /dev/null
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamTest.java
@@ -0,0 +1,91 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.commons.io.FileUtils;
+import org.junit.Test;
+
+public class ASN1DataFormatWithStreamTest extends CamelTestSupport {
+
+    private ASN1DataFormat asn1;
+    private String fileName = "src/test/resources/asn1_data/SMS_SINGLE.tt";
+    
+    private void baseASN1DataFormatWithStreamTest(String mockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(mockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchanges = getMockEndpoint(mockEnpointName).getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof byte[]);
+            assertTrue(Arrays.equals(FileUtils.readFileToByteArray(testFile), exchange.getIn().getBody(byte[].class)));
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
+    public void testUnmarshalReturnOutputStream() throws Exception {
+        baseASN1DataFormatWithStreamTest("mock:unmarshal", "direct:unmarshal");
+    }
+    
+    @Test
+    public void testUnmarshalReturnOutputStreamDsl() throws Exception {
+        baseASN1DataFormatWithStreamTest("mock:unmarshaldsl", "direct:unmarshaldsl");
+    }
+
+    @Test
+    public void testUnmarshalMarshalReturnOutputStream() throws Exception {
+        baseASN1DataFormatWithStreamTest("mock:marshal", "direct:unmarshalthenmarshal");
+    }
+    
+    @Test
+    public void testUnmarshalMarshalReturnOutputStreamDsl() throws Exception {
+        baseASN1DataFormatWithStreamTest("mock:marshaldsl", "direct:unmarshalthenmarshaldsl");
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+
+                asn1 = new ASN1DataFormat();
+
+                from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
+                from("direct:unmarshalthenmarshal").unmarshal(asn1).marshal(asn1).to("mock:marshal");
+                
+                from("direct:unmarshaldsl").unmarshal().asn1().to("mock:unmarshaldsl");
+                from("direct:unmarshalthenmarshaldsl").unmarshal().asn1().marshal().asn1().to("mock:marshaldsl");
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.java
new file mode 100644
index 0000000..aba9702
--- /dev/null
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.camel.dataformat.asn1;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr;
+import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.junit.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringASN1DataFormatRouteTest extends CamelSpringTestSupport {
+    
+    private String fileName = "src/test/resources/asn1_data/SMS_SINGLE.tt";
+
+    private void baseUnmarshalReturnClassObjectTest(String mockEnpointName, String directEndpointName) throws Exception {
+        getMockEndpoint(mockEnpointName).expectedMessageCount(1);
+
+        File testFile = new File(fileName);
+        ByteArrayInputStream bais = ASN1DataFormatTestHelper.reteriveByteArrayInputStream(testFile);
+
+        template.sendBody(directEndpointName, bais);
+
+        List<Exchange> exchanges = getMockEndpoint(mockEnpointName).getExchanges();
+
+        assertTrue(exchanges.size() == 1);
+        for (Exchange exchange : exchanges) {
+            assertTrue(exchange.getIn().getBody() instanceof SmsCdr);
+        }
+
+        assertMockEndpointsSatisfied();
+    }
+    
+    @Test
+    public void testUnmarshalReturnClassObject() throws Exception {
+        baseUnmarshalReturnClassObjectTest("mock:unmarshal", "direct:unmarshal");
+    }
+
+    @Override
+    protected AbstractApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/camel/dataformat/asn1/SpringASN1DataFormatRouteTest.xml");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/9bb2036c/components/camel-asn1/src/test/resources/asn1_data/SMS_SINGLE.tt
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/resources/asn1_data/SMS_SINGLE.tt b/components/camel-asn1/src/test/resources/asn1_data/SMS_SINGLE.tt
new file mode 100644
index 0000000..672f98c
Binary files /dev/null and b/components/camel-asn1/src/test/resources/asn1_data/SMS_SINGLE.tt differ


[5/5] camel git commit: CAMEL-11612: Fixed build from root dir and regen

Posted by ac...@apache.org.
CAMEL-11612: Fixed build from root dir and regen


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/58a189fb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/58a189fb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/58a189fb

Branch: refs/heads/master
Commit: 58a189fb7a631407315a4275fc1f6b53d49ef657
Parents: c8a86bd
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Aug 28 10:11:15 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Aug 28 10:11:15 2017 +0200

----------------------------------------------------------------------
 camel-core/readme.adoc                                    |  2 +-
 components/camel-asn1/pom.xml                             |  4 ++--
 components/readme.adoc                                    |  4 +++-
 docs/user-manual/en/SUMMARY.md                            |  1 +
 .../spring-boot-dm/camel-spring-boot-bom/pom.xml          |  5 +++++
 .../spring-boot-dm/camel-spring-boot-dependencies/pom.xml | 10 ++++++++++
 6 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/camel-core/readme.adoc
----------------------------------------------------------------------
diff --git a/camel-core/readme.adoc b/camel-core/readme.adoc
index 93e7b99..3fbb300 100644
--- a/camel-core/readme.adoc
+++ b/camel-core/readme.adoc
@@ -103,7 +103,7 @@ Data Formats
 
 
 // dataformats: START
-Number of Data Formats: 4 in 38 JAR artifacts (0 deprecated)
+Number of Data Formats: 4 in 39 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |=======================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/components/camel-asn1/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-asn1/pom.xml b/components/camel-asn1/pom.xml
index 70b7af1..78ee779 100644
--- a/components/camel-asn1/pom.xml
+++ b/components/camel-asn1/pom.xml
@@ -120,11 +120,11 @@
                <mainClass>org.openmuc.jasn1.compiler.Compiler</mainClass>
                <arguments>
                  <argument>-o</argument>
-                 <argument>target/generated/src/test/java</argument>
+                 <argument>${basedir}/target/generated/src/test/java</argument>
                  <argument>-p</argument>
                  <argument>org.apache.camel.dataformat.asn1.model</argument>
                  <argument>-f</argument>
-                 <argument>src/test/resources/asn1_structure/TestSMSCBerCdr.asn1</argument>
+                 <argument>${basedir}/src/test/resources/asn1_structure/TestSMSCBerCdr.asn1</argument>
                  <argument>-il</argument>
                </arguments>
              </configuration>

http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/components/readme.adoc
----------------------------------------------------------------------
diff --git a/components/readme.adoc b/components/readme.adoc
index c7cf0eb..aaf8f51 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -856,12 +856,14 @@ Data Formats
 ^^^^^^^^^^^^
 
 // dataformats: START
-Number of Data Formats: 47 in 38 JAR artifacts (0 deprecated)
+Number of Data Formats: 48 in 39 JAR artifacts (0 deprecated)
 
 [width="100%",cols="4,1,5",options="header"]
 |=======================================================================
 | Data Format | Available From | Description
 
+| link:camel-asn1/src/main/docs/asn1-dataformat.adoc[ASN.1 File] (camel-asn1) | 2.20 | Camel ASN.1 support
+
 | link:camel-avro/src/main/docs/avro-dataformat.adoc[Avro] (camel-avro) | 2.14 | Camel Avro data format
 
 | link:camel-barcode/src/main/docs/barcode-dataformat.adoc[Barcode] (camel-barcode) | 2.14 | Camel Barcode (e.g. QRcode, PDF417, DataMatrix) support

http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 8cbbb55..fd51b73 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -428,6 +428,7 @@
 
 <!-- dataformats: START -->
 * Data Formats
+	* [ASN.1 File](asn1-dataformat.adoc)
 	* [Avro](avro-dataformat.adoc)
 	* [Barcode](barcode-dataformat.adoc)
 	* [Base64](base64-dataformat.adoc)

http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/platforms/spring-boot/spring-boot-dm/camel-spring-boot-bom/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-bom/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-bom/pom.xml
index b6210ba..4ab16d4 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-bom/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-bom/pom.xml
@@ -52,6 +52,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-asn1-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-atmos-starter</artifactId>
         <version>${project.version}</version>
       </dependency>

http://git-wip-us.apache.org/repos/asf/camel/blob/58a189fb/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 0f5f348..ea589eb 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -264,6 +264,16 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-asn1</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-asn1-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-asterisk</artifactId>
         <version>${project.version}</version>
       </dependency>


[4/5] camel git commit: CAMEL-11612: Fixed CS

Posted by ac...@apache.org.
CAMEL-11612: Fixed CS


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c8a86bda
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c8a86bda
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c8a86bda

Branch: refs/heads/master
Commit: c8a86bdae23a1eb5fa6652ab7809ed859ec26bc4
Parents: 9f2ced0
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Aug 28 08:59:43 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Aug 28 08:59:43 2017 +0200

----------------------------------------------------------------------
 .../dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c8a86bda/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
----------------------------------------------------------------------
diff --git a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
index 16dc39c..c2a9756 100644
--- a/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
+++ b/components/camel-asn1/src/test/java/org/apache/camel/dataformat/asn1/ASN1DataFormatWithStreamIteratorClassTest.java
@@ -25,8 +25,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
 import org.junit.Ignore;
+import org.junit.Test;
 
 public class ASN1DataFormatWithStreamIteratorClassTest extends CamelTestSupport {