RE: [Servingxml-help] Content is notallowed in prolog?
Brought to you by:
danielaparker
From: Akhil S. S. <ak...@ma...> - 2006-02-04 07:54:43
|
These lines seemed to be the problem=0D=0A=0D=0A = StreamSource defaultStreamSource =3D new=0D=0AStringStreamSource(source.= toString());=0D=0A=0D=0A=20=0D=0A=0D=0AThe fix I have used is=20=0D=0A=0D=0A= InputStream siss =3D=0D=0A((javax.xml.t= ransform.stream.StreamSource)source).getInputStream();=0D=0A=0D=0A = StreamSource defaultStreamSource =3D=0D=0Anew In= putStreamSourceAdaptor(siss);=0D=0A=0D=0A=20=0D=0A=0D=0AI guess haste makes= for a lot of waste=0D=0A=0D=0A=20=0D=0A=0D=0AThanks and really sorry for t= his stupid problem.=0D=0A=0D=0A=20=0D=0A=0D=0AAkhil Srinivasan=0D=0A=0D=0A =0D= =0A=0D=0APS: servingXML is a pretty cool piece of software and usefull too = :-)=0D=0A=0D=0A _____ =20=0D=0A=0D=0AFrom: Akhil S. Srinivasan=20=0D=0ASen= t: Saturday, February 04, 2006 12:48 PM=0D=0ATo: Daniel Parker=0D=0ACc: ser= vin...@li...=0D=0ASubject: RE: [Servingxml-help] Cont= ent is notallowed in prolog=3F=0D=0A=0D=0A=20=0D=0A=0D=0A=20=0D=0A=0D=0AI'm= sorry to be such a bother. I am trying to embed the servingXML=0D=0Acompon= ent into ServiceMix JMS components. Mainly so I can send a=0D=0Atextstring = and convert it into=20=0D=0A=0D=0AXML before it enters the JBI bus. The cod= e I came up with is=0D=0A=0D=0A=20=0D=0A=0D=0A = AppContext appContext =3D new=0D=0ADefaultAppContext(APPLICATION_NAM= E,=20=0D=0A=0D=0A=20=0D=0Adriver.getResources(), driver.getNameTable());=0D= =0A=0D=0A ServiceContext serviceContext = =3D new=0D=0ADefaultServiceContext(appContext, "servingxml");=0D=0A=0D=0A = =20=0D=0A=0D=0A = Name serviceName =3D=0D=0AName.parse(serviceContext, SERVICE_SOURC= E_NAME);=0D=0A=0D=0A =20=0D=0A=0D=0A = StreamSource defaultStreamSource =3D=0D=0Ane= w StringStreamSource(text);=0D=0A=0D=0A = ByteArrayOutputStream boss =3D new=0D=0AByteArrayOutputStream();=0D=0A=0D=0A= StreamSink defaultStreamSink =3D new=0D= =0AOutputStreamSinkAdaptor(boss);=0D=0A=0D=0A = =20=0D=0A=0D=0A Flow flow =3D new=0D= =0AFlowImpl(defaultStreamSource, defaultStreamSink);=0D=0A=0D=0A = =20=0D=0A=0D=0A = RecordBuilder recordBuilder =3D new=0D=0ARecordBuilder(SystemConstants.PARA= METERS_TYPE_NAME);=0D=0A=0D=0A // Add s= ome parameters, if any =20=0D=0A=0D=0A R= ecord parameters =3D=0D=0ArecordBuilder.toRecord();=0D=0A=0D=0A = =20=0D=0A=0D=0A S= ervice service =3D=0D=0A(Service)appContext.getResources().lookupServiceCom= ponent(Service.class,=0D=0AserviceName);=0D=0A=0D=0A = if (service =3D=3D null) {=0D=0A=0D=0A = throw new=0D=0AServingXmlException("Cannot find ser= vice " + serviceName);=0D=0A=0D=0A }=0D=0A=0D= =0A service.execute(serviceContext,=0D=0A= parameters, flow);=0D=0A=0D=0A =20=0D=0A=0D= =0A boss.flush();=0D=0A=0D=0A = String tempString =3D new=0D=0AString(boss.toByteA= rray());=0D=0A=0D=0A source =3D new=0D=0A= BytesSource(tempString.trim().getBytes());=0D=0A=0D=0A=20=0D=0A=0D=0AThe ma= in problem I faced is that there is a file sink but no string=0D=0Asink. So= I have tried to put the output of servingXML into a bytestream=0D=0Aand co= nvert that into a string but since that be the problem can you=0D=0Aadvise = on a possible workaround=3F Or would coming up with a StringSink be=0D=0Aa = better option=3F=0D=0A=0D=0A=20=0D=0A=0D=0AThanks=0D=0A=0D=0AAkhil Srinivas= an =20=0D=0A=0D=0A=20=0D=0A=0D=0A _____ =20=0D=0A=0D= =0AFrom: Daniel Parker [mailto:dan...@sy...]=20=0D=0ASent: Sa= turday, February 04, 2006 9:12 AM=0D=0ATo: Akhil S. Srinivasan=0D=0ACc: ser= vin...@li...=0D=0ASubject: Re: [Servingxml-help] Cont= ent is notallowed in prolog=3F=0D=0A=0D=0A=20=0D=0A=0D=0AAkhil,=0D=0A=0D=0A= =20=0D=0A=0D=0A"Content is not allowed in prolog" is a parser error message= , that's=0D=0Acomplaining about the beginning of the received message, name= ly <=3Fxml=0D=0Aversion=3D"1.0" encoding=3D"utf-8"=3F>. Try printing out t= he hex values of=0D=0Athe first few bytes of the message and make sure ther= e's no character,=0D=0Aspace, or junk text before the <=3F.=0D=0A=0D=0A=20=0D= =0A=0D=0AAlso, messages in utf-8 encoding can contain three leading bytes, = EF BB=0D=0ABF,called a BOM, and there is a known bug with versions of Java = before=0D=0A1.5, Java didn't handle BOMs on UTF-8 documents properly, see=0D= =0Ahttp://bugs.sun.com/bugdatabase/view_bug.do=3Fbug_id=3D4508058. So chec= k if=0D=0Ayour message contains a BOM. Try using Java 1.5 if you're not al= ready=0D=0Adoing so, and see if that helps. =20=0D=0A=0D=0A=20=0D=0A=0D=0AR= egards,=0D=0A=0D=0ADaniel Parker=0D=0A=0D=0A=09----- Original Message -----= =20=0D=0A=0D=0A=09From: Akhil S. Srinivasan <mailto:ak...@ma...> =0D= =0A=0D=0A=09To: Daniel Parker <mailto:dan...@sy...> =20=0D=0A=0D= =0A=09Cc: ser...@li...=20=0D=0A=0D=0A=09Sent: Frid= ay, February 03, 2006 3:16 AM=0D=0A=0D=0A=09Subject: RE: [Servingxml-help] = Content is notallowed in prolog=3F=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09I tried = as you have suggested but have run up against the same=0D=0Aproblem.=0D=0A=0D= =0A=09=20=0D=0A=0D=0A=09Receiving message=0D=0A=0D=0A=09NMR(content) org.ap= ache.servicemix.jbi.jaxp.BytesSource@90ed81=0D=0A=0D=0A=09NMR(content) <=3F= xml version=3D"1.0" encoding=3D"utf-8"=3F><ord:orders=0D=0Axmlns:ord=3D"htt= p:/=0D=0A=0D=0A=09/mastek.com/demos/servicemixtest/orders"=0D=0Axmlns:xsi=3D= "http://www.w3.org/2001/XMLSc=0D=0A=0D=0A=09hema-instance"=0D=0Axsi:schemaL= ocation=3D"order-record.xsd"><ord:order><ord:ordertype>B=0D=0A=0D=0A=09=0D=0A= </ord:ordertype><ord:companyticker>AMZN</ord:companyticker><ord:companyn=0D= =0Aame>Amaz=0D=0A=0D=0A=09on=0D=0AInc</ord:companyname><ord:quantity>10.0</= ord:quantity></ord:order></ord:=0D=0Aorder=0D=0A=0D=0A=09s>=0D=0A=0D=0A=09s= ending to client-sender=0D=0A=0D=0A=09sent to client-sender=0D=0A=0D=0A=09 =0D= =0A=0D=0A=09[Fatal Error] :1:1: Content is not allowed in prolog.=0D=0A=0D=0A= =09com.servingxml.util.ServingXmlException: Content is not allowed=0D=0Ain = prolog.=0D=0A=0D=0A=09 at=0D=0Acom.servingxml.components.xmlpipeline= =2EPipeline.execute(Pipeline.java:=0D=0A=0D=0A=0994)=0D=0A=0D=0A=09 = at=0D=0Acom.servingxml.components.inverserecordmapping.XmlRecordReader.read= Re=0D=0A=0D=0A=09cords(XmlRecordReader.java:93)=0D=0A=0D=0A=09 at=0D= =0Acom.servingxml.components.recordio.RecordPipeline.execute(RecordPipel=0D= =0A=0D=0A=09ine.java:69)=0D=0A=0D=0A=09 at=0D=0Acom.servingxml.compo= nents.recordio.ProcessRecordsAppender.execute(Pro=0D=0A=0D=0A=09cessRecords= Appender.java:81)=0D=0A=0D=0A=09 at=0D=0Acom.servingxml.components.s= ervice.ServiceImpl.execute(ServiceImpl.jav=0D=0A=0D=0A=09a:66)=0D=0A=0D=0A=09= at=0D=0Acom.mastek.servicemix.ServingXmlTransformer.toResult(Servin= gXmlTransf=0D=0A=0D=0A=09ormer.java:130)=0D=0A=0D=0A=09 at=0D=0Acom.= mastek.servicemix.TextSourceMarshaler.asString(TextSourceMarshale=0D=0A=0D=0A= =09r.java:28)=0D=0A=0D=0A=09 at=0D=0Aorg.apache.servicemix.component= s.jms.JmsMarshaler.messageAsString(Jms=0D=0A=0D=0A=09Marshaler.java:91)=0D=0A=0D= =0A=09 at=0D=0Aorg.apache.servicemix.components.jms.JmsMarshaler.cre= ateMessage(JmsMa=0D=0A=0D=0A=09rshaler.java:68)=0D=0A=0D=0A=09 at=0D= =0Aorg.apache.servicemix.components.jms.JmsSenderComponent$1.createMessa=0D= =0A=0D=0A=09ge(JmsSenderComponent.java:72)=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09= I am posing my entire resource file in. I hope it helps=0D=0A=0D=0A=09=20=0D= =0A=0D=0A=09<=3Fxml version=3D"1.0"=3F>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09<sx= :resources xmlns:sx=3D"http://www.servingxml.com/core"=0D=0A=0D=0A=09=0D= =0Axmlns:msv=3D"http://www.servingxml.com/extensions/msv"=0D=0A=0D=0A=09=0D= =0Axmlns:ord=3D"http://mastek.com/demos/servicemixtest/orders">=0D=0A=0D=0A= =09=20=0D=0A=0D=0A=09 <sx:parameter name=3D"validate">=0D=0A=0D=0A=09 <= sx:defaultValue>no</sx:defaultValue>=0D=0A=0D=0A=09 </sx:parameter>=0D=0A=0D= =0A=09=20=0D=0A=0D=0A=09 <sx:service id=3D"orderstoxml">=0D=0A=0D=0A=09 = <sx:serialize>=0D=0A=0D=0A=09 <sx:transform>=0D=0A=0D=0A=09 <s= x:content ref=3D"orders"/>=20=0D=0A=0D=0A=09 </sx:transform>=0D=0A=0D=0A= =09 </sx:serialize>=0D=0A=0D=0A=09 </sx:service>=0D=0A=0D=0A=09=20=0D=0A=0D= =0A=09 <sx:recordContent id=3D"orders">=0D=0A=0D=0A=09 <sx:flatFileRead= er>=0D=0A=0D=0A=09 <!-- Is not needed, it does the transform then on a= nything=0D=0Agiven=0D=0A=0D=0A=09 <sx:stringSource />=0D=0A=0D=0A= =09 <sx:urlSource url=3D"orders.csv"/>=20=0D=0A=0D=0A=09 --= >=0D=0A=0D=0A=09 <sx:flatFile ref=3D"ordersFlatFile"/>=0D=0A=0D=0A=09 = <!-- causes error for some reason=0D=0A=0D=0A=09 <msv= :msvRecordFilter=0D=0Aschema=3D"order-record.xsd"/>=0D=0A=0D=0A=09 -->=0D= =0A=0D=0A=09 </sx:flatFileReader>=0D=0A=0D=0A=09 <sx:recordMapping re= f=3D"ordersToXmlMapping"/>=0D=0A=0D=0A=09 </sx:recordContent>=0D=0A=0D=0A=09= =20=0D=0A=0D=0A=09 <sx:flatFile id=3D"ordersFlatFile">=0D=0A=0D=0A=09 = <sx:commentSymbol value=3D"#"/>=0D=0A=0D=0A=09 <sx:flatFileBody>=0D=0A=0D= =0A=09 <sx:flatRecordType id=3D"order">=0D=0A=0D=0A=09 <sx:fi= eldDelimiter value=3D","/>=0D=0A=0D=0A=09 <sx:delimitedField name=3D= "ordertype-field"=0D=0Alabel=3D"OrderType"/>=0D=0A=0D=0A=09 <sx:delimi= tedField name=3D"companyticker-field"=0D=0Alabel=3D"CompanyTicker"/>=0D=0A=0D= =0A=09 <sx:delimitedField name=3D"companyname-field"=0D=0Alabel=3D= "CompanyName"/>=0D=0A=0D=0A=09 <sx:delimitedField name=3D"quantity= -field"=0D=0Alabel=3D"Quantity"/>=0D=0A=0D=0A=09 </sx:flatRecordType= >=0D=0A=0D=0A=09 </sx:flatFileBody>=0D=0A=0D=0A=09 </sx:flatFile> =0D= =0A=0D=0A=09=20=0D=0A=0D=0A=09 <sx:recordMapping id=3D"ordersToXmlMapping"= >=0D=0A=0D=0A=09 <ord:orders=0D=0Axmlns:ord=3D"http://mastek.com/demos= /servicemixtest/orders"=0D=0A=0D=0A=09=0D=0Axmlns:xsi=3D"http://www.w3.org/= 2001/XMLSchema-instance"=0D=0A=0D=0A=09 xsi:schemaLocatio= n=3D"order-record.xsd">=20=0D=0A=0D=0A=09 <sx:onRecord>=0D=0A=0D=0A=09= <ord:order>=0D=0A=0D=0A=09 <sx:fieldElementMap field=3D"or= dertype-field"=0D=0Aelement=3D"ord:ordertype"/> =20=0D=0A=0D=0A=09 = <sx:fieldElementMap field=3D"companyticker-field"=0D=0Aelement=3D"ord:comp= anyticker"/> =20=0D=0A=0D=0A=09 <sx:fieldElementMap field=3D= "companyname-field"=0D=0Aelement=3D"ord:companyname"/> =20=0D=0A=0D=0A=09 = <sx:fieldElementMap field=3D"quantity-field"=0D=0Aelement=3D"ord:qu= antity"/> =20=0D=0A=0D=0A=09 </ord:order> =20=0D=0A=0D=0A=09= </sx:onRecord>=0D=0A=0D=0A=09 </ord:orders>=0D=0A=0D=0A=09 </sx:r= ecordMapping>=20=0D=0A=0D=0A=09 =20=0D=0A=0D=0A=09 <sx:service id=3D"order= stocsv" name=3D"orderstocsv">=0D=0A=0D=0A=09 <sx:writeRecords>=0D=0A=0D=0A= =09 <sx:flatFileWriter>=0D=0A=0D=0A=09 <sx:flatFile ref=3D"orde= rsFlatFile"/>=0D=0A=0D=0A=09 </sx:flatFileWriter>=0D=0A=0D=0A=09 = <sx:xmlRecordReader>=0D=0A=0D=0A=09 <sx:inverseRecordMapping ref=3D"= ordersToCSVMapping"/>=0D=0A=0D=0A=09 <sx:transform>=0D=0A=0D=0A=09 = <sx:document/>=0D=0A=0D=0A=09 </sx:transform>=0D=0A=0D=0A= =09 </sx:xmlRecordReader>=0D=0A=0D=0A=09 </sx:writeRecords> =20=0D=0A=0D= =0A=09 </sx:service>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 =0D= =0A=0D=0A=09 <sx:inverseRecordMapping id=3D"ordersToCSVMapping">=0D=0A=0D=0A= =09 <sx:documentFragmentMap path=3D"/ord:orders/ord:order">=0D=0A=0D=0A=09= <sx:fragmentRecordMap recordType=3D"order">=0D=0A=0D=0A=09 <sx= :fragmentFieldMap select=3D"ord:ordertype"=0D=0Afield=3D"ordertype"/>=0D=0A=0D= =0A=09 <sx:fragmentFieldMap select=3D"ord:companyticker"=0D=0Afield=3D= "companyticker"/>=0D=0A=0D=0A=09 <sx:fragmentFieldMap select=3D"ord:= companyname"=0D=0Afield=3D"companyname"/>=0D=0A=0D=0A=09 <sx:fragmen= tFieldMap select=3D"ord:quantity"=0D=0Afield=3D"quantity"/>=0D=0A=0D=0A=09 = </sx:fragmentRecordMap>=0D=0A=0D=0A=09 </sx:documentFragmentMap>=0D= =0A=0D=0A=09 </sx:inverseRecordMapping>=0D=0A=0D=0A=09 = =20=0D=0A=0D=0A=09</sx:resources>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09And while= I am at it my schema definition=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09<xsd:schem= a xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema"=0D=0A=0D=0A=09=0D=0Axmlns:= ord=3D"http://mastek.com/demos/servicemixtest/orders"=0D=0A=0D=0A=09=0D=0At= argetNamespace=3D"http://mastek.com/demos/servicemixtest/orders"=0D=0A=0D=0A= =09 elementFormDefault=3D"unqualified"=0D=0A=0D=0A=09 a= ttributeFormDefault=3D"unqualified">=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 <xsd:= annotation>=0D=0A=0D=0A=09 <xsd:documentation xml:lang=3D"en">=0D=0A=0D=0A= =09 Order Sent record schema=20=0D=0A=0D=0A=09 </xsd:documentation>=0D=0A=0D= =0A=09 </xsd:annotation>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 <xsd:element name= =3D"orders" type=3D"ord:OrderRecords"/>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 <x= sd:complexType name=3D"OrderRecords">=0D=0A=0D=0A=09 <xsd:sequence>=0D=0A=0D= =0A=09 <xsd:element name=3D"order" type=3D"ord:OrderRecord"=0D=0AminOccur= s=3D"0" maxOccurs=3D"unbounded"/>=0D=0A=0D=0A=09 </xsd:sequence>=0D=0A=0D=0A= =09 </xsd:complexType>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 <!-- This element's= name matches the value of the name=0D=0Aattribute in the px:flatFileRecord= Type element. -->=0D=0A=0D=0A=09 <xsd:complexType name=3D"OrderRecord">=0D=0A=0D= =0A=09 <xsd:sequence>=0D=0A=0D=0A=09 <xsd:element name=3D"ordertype" typ= e=3D"ord:OrderType"/>=0D=0A=0D=0A=09 <xsd:element name=3D"companyticker" = type=3D"ord:CompanyTicker"/>=0D=0A=0D=0A=09 <xsd:element name=3D"companyn= ame" type=3D"xsd:string"/>=0D=0A=0D=0A=09 <xsd:element name=3D"quantity" = type=3D"xsd:integer"/> =20=0D=0A=0D=0A=09 </xsd:sequence>=0D=0A=0D=0A=09= </xsd:complexType>=0D=0A=0D=0A=09=20=0D=0A=0D=0A=09 <xsd:simpleType name=3D= "OrderType">=0D=0A=0D=0A=09 <xsd:restriction base=3D"xsd:string">=0D=0A=0D= =0A=09 <xsd:length value=3D"1" fixed=3D"true"/>=0D=0A=0D=0A=09 </xs= d:restriction>=0D=0A=0D=0A=09 </xsd:simpleType>=0D=0A=0D=0A=09 =20=0D=0A=0D= =0A=09 <xsd:simpleType name=3D"CompanyTicker">=0D=0A=0D=0A=09 <xsd:rest= riction base=3D"xsd:string">=0D=0A=0D=0A=09 <xsd:length value=3D"4" fi= xed=3D"true"/>=0D=0A=0D=0A=09 </xsd:restriction>=0D=0A=0D=0A=09 </xsd:s= impleType>=0D=0A=0D=0A=09 =20=0D=0A=0D=0A=09</xsd:schema>=0D=0A=0D=0A=09 =0D= =0A=0D=0A=09Akhil Srinivasan=0D=0A=0D=0A=09=20=0D=0A=0D=0A=0D=0AMASTEK=20=0D= =0A"Making a valuable difference"=0D=0AMastek in NASSCOM's 'India Top 20' S= oftware Service Exporters List.=0D=0AIn the US, we're called MAJESCOMASTEK=0D= =0A=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D=0AOpinions expressed = in this e-mail are those of the individual and not=0D=0Athat of Mastek Limi= ted, unless specifically indicated to that effect.=0D=0AMastek Limited does= not accept any responsibility or liability for it.=0D=0AThis e-mail and at= tachments (if any) transmitted with it are=0D=0Aconfidential and/or privile= ged and solely for the use of the intended=0D=0Aperson or entity to which i= t is addressed. Any review, re-transmission,=0D=0Adissemination or other us= e of or taking of any action in reliance upon=0D=0Athis information by pers= ons or entities other than the intended=0D=0Arecipient is prohibited. This = e-mail and its attachments have been=0D=0Ascanned for the presence of compu= ter viruses. It is the responsibility=0D=0Aof the recipient to run the viru= s check on e-mails and attachments=0D=0Abefore opening them. If you have re= ceived this e-mail in error, kindly=0D=0Adelete this e-mail from all comput= ers.=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D=0A=0D=0A=20=0D=0A=0D= =0A=20=0D=0A=0D=0A=20=0D=0A=0D=0A=20=0D=0A=0D=0A=0D=0AMASTEK=20=0D=0A"Makin= g a valuable difference"=0D=0AMastek in NASSCOM's 'India Top 20' Software S= ervice Exporters List.=0D=0AIn the US, we're called MAJESCOMASTEK=0D=0A=0D=0A= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D= =0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D=0AOpinions expressed in this e= -mail are those of the individual and not=0D=0Athat of Mastek Limited, unle= ss specifically indicated to that effect.=0D=0AMastek Limited does not acce= pt any responsibility or liability for it.=0D=0AThis e-mail and attachments= (if any) transmitted with it are=0D=0Aconfidential and/or privileged and s= olely for the use of the intended=0D=0Aperson or entity to which it is addr= essed. Any review, re-transmission,=0D=0Adissemination or other use of or t= aking of any action in reliance upon=0D=0Athis information by persons or en= tities other than the intended=0D=0Arecipient is prohibited. This e-mail an= d its attachments have been=0D=0Ascanned for the presence of computer virus= es. It is the responsibility=0D=0Aof the recipient to run the virus check o= n e-mails and attachments=0D=0Abefore opening them. If you have received th= is e-mail in error, kindly=0D=0Adelete this e-mail from all computers.=0D=0A= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D= =0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D=0A=0D=0A=20=0D=0A=0D=0A=20=0D=0A=0D= =0A=20=0D=0A=0D=0AMASTEK=20=0D=0A"Making a valuable difference"=0D=0AMastek= in NASSCOM's 'India Top 20' Software Service Exporters List.=0D=0AIn the U= S, we're called MAJESCOMASTEK=0D=0A=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~=0D=0AOpinions expressed in this e-mail are those of the individual and no= t that of Mastek Limited, unless specifically indicated to that effect. Mas= tek Limited does not accept any responsibility or liability for it. This e-= mail and attachments (if any) transmitted with it are confidential and/or p= rivileged and solely for the use of the intended person or entity to which = it is addressed. Any review, re-transmission, dissemination or other use of= or taking of any action in reliance upon this information by persons or en= tities other than the intended recipient is prohibited. This e-mail and its= attachments have been scanned for the presence of computer viruses. It is = the responsibility of the recipient to run the virus check on e-mails and a= ttachments before opening them. If you have received this e-mail in error, = kindly delete this e-mail from all computers.=0D=0A~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~=0D=0A |