[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [emf-dev] Loading using streams

I am using data.xml as temporary thing to mimic my run time requirement.
In the real application, XML comes as a string, thus I am using
bytearraystream. 

-----Original Message-----
From: emf-dev-admin@xxxxxxxxxxx [mailto:emf-dev-admin@xxxxxxxxxxx] On
Behalf Of Frank Budinsky
Sent: Tuesday, January 20, 2004 1:25 PM
To: emf-dev@xxxxxxxxxxx
Subject: Re: [emf-dev] Loading using streams





Boris,

You do have a resource (data.xml) and you're loading it with an EMF
Resource (XMLResource). Your only problem is that a URI should have been
passed to the XMLResourceImpl's constructor.

That said, I don't see why you're going through all this extra work of
creating a ByteArrayInputStream. You should just load it in the usual
EMF
way:

    Resource resource = resourceSet.getResource(URI.createFileURI(new
File("data.xml")), true);

I'd recommend reading chapter's 2 and 13 of the EMF book
(http://www.amazon.com/exec/obidos/ASIN/0131425420/ref%3Dnosim/fc-20/103
-9904445-8667840).

Frank.

P.S., as I said in my other reply, please post these questions to the
emf
newsgroup, not here.





 

                      "Lublinsky,Boris

                      S."                      To:
<emf-dev@xxxxxxxxxxx>

                      <Boris.Lublinsky@        cc:

                      CNA.com>                 Subject:  [emf-dev]
Loading using streams                                                  
                      Sent by:

                      emf-dev-admin@ecl

                      ipse.org

 

 

                      01/20/2004 10:52

                      AM

                      Please respond to

                      emf-dev

 

 







      I was using emf serialization in my client code:


                                  java.lang.String data = null;
                                  try{

                                          // Read in data file and
                  stringify it
                                          File inpf = new
File("data.xml");

                                          FileInputStream fis = new
                  FileInputStream(inpf);
                                          byte [] b = new byte[5000];
                                          int len = fis.read(b);
                                          data = new
                  java.lang.String(b,0,len);
                                  }
                                  catch(Exception e){}


                                  // Create input stream for resource
                                  ByteArrayInputStream ins = new
                  ByteArrayInputStream(data.getBytes());


                                  // Create resource
                                  Resource resource = new
                  XMLResourceImpl();


                                  // Create XMLMap, used for proper XML
                  mapping. This is an empty Map,
                                  // it is using generated annotations
for
                  proper streaming
                                  XMLResource.XMLMap xmlMap = new
                  XMLMapImpl();


                                  // Create options map for loading
                                  Map options = new HashMap();


                                  // Populate options

                  options.put(XMLResource.OPTION_XML_MAP,xmlMap);


                                  // Initialize package, required for
                  putting package in the registry
                                  CnaPackage cPackage =
                  CnaPackageImpl.init();
                                  try{
                                          resource.load(ins,options);
                                  }
                                  catch(Exception e){
                                          e.printStackTrace();
                                  }


                                  // Get the root element from the
resource

                                  Message message =
                  (Message)(resource.getContents().get(0));


                  This seems to be fairly straightforward code, but it
does
                  not work, because I am not using resource, thus not
                  defining URL. I have two options. Either to create
                  resource just for the sake of URL or modify
XMLHandler,
                  XMLLoadImpl and XMLResourceImpl to check for nulls. Is
it
                  a bug? Feature? What is your recommendation?






_______________________________________________
emf-dev mailing list
emf-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/emf-dev