Where you call setBookmark:
if (bmk == null)
{
tmpCursor.setBookmark(bmk);
rval = "created new bookmark:";
}
else
You are always passing a null bookmark, which is a no-op.
- Eric
On 3/29/06, Tim Parker <[EMAIL PROTECTED]> wrote:
>
> Are there any examples of XMLBookmark usage?? I don't seem to be able to
> get back a bookmark I set, and I'm having trouble seeing what I'm doing
> wrong...
>
> I've created an extension 'getSomething()' for an XMLBeans-derived
> collection type, and I'm trying to use a bookmark to associate a HashMap
> object with the collection - but when I create a cursor and set a bookmark,
> I don't get the bookmark back when I try to get it.. And... I've been
> unable to find examples anywhere which illustrate a working case...
>
> My extension function is currently...
>
> public static String getSomething(XmlObject xo)
> {
> NVPCollection coll = (NVPCollection)xo;
> XmlCursor tmpCursor = coll.newCursor();
> NVPBookmark foo = new NVPBookmark();
> NVPBookmark bmk;
>
> ArrayList fubar = new ArrayList();
>
> bmk =
> (NVPBookmark)tmpCursor.getBookmark(NVPBookmark.class);
>
> String rval;
>
> if (bmk == null)
> {
> tmpCursor.setBookmark(bmk);
> rval = "created new bookmark:";
> }
> else
> rval = "already had a bookmark:";
>
> tmpCursor.getAllBookmarkRefs(fubar);
>
> tmpCursor.dispose(); // make sure we don't leak...
>
> return rval + String.valueOf(fubar.size());
>
> }
> And the bookmark class is just a shell...
>
> public class NVPBookmark extends XmlCursor.XmlBookmark
> {
> private HashMap nameMap = new HashMap();
>
> public HashMap getMap()
> {
> return nameMap;
> }
> }
>
> ________________________________
>
> From: Cezar Andrei [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 29, 2006 1:20 PM
>
> To: [email protected]
> Subject: RE: XMLBookmark question...
>
> From: Cezar Andrei [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 29, 2006 1:20 PM
>
> To: [email protected]
> Subject: RE: XMLBookmark question...
>
>
>
>
> The rule is to call xmlCursor.dispose() after you finished the work with a
> cursor.
>
>
>
> Cezar
>
>
>
> ________________________________
>
>
> From: Tim Parker [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 28, 2006 4:00 PM
> To: [email protected]
> Subject: XMLBookmark question...
>
>
>
> As a follow-on to the HashMap implementation questions... I feel like I may
> be missing something but... I'm looking at creating an extension method for
> my NVPCollection class something like:
>
>
>
> public String getValueByMap(String keyName)
>
>
>
> If I hang the hashmap on a bookmark, how do I get the bookmark without
> having to do a newCursor() every time? Or is it OK to run newCursor()
> dozens or hundreds of times without risk of performance or memory problems?
> Am I missing something?
>
>
>
> Tim
>
>
>
>
>
>
> ________________________________
>
>
> From: Cezar Andrei [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 28, 2006 4:33 PM
> To: [email protected]
> Subject: RE: alternate representations of collections in XMLBeans??
>
> That is a good article to read, also check out the tests under
> test\cases\xbean\extensions.
>
>
>
> Cezar
>
>
>
> ________________________________
>
>
> From: Tim Parker [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 28, 2006 3:08 PM
> To: [email protected]
> Subject: RE: alternate representations of collections in XMLBeans??
>
>
>
> Thank you for the quick reply - I'll look into the XMLBookmark idea...
>
>
>
> Is there anything else I need to know about the preSet and postSet methods?
> I found documentation (including the operationType values) at
> http://dev2dev.bea.com/pub/a/2004/11/Configuring_XMLBeans.html
> - is this the latest-and-greatest, or is there a better and/or more current
> reference available?
>
>
>
> Tim
>
>
> ________________________________
>
>
> From: Cezar Andrei [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 28, 2006 2:29 PM
> To: [email protected]
> Subject: RE: alternate representations of collections in XMLBeans??
>
> Tim,
>
>
>
> I would recommend using the extensions, otherwise modifying the generated
> code is definitely possible but missing even a small thing would break the
> code.
>
>
>
> Back to using extensions, if one wants to store a state he can do it by
> using XmlBookmark – which stays with the xml entity even if moved. In your
> case the hash map should be stored on 'metadata' element.
>
> Also the pre/post Set methods are called every time the document is about to
> change, so you'll get calls for all creation/modification/deletion events,
> made through XmlObject interfaces. Modification through other interfaces
> like XmlCursor or DOM will not trigger the calls to the pre/post Set
> methods.
>
>
>
> Cezar
>
>
>
> ________________________________
>
>
> From: Tim Parker [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 28, 2006 1:11 PM
> To: [email protected]
> Subject: alternate representations of collections in XMLBeans??
>
>
>
>
> The XMLBeans representation of a collection (for something with a maxOccurs
> GT 1) is a bit limiting... I'm looking to extend it to look more like a Map
> interface... and I'm hitting some brick walls...
>
>
>
>
>
> For discussion sake, I'll use a structure with three fields:
>
>
>
>
>
> struct foo
>
>
> {
>
>
> int ID;
>
>
> String name;
>
>
> HashMap metadata;
>
>
> }
>
>
>
>
>
> The 'metadata' field contains arbitrary name/value pairs - for simplicity
> we'll say 'name' and 'value' fields in the hashmap are always strings...
>
>
>
>
>
> The obvious (to me, at least) schema for this is something like:
>
>
>
>
>
> <xs:complexType name="NVP">
> <xs:sequence>
> <xs:element name="Value" type="xs:string"/>
> </xs:sequence>
> <xs:attribute name="Name" type="xs:string"/>
> </xs:complexType>
>
>
>
>
>
> <xs:complexType name="NVPCollection">
> <xs:sequence>
> <xs:element name="Entry" type="my:NVP" minOccurs="0"
> maxOccurs="unbounded"/>
> </xs:sequence>
> </xs:complexType>
>
>
>
>
>
> <xs:complexType name="testCase">
>
>
> <xs:sequence>
>
>
> <xs:element name="ID" type="xs:int"/>
>
>
> <xs:element name="name" type="xs:string"/>
>
>
> <xs:element name="metadata" type="my:NVPCollection"/>
>
>
> </xs:sequence>
>
>
> </xs:complexType>
>
>
>
>
>
> ====
>
>
>
>
>
> I could build another layer on top of this, but this could get ugly - What I
> really need is a way to extend NVPCollection so I can address items by name
> (like in a HashMap) rather than by position...
>
>
>
>
>
> The ideal would be something like (assuming that we have a mechanism to bind
> the 'name' field to the map key and the 'value' field to be the one of
> interest)...
>
>
>
>
>
> NVPCollection thisCollection;
>
>
>
>
>
> // some magic here to get the collection populated...
>
>
>
>
>
> someValue = thisCollection.GetByMap("someArbitraryName");
>
>
>
>
>
> .... Or we could save some binding complexity by doing
> ...GetByMap("someArbitraryName","value"), saying "get the
> field 'value' from the collection member whose key field contains
> 'someArbitraryName'" (The presumption is that the binding to the key field
> 'name' would need to be established earlier so the map can be maintained)
>
>
>
>
>
> ====
>
>
>
>
>
> As I read the documentation, I could build an extension like this, but I'm
> hosed if I want to do anything more sophisticated than a linear search
> through the collection on each 'get' call - Unless I'm missing something, I
> need a place to put an instance-specific HashMap object to maintain mapping
> between the key field ('name') and the array index... more than a little
> difficult with the 'static method' requirement for the extension (Not to
> mention the population problem for the HashMap object itself, but a preSet
> or postSet implementation would work as long as I never try to delete
> anything)..
>
>
>
>
>
> Presumably I could also build an 'extendedNVPCollection' class, based on the
> NVPCollection class generated by XMLBeans, but how would I wire that back
> into my (XMLBeans-generated) 'testCase' class? I don't want to get into
> creating wrapper classes for every layer...
>
>
>
>
>
> I tried ignoring the "don't touch - generated code" warnings and added some
> stuff directly to the generated classes for the NVPCollection object, but
> things started breaking - I'm not sure if the problem is a flaw in my
> hacking or a fundamental problem I won't solve, so I'm seeking advice - am I
> tilting at windmills here?
>
>
>
>
>
> Does anyone have ideas as to better ways to do this?
>
> =======================================================
>
> Tim Parker
> Senior Developer
> PaperThin, Inc.
> 617-471-4440 x 203
> [EMAIL PROTECTED]
> www.paperthin.com
>
> ===================
>
> PaperThin, Inc. was recently named to KMWorld's "100 Companies that Matter
> in Knowledge Management".
>
> Find out more at www.paperthin.com.
>
>
> _______________________________________________________________________
> Notice: This email message, together with any attachments, may contain
> information of BEA Systems, Inc., its subsidiaries and affiliated
> entities, that may be confidential, proprietary, copyrighted and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it.
> _______________________________________________________________________
> Notice: This email message, together with any attachments, may contain
> information of BEA Systems, Inc., its subsidiaries and affiliated
> entities, that may be confidential, proprietary, copyrighted and/or
> legally privileged, and is intended solely for the use of the individual
> or entity named in this message. If you are not the intended recipient,
> and have received this message in error, please immediately return this
> by email and then delete it.
> _______________________________________________________________________
Notice:
> This email message, together with any attachments, may contain
information
> of BEA Systems, Inc., its subsidiaries and affiliated
entities, that may be
> confidential, proprietary, copyrighted and/or
legally privileged, and is
> intended solely for the use of the individual
or entity named in this
> message. If you are not the intended recipient,
and have received this
> message in error, please immediately return this
by email and then delete
> it.
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]