Author Login
Post Reply
user Digest 17 Jun 2008 12:02:07 -0000 Issue 8094
Topics (messages 187679 through 187708):
sorry Re: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean
187679 by: srinivasa varanasi
Re: REST plugin URL syntax
187680 by: Al Sutton
187681 by: Mike Watson
187684 by: Dave Newton
187687 by: Mike Watson
187691 by: Don Brown
187693 by: Al Sutton
187694 by: Mike Watson
187695 by: Mike Watson
Re: What can you do with S2?
187682 by: Dave Newton
187697 by: Al Sutton
187705 by: Dave Newton
Re: differences btw <s:property\> and <s:property value="#this"/>
187683 by: Dave Newton
187689 by: Musachy Barroso
187704 by: Dave Newton
Is tooltip possible for s:label?
187685 by: James Neff
Autocompleter tag fails when file tag is added
187686 by: Struts Two
Re: Custom messages
187688 by: Louis
Struts 2 hibernate session-per-request
187690 by: Márcio Gurgel
187696 by: Laurie Harper
187698 by: Al Sutton
187699 by: Antonio Petrelli
187702 by: Márcio Gurgel
Re: Localizing the list in a <s:select>-tag?
187692 by: Eddie Lau
LinkTag 'href' attribute problem
187700 by: Glock, Michael
populate combo after comparing bean values with enum
187701 by: mfirry
Dojo Rich Text Editor Not Rendered
187703 by: StrutsUser
187706 by: Dave Newton
187708 by: StrutsUser
struts 1 ajax integration
187707 by: Daniel
Administrivia:
---------------------------------------------------------------------
To post to the list, e-mail: user@(protected)
To unsubscribe, e-mail: user-digest-unsubscribe@(protected)
For additional commands, e-mail: user-digest-help@(protected)
----------------------------------------------------------------------

Attachment:
user_187679.ezm (zipped)I am sorry for this I was little furstrated with this error since morning ..
even I did the same but still same error
jhkiley@(protected):
> It's possible that just dumping a 150-line stack trace to a mailing list,
without so much as a "please help me," isn't the most effective way to
request help.
Anyway, your problem is actually quite clear if you read the stack trace:
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the
name xwork has already been loaded by bean -
jar:file:/C:/Apache%20Software%20Foundation/Tomcat%205.5/common/lib/struts2-core-2.0.6.jar!/struts-default.xml:8:69
- bean -
jar:file:/C:/Apache%20Software%20Foundation/Tomcat%205.5/shared/lib/struts2-core-2.0.6.jar!/struts-default.xml:8:69
You have a copy of struts2-core-2.06.jar in both your "common" and "shared"
directories. Remove it from one of them.
jk
On Mon, Jun 16, 2008 at 2:21 PM, srinivasa varanasi <srinivasa_v@(protected)>
wrote:
> Jun 15, 2008 10:32:46 PM org.apache.catalina.core.StandardContext
> filterStart
> SEVERE: Exception starting filter struts2
> Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory -
> bean - jar:file:/C:/Apache Software Foundation/Tomcat
> 5.5/shared/lib/struts2-core-2.0.6.jar!/struts-default.xml:8:69
>
[snip]
> ... 33 more
>
--
Jim Kiley
Technical Consultant | Summa
[p] 412.258.3346 [m] 412.445.1729
http://www.summa-tech.com

Attachment:
user_187680.ezm (zipped)It's true that it takes a bit of reading between the lines, but
basically REST relies on unique identifiers for resources, which for
HTTP is commonly taken to mean a URLs of the form;
http://server/resource_noun/id
(to confirm this have a spin through the google results showing various
examples).
With servers with many apps on this is commonly expanded to;
http://server/app/resource_noun/id
In the strictest send the Mikes URLs should be;
http://www.mydomain.com/chapter/123_1
because we are uniquely identifying a chapter and to do this we need to
include the book id, but for the sake of clarity (which was the reason I
beleive he was using x/x_id/y/y_id notation I expanded the noun to show
book and chapter.
Al.
Laurie Harper wrote:
> It may be the case that the REST plugin can't support this (I don't
> know if that's true) but I don't see anything in the cited reference
> that says such URLs are un-RESTful. And a Struts apps should certainly
> be able to support them, even if it requires writing a little more
> code (e.g. a custom action mapper?)
>
> L.
>
> Al Sutton wrote:
>> Mike,
>>
>> Rest URLs doesn't work that way, so the plugin is correct and your
>> needs are not in sync with REST standards (see
>> http://en.wikipedia.org/wiki/Representational_State_Transfer for a
>> more details on REST).
>>
>> If you want to do something with multiple IDs my suggestion would be
>> URLs along the lines of;
>>
>> http://www.mydomain.com/rest/bookAndChapter/123_1
>>
>> Al.
>>
>> Mike Watson wrote:
>>> Hi Folks,
>>>
>>> I'm trying to use the REST plugin to implement a service that serves
>>> resources using the following url syntax:
>>>
>>> http://www.mydomain.com/rest/book/123 (which works fine)
>>> http://www.mydomain.com/rest/book/123/chapter (which throws a 500
>>> because my book controller doesn't have a chapter() method)
>>> http://www.mydomain.com/rest/book/123/chapter/1 (which returns 404)
>>>
>>> I'd expect the two chapter urls to access the ChapterController
>>> instead of the BookController.
>>>
>>> Being able to request resources 'within resources' like this is
>>> crucial to my application. Can anybody tell me how I can configure the
>>> rest plugin to behave like this, or point me at some documentation
>>> that does?
>>>
>>> Thanks in advance,
>>>
>>> Mike
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> For additional commands, e-mail: user-help@(protected)
>>>
>>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>

Attachment:
user_187681.ezm (zipped)Thanks for the feedback.
I actually disagree regarding whether my url syntax is restful.
Have you read the O'Reilly book: "RESTful Web Services" by Leonard
Richardson; Sam Ruby?
If not please take a look (you can probably see sample chapters on
Safari if you don't have an account).
Specifically in section 5.5.1 Encode Heirarchy into Path Variables
where examples like this are provided:
http://maps.example.com/Earth/France/Paris
In fact the samples the entire book is based on all rely on hierarchy.
Hierarchy is *very* relevant to my problem domain and is something
that a RESTful interface *should* be able to support. Do you not agree
a news website is hierarchical? The web is hierarchical in nature.
REST is supposed to be the language of the web...
If the REST plugin can't support this hierarchical model I'd say it is
fundamentally flawed. I'm happy to help rectify this but to say that
this approach just isn't REST is simply not true.
Can anybody suggest where I would start in an attempt to implement
this hierarchical model? Or do I need to start looking for a
replacement for the Struts2 REST plugin?
Thanks for your time.
Mike
2008/6/17 Al Sutton <al.sutton@(protected)>:
> It's true that it takes a bit of reading between the lines, but basically
> REST relies on unique identifiers for resources, which for HTTP is commonly
> taken to mean a URLs of the form;
>
> http://server/resource_noun/id
>
> (to confirm this have a spin through the google results showing various
> examples).
>
> With servers with many apps on this is commonly expanded to;
>
> http://server/app/resource_noun/id
>
> In the strictest send the Mikes URLs should be;
>
> http://www.mydomain.com/chapter/123_1
>
> because we are uniquely identifying a chapter and to do this we need to
> include the book id, but for the sake of clarity (which was the reason I
> beleive he was using x/x_id/y/y_id notation I expanded the noun to show book
> and chapter.
>
> Al.
>
>
> Laurie Harper wrote:
>>
>> It may be the case that the REST plugin can't support this (I don't know
>> if that's true) but I don't see anything in the cited reference that says
>> such URLs are un-RESTful. And a Struts apps should certainly be able to
>> support them, even if it requires writing a little more code (e.g. a custom
>> action mapper?)
>>
>> L.
>>
>> Al Sutton wrote:
>>>
>>> Mike,
>>>
>>> Rest URLs doesn't work that way, so the plugin is correct and your needs
>>> are not in sync with REST standards (see
>>> http://en.wikipedia.org/wiki/Representational_State_Transfer for a more
>>> details on REST).
>>>
>>> If you want to do something with multiple IDs my suggestion would be URLs
>>> along the lines of;
>>>
>>> http://www.mydomain.com/rest/bookAndChapter/123_1
>>>
>>> Al.
>>>
>>> Mike Watson wrote:
>>>>
>>>> Hi Folks,
>>>>
>>>> I'm trying to use the REST plugin to implement a service that serves
>>>> resources using the following url syntax:
>>>>
>>>> http://www.mydomain.com/rest/book/123 (which works fine)
>>>> http://www.mydomain.com/rest/book/123/chapter (which throws a 500
>>>> because my book controller doesn't have a chapter() method)
>>>> http://www.mydomain.com/rest/book/123/chapter/1 (which returns 404)
>>>>
>>>> I'd expect the two chapter urls to access the ChapterController
>>>> instead of the BookController.
>>>>
>>>> Being able to request resources 'within resources' like this is
>>>> crucial to my application. Can anybody tell me how I can configure the
>>>> rest plugin to behave like this, or point me at some documentation
>>>> that does?
>>>>
>>>> Thanks in advance,
>>>>
>>>> Mike
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>>> For additional commands, e-mail: user-help@(protected)
>>>>
>>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail: user-help@(protected)
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187684.ezm (zipped)--- On Mon, 6/16/08, Mike Watson <michael.f.watson@(protected):
> Can anybody suggest where I would start in an attempt to
> implement this hierarchical model?
The existing REST plugin?
Just an idea.
Dave

Attachment:
user_187687.ezm (zipped)Well that'd be nice but I'm really struggling to get it to behave the
way I want. Any thoughts on how I might do this?
2008/6/17 Dave Newton <newton.dave@(protected)>:
> --- On Mon, 6/16/08, Mike Watson <michael.f.watson@(protected):
>> Can anybody suggest where I would start in an attempt to
>> implement this hierarchical model?
>
> The existing REST plugin?
>
> Just an idea.
>
> Dave
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187691.ezm (zipped)I believe it is technically possible to do this, but not at all
intuitive right now. This is probably my number one improvement
request for the REST plugin.
You should be able change the wildcard mapper to one that recognizes
named wildcards then use them in your namespace annotation like this:
@Namespace("/book/{bookId}")
As I said, it really needs work as this is a huge deficiency in the
REST plugin right now, but the reason I haven't just made this easier
as I'm toying with the idea of borrowing the URI mapping behavior from
Jersey, which I find very intuitive, if a bit un-Struts/xwork-like.
Don
On Tue, Jun 17, 2008 at 9:10 AM, Mike Watson <michael.f.watson@(protected):
> Well that'd be nice but I'm really struggling to get it to behave the
> way I want. Any thoughts on how I might do this?
>
> 2008/6/17 Dave Newton <newton.dave@(protected)>:
>> --- On Mon, 6/16/08, Mike Watson <michael.f.watson@(protected):
>>> Can anybody suggest where I would start in an attempt to
>>> implement this hierarchical model?
>>
>> The existing REST plugin?
>>
>> Just an idea.
>>
>> Dave
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail: user-help@(protected)
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187693.ezm (zipped)Mike,
The safari signup requires a credit card which I'm not going to give so
I'm afraid I can't comment after seeing the book.
It has always been my understanding that the /Earth/France/Paris style
of notation is a search engine optimised (SEO) layer which has the
design goal of being descriptive to humans and search engines and is not
designed with the REST principals of performance and efficiency.
The main problem with performance is that, in most cases, you're going
to be looking the data up in a database table, therefore you have your
unique ID as the primary key for the table. The data in the table may,
in turn, be a reference to a storage device and location where the data
is stored, but at the top level you have the single primary key, hence
the single /noun/id combination.
If you're thinking of mapping the book to a folder name and the chapter
to a filename in the folder then I would urge you to look at some of the
comments around the web on how flat file systems scale, and possibly
think about an intermediate table which maps IDs to the location of the
chapter data which would allow you to have separate file stores to
spread the data accross.
Al.
Mike Watson wrote:
> Thanks for the feedback.
>
> I actually disagree regarding whether my url syntax is restful.
>
> Have you read the O'Reilly book: "RESTful Web Services" by Leonard
> Richardson; Sam Ruby?
>
> If not please take a look (you can probably see sample chapters on
> Safari if you don't have an account).
> Specifically in section 5.5.1 Encode Heirarchy into Path Variables
> where examples like this are provided:
> http://maps.example.com/Earth/France/Paris
>
> In fact the samples the entire book is based on all rely on hierarchy.
> Hierarchy is *very* relevant to my problem domain and is something
> that a RESTful interface *should* be able to support. Do you not agree
> a news website is hierarchical? The web is hierarchical in nature.
> REST is supposed to be the language of the web...
>
> If the REST plugin can't support this hierarchical model I'd say it is
> fundamentally flawed. I'm happy to help rectify this but to say that
> this approach just isn't REST is simply not true.
>
> Can anybody suggest where I would start in an attempt to implement
> this hierarchical model? Or do I need to start looking for a
> replacement for the Struts2 REST plugin?
>
> Thanks for your time.
>
> Mike
>
> 2008/6/17 Al Sutton <al.sutton@(protected)>:
>
>> It's true that it takes a bit of reading between the lines, but basically
>> REST relies on unique identifiers for resources, which for HTTP is commonly
>> taken to mean a URLs of the form;
>>
>> http://server/resource_noun/id
>>
>> (to confirm this have a spin through the google results showing various
>> examples).
>>
>> With servers with many apps on this is commonly expanded to;
>>
>> http://server/app/resource_noun/id
>>
>> In the strictest send the Mikes URLs should be;
>>
>> http://www.mydomain.com/chapter/123_1
>>
>> because we are uniquely identifying a chapter and to do this we need to
>> include the book id, but for the sake of clarity (which was the reason I
>> beleive he was using x/x_id/y/y_id notation I expanded the noun to show book
>> and chapter.
>>
>> Al.
>>
>>
>> Laurie Harper wrote:
>>
>>> It may be the case that the REST plugin can't support this (I don't know
>>> if that's true) but I don't see anything in the cited reference that says
>>> such URLs are un-RESTful. And a Struts apps should certainly be able to
>>> support them, even if it requires writing a little more code (e.g. a custom
>>> action mapper?)
>>>
>>> L.
>>>
>>> Al Sutton wrote:
>>>
>>>> Mike,
>>>>
>>>> Rest URLs doesn't work that way, so the plugin is correct and your needs
>>>> are not in sync with REST standards (see
>>>> http://en.wikipedia.org/wiki/Representational_State_Transfer for a more
>>>> details on REST).
>>>>
>>>> If you want to do something with multiple IDs my suggestion would be URLs
>>>> along the lines of;
>>>>
>>>> http://www.mydomain.com/rest/bookAndChapter/123_1
>>>>
>>>> Al.
>>>>
>>>> Mike Watson wrote:
>>>>
>>>>> Hi Folks,
>>>>>
>>>>> I'm trying to use the REST plugin to implement a service that serves
>>>>> resources using the following url syntax:
>>>>>
>>>>> http://www.mydomain.com/rest/book/123 (which works fine)
>>>>> http://www.mydomain.com/rest/book/123/chapter (which throws a 500
>>>>> because my book controller doesn't have a chapter() method)
>>>>> http://www.mydomain.com/rest/book/123/chapter/1 (which returns 404)
>>>>>
>>>>> I'd expect the two chapter urls to access the ChapterController
>>>>> instead of the BookController.
>>>>>
>>>>> Being able to request resources 'within resources' like this is
>>>>> crucial to my application. Can anybody tell me how I can configure the
>>>>> rest plugin to behave like this, or point me at some documentation
>>>>> that does?
>>>>>
>>>>> Thanks in advance,
>>>>>
>>>>> Mike
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>>>> For additional commands, e-mail: user-help@(protected)
>>>>>
>>>>>
>>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> For additional commands, e-mail: user-help@(protected)
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail: user-help@(protected)
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187694.ezm (zipped)Hi Al,
Thanks for the comments. The book/chapter description is actually a
simplification of my real problem domain (which is commercially
sensitive).
The under-lying storage mechanism isn't simple but is quite abstract
from the REST API we are providing and the hierarchical model is
required to describe the relationships between resources in the
desired way.
If you can get your hands on that O'Reilly book it's worth a read,
seems to be one of the better REST resources around.
Mike
2008/6/17 Al Sutton <al.sutton@(protected)>:
> Mike,
>
> The safari signup requires a credit card which I'm not going to give so I'm
> afraid I can't comment after seeing the book.
>
> It has always been my understanding that the /Earth/France/Paris style of
> notation is a search engine optimised (SEO) layer which has the design goal
> of being descriptive to humans and search engines and is not designed with
> the REST principals of performance and efficiency.
>
> The main problem with performance is that, in most cases, you're going to be
> looking the data up in a database table, therefore you have your unique ID
> as the primary key for the table. The data in the table may, in turn, be a
> reference to a storage device and location where the data is stored, but at
> the top level you have the single primary key, hence the single /noun/id
> combination.
>
> If you're thinking of mapping the book to a folder name and the chapter to a
> filename in the folder then I would urge you to look at some of the comments
> around the web on how flat file systems scale, and possibly think about an
> intermediate table which maps IDs to the location of the chapter data which
> would allow you to have separate file stores to spread the data accross.
>
> Al.
>
> Mike Watson wrote:
>>
>> Thanks for the feedback.
>>
>> I actually disagree regarding whether my url syntax is restful.
>>
>> Have you read the O'Reilly book: "RESTful Web Services" by Leonard
>> Richardson; Sam Ruby?
>>
>> If not please take a look (you can probably see sample chapters on
>> Safari if you don't have an account).
>> Specifically in section 5.5.1 Encode Heirarchy into Path Variables
>> where examples like this are provided:
>> http://maps.example.com/Earth/France/Paris
>>
>> In fact the samples the entire book is based on all rely on hierarchy.
>> Hierarchy is *very* relevant to my problem domain and is something
>> that a RESTful interface *should* be able to support. Do you not agree
>> a news website is hierarchical? The web is hierarchical in nature.
>> REST is supposed to be the language of the web...
>>
>> If the REST plugin can't support this hierarchical model I'd say it is
>> fundamentally flawed. I'm happy to help rectify this but to say that
>> this approach just isn't REST is simply not true.
>>
>> Can anybody suggest where I would start in an attempt to implement
>> this hierarchical model? Or do I need to start looking for a
>> replacement for the Struts2 REST plugin?
>>
>> Thanks for your time.
>>
>> Mike
>>
>> 2008/6/17 Al Sutton <al.sutton@(protected)>:
>>
>>>
>>> It's true that it takes a bit of reading between the lines, but basically
>>> REST relies on unique identifiers for resources, which for HTTP is
>>> commonly
>>> taken to mean a URLs of the form;
>>>
>>> http://server/resource_noun/id
>>>
>>> (to confirm this have a spin through the google results showing various
>>> examples).
>>>
>>> With servers with many apps on this is commonly expanded to;
>>>
>>> http://server/app/resource_noun/id
>>>
>>> In the strictest send the Mikes URLs should be;
>>>
>>> http://www.mydomain.com/chapter/123_1
>>>
>>> because we are uniquely identifying a chapter and to do this we need to
>>> include the book id, but for the sake of clarity (which was the reason I
>>> beleive he was using x/x_id/y/y_id notation I expanded the noun to show
>>> book
>>> and chapter.
>>>
>>> Al.
>>>
>>>
>>> Laurie Harper wrote:
>>>
>>>>
>>>> It may be the case that the REST plugin can't support this (I don't know
>>>> if that's true) but I don't see anything in the cited reference that
>>>> says
>>>> such URLs are un-RESTful. And a Struts apps should certainly be able to
>>>> support them, even if it requires writing a little more code (e.g. a
>>>> custom
>>>> action mapper?)
>>>>
>>>> L.
>>>>
>>>> Al Sutton wrote:
>>>>
>>>>>
>>>>> Mike,
>>>>>
>>>>> Rest URLs doesn't work that way, so the plugin is correct and your
>>>>> needs
>>>>> are not in sync with REST standards (see
>>>>> http://en.wikipedia.org/wiki/Representational_State_Transfer for a more
>>>>> details on REST).
>>>>>
>>>>> If you want to do something with multiple IDs my suggestion would be
>>>>> URLs
>>>>> along the lines of;
>>>>>
>>>>> http://www.mydomain.com/rest/bookAndChapter/123_1
>>>>>
>>>>> Al.
>>>>>
>>>>> Mike Watson wrote:
>>>>>
>>>>>>
>>>>>> Hi Folks,
>>>>>>
>>>>>> I'm trying to use the REST plugin to implement a service that serves
>>>>>> resources using the following url syntax:
>>>>>>
>>>>>> http://www.mydomain.com/rest/book/123 (which works fine)
>>>>>> http://www.mydomain.com/rest/book/123/chapter (which throws a 500
>>>>>> because my book controller doesn't have a chapter() method)
>>>>>> http://www.mydomain.com/rest/book/123/chapter/1 (which returns 404)
>>>>>>
>>>>>> I'd expect the two chapter urls to access the ChapterController
>>>>>> instead of the BookController.
>>>>>>
>>>>>> Being able to request resources 'within resources' like this is
>>>>>> crucial to my application. Can anybody tell me how I can configure the
>>>>>> rest plugin to behave like this, or point me at some documentation
>>>>>> that does?
>>>>>>
>>>>>> Thanks in advance,
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>>>>> For additional commands, e-mail: user-help@(protected)
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>>> For additional commands, e-mail: user-help@(protected)
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> For additional commands, e-mail: user-help@(protected)
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail: user-help@(protected)
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187695.ezm (zipped)Hmmm, I haven't come across the Namspace annotation stuff. I'll
investigate that and see how I get on. If anyone can point me at some
useful examples of how I might achieve this it'd be greatly
appreciated.
Thanks again for all the responses...
2008/6/17 Don Brown <donald.brown@(protected)>:
> I believe it is technically possible to do this, but not at all
> intuitive right now. This is probably my number one improvement
> request for the REST plugin.
>
> You should be able change the wildcard mapper to one that recognizes
> named wildcards then use them in your namespace annotation like this:
> @Namespace("/book/{bookId}")
>
> As I said, it really needs work as this is a huge deficiency in the
> REST plugin right now, but the reason I haven't just made this easier
> as I'm toying with the idea of borrowing the URI mapping behavior from
> Jersey, which I find very intuitive, if a bit un-Struts/xwork-like.
>
> Don
>
> On Tue, Jun 17, 2008 at 9:10 AM, Mike Watson <michael.f.watson@(protected):
>> Well that'd be nice but I'm really struggling to get it to behave the
>> way I want. Any thoughts on how I might do this?
>>
>> 2008/6/17 Dave Newton <newton.dave@(protected)>:
>>> --- On Mon, 6/16/08, Mike Watson <michael.f.watson@(protected):
>>>> Can anybody suggest where I would start in an attempt to
>>>> implement this hierarchical model?
>>>
>>> The existing REST plugin?
>>>
>>> Just an idea.
>>>
>>> Dave
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> For additional commands, e-mail: user-help@(protected)
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail: user-help@(protected)
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187682.ezm (zipped)--- On Mon, 6/16/08, dusty <dustin_pearce@(protected):
> For sure, but since we are Java developers with a captial J,
> then we can call it something other than hackfest which suits
> the script kitties well. ;-)
No thanks; as a founding member of The Society for Preserving the True Hacking Heritage we must not allow the original definition of the word to be besmirched, watered-down, or used inappropriately.
Dave

Attachment:
user_187697.ezm (zipped)How about a Jacking Struts Day?
Dave Newton wrote:
> --- On Mon, 6/16/08, dusty <dustin_pearce@(protected):
>
>> For sure, but since we are Java developers with a captial J,
>> then we can call it something other than hackfest which suits
>> the script kitties well. ;-)
>>
>
> No thanks; as a founding member of The Society for Preserving the True Hacking Heritage we must not allow the original definition of the word to be besmirched, watered-down, or used inappropriately.
>
> Dave
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187705.ezm (zipped)--- On Tue, 6/17/08, Al Sutton <al.sutton@(protected):
> How about a Jacking Struts Day?
That's... a little disturbing ;)
Dave

Attachment:
user_187683.ezm (zipped)Because "#this" is mapped to the top of the stack? (It's marginally more complicated than that; "#this" means "the current object", which depends on context. It pops up in projections as well.)
Could be wrong, though.
Dave
--- On Mon, 6/16/08, Bruno Cavestro <bruno.cavestro@(protected):
> From: Bruno Cavestro <bruno.cavestro@(protected)>
> Subject: differences btw <s:property\> and <s:property value="#this"/>
> To: "Struts Users Mailing List" <user@(protected)>
> Date: Monday, June 16, 2008, 11:49 AM
> Hy
> Given the two pieces of codes can you explain me how can i
> get same output?
> A:
> <s:iterator value="myList">
> <s:property /><br>
> </s:iterator>
> This produces correctly the following
> John<br>
> Steve<br>
>
> B:
> <s:iterator value="myList" >
> <s:property
> value="#this"/><br>
> </s:iterator>
> And this produces
> [John, alfa.test@(protected),
> com.opensymphony.xwork2.DefaultTextProvider@(protected)>
> [Steve, alfa.test@(protected),
> com.opensymphony.xwork2.DefaultTextProvider@(protected)>
>
>
> given that myList is an arraylist containing Strings....
>
>
> Thanx
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail:
> user-help@(protected)

Attachment:
user_187689.ezm (zipped)is there a "#this"? "top" does map to the object on top of the stack.
musachy
On Mon, Jun 16, 2008 at 4:54 PM, Dave Newton <newton.dave@(protected):
> Because "#this" is mapped to the top of the stack? (It's marginally more complicated than that; "#this" means "the current object", which depends on context. It pops up in projections as well.)
>
> Could be wrong, though.
>
> Dave
>
>
> --- On Mon, 6/16/08, Bruno Cavestro <bruno.cavestro@(protected):
>
>> From: Bruno Cavestro <bruno.cavestro@(protected)>
>> Subject: differences btw <s:property\> and <s:property value="#this"/>
>> To: "Struts Users Mailing List" <user@(protected)>
>> Date: Monday, June 16, 2008, 11:49 AM
>> Hy
>> Given the two pieces of codes can you explain me how can i
>> get same output?
>> A:
>> <s:iterator value="myList">
>> <s:property /><br>
>> </s:iterator>
>> This produces correctly the following
>> John<br>
>> Steve<br>
>>
>> B:
>> <s:iterator value="myList" >
>> <s:property
>> value="#this"/><br>
>> </s:iterator>
>> And this produces
>> [John, alfa.test@(protected),
>> com.opensymphony.xwork2.DefaultTextProvider@(protected)>
>> [Steve, alfa.test@(protected),
>> com.opensymphony.xwork2.DefaultTextProvider@(protected)>
>>
>>
>> given that myList is an arraylist containing Strings....
>>
>>
>> Thanx
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail:
>> user-help@(protected)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>
--
"Hey you! Would you help me to carry the stone?" Pink Floyd

Attachment:
user_187704.ezm (zipped)--- On Mon, 6/16/08, Musachy Barroso <musachy@(protected):
> is there a "#this"? "top" does map to the object on top of the stack.
http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/projection.html
I extrapolated the idea of "the current object" to extend to <s:iterator...> but I didn't check the S2 and/or OGNL code to see who's setting it.
Dave

Attachment:
user_187685.ezm (zipped)I'm trying to get an s:label tag to also have a tool-tip but it doesn't
seem to be working.
Here is the documentation I am trying to follow:
http://struts.apache.org/2.0.11.1/docs/label.html
Here is my code:
<s:iterator value="codes">
<s:label value="%{code}"
tooltip="%{description}" />
</s:iterator>
Both code and description are attributes of the objects stores in the
"codes" collection".
Are tool-tips possible with this tag reference or am I in the wrong
version?
If not, is there another way to do this or should I just do mouse over
with javascript?
I am using Struts 2.0.11.1.
Thanks in advance,
James

Attachment:
user_187686.ezm (zipped)I have a page with a few autocompleter inputs as well as some textfield and text area input fields. Everything upto this point was working fine till I added an extra file input field : <s:file theme="simple" name="attachment" id="attachment"/> (also added enctype="multipart/form-data") to my form as well. All my autocompleter have stopped functioning. If I remove s:file tag, they start working again. I add it and they stop working. Any idea why this is happening? or what I am doing wrong?
I appreciate your hints /feedbacks.
__________________________________________________________________
Looking for the perfect gift? Give the gift of Flickr!
http://www.flickr.com/gift/

Attachment:
user_187688.ezm (zipped)Dimitris Mouchritsas wrote:
> Antonio Petrelli wrote:
>> 2008/6/16 Dimitris Mouchritsas <dimitris.mouchritsas@(protected)>:
>>> Hi all,
>>> we're using struts 1.2.4 in our project and we have 3 types of
>>> messages to
>>> show the user:
>>>
>>> 1) Confirmational, with say a green tick mark,
>>> 2) Informational, with a classic i in a bubble
>>> 3) Error messages, with the classes red rectangle.
>>>
>>> Currently I use saveErrors and saveMessages in my actions but that
>>> gives me
>>> only 2 kinds of messages;
>>> errors and all others. Is there a way to add a 3rd type? I think I
>>> should do
>>> it by
>>>
>>> errors.add("My.Custom.Identifier", ....);
>>>
>>> but I'm not sure.
>>
>> Well, this is the right thing to do :-)
>> In fact, saveErrors and saveMessages put the messages using special
>> keys:
>> Globals.ERROR_KEY:
>> http://struts.apache.org/1.2.4/api/org/apache/struts/Globals.html#ERROR_KEY
>>
>> Globals.MESSAGE_KEY:
>> http://struts.apache.org/1.2.4/api/org/apache/struts/Globals.html#MESSAGE_KEY
>>
>>
>> HTH
>> Antonio
>>
> Ok, I've succeeded, but in trying to have a uniform method for all
> messages I lost struts validator's errors.
> For example, in the action:
>
> ActionMessages msg = new ActionMessages();
>
> msg.add(MyConstants.MESSAGE_CONFIRM, new
> ActionMessage("prompt.OK"));
> msg.add(MyConstants.MESSAGE_INFO, new
> ActionMessage("prompt.modify"));
> msg.add(MyConstants.MESSAGE_ERROR, new
> ActionMessage("prompt.close"));
>
> saveMessages(request, msg);
>
> then in the jsp, we have a tile to show all messages, regardless of
> where they come from:
>
> <logic:messagesPresent message="true"
> property="<%=MyConstants.MESSAGE_CONFIRM%>">
> <div id="Message" class="Success">
> <%--<p><strong>Your changes have been accepted</strong>.</p>--%>
> <html:messages id="msg" message="true"
> property="<%=MyConstants.MESSAGE_CONFIRM%>">
> <p>
> <bean:write name="msg" />
> </p> </html:messages>
> <p class="Buttons">
> <button id="MClose" type="submit"><bean:message
> key="prompt.close" /></button>
> </p>
> </div><!-- Message // -->
> </logic:messagesPresent>
>
>
> <%-- Informational Messages --%>
> <logic:messagesPresent message="true"
> property="<%=MyConstants.MESSAGE_INFO%>">
> <div id="Message" class="Info">
>
> <html:messages id="msg" message="true"
> property="<%=MyConstants.MESSAGE_INFO%>">
> <p><bean:write name="msg" /></p> </html:messages>
> <p class="Buttons">
> <button id="MClose" type="submit"><bean:message
> key="prompt.close" /></button>
> </p>
> </div><!-- Message // -->
> </logic:messagesPresent>
>
> <%-- Error messages --%>
> <logic:messagesPresent message="true"
> property="<%=MyConstants.MESSAGE_ERROR%>">
> <div id="Message" class="Error">
> <p><strong><bean:message key="error.occured" />:</strong></p>
> <ul>
> <html:messages id="msg" message="true"
> property="<%=MyConstants.MESSAGE_ERROR%>">
> <li>
> <bean:write name="msg" />
> </li>
> </html:messages>
> <%--
> <li><a href="#FName">First name</a> is required.</li>
> <li><a href="#LName">Last name</a> is required.</li>
> --%>
> </ul> <p class="Buttons">
> <button id="MClose" type="submit"><bean:message
> key="prompt.close" /></button>
> </p>
> </div><!-- Message // -->
> </logic:messagesPresent>
>
> But by using this method, the errors that validator adds, are not
> displayed, because they're save under Globals.ERROR_KEY.
> Is there a way to tell validator to save its errors as a message under
> my own custom key? Again I point out that the only reason
> I want this is to have a uniform way of dealing with messages, not
> having to use saveErrors. But if this is not correct I guess I'll
> revert into using saveErrors. Any suggestions?
>
> Regards
> Dimitris
For each different type of messages store the corresponding
ActionMessages object under a different key as you have done. However,
leave the normal messages and errors alone. Globals.ERRORS is where the
validator will store it's messages. This is also how struts determines
if validation fails or not (is the ActionMessages under Globals.ERRORS
empty or are there messages to display) and this is why your validation
isn't working.
I strong suggest you leave the normal struts messaging alone (Errors &
Messages) and just add the new message groups that you want under your
own variables.
Caution:
I'm not entirely sure, but you may have to be more explicit in your
message displaying than using <logic:messagesPresent>. This is because
that tag will look under Global.MESSAGES to find
the messages to display. The property="" that you're listing is used to
look within that ActionMessages object for values that are stored for
that property within the action messages collection. The variable
you're supplying in your msg.add(VARIABLE, ActionMessage()); calls is
the 'property' that the message is for.
Example:
If the *username* field has a validation error, validator would put a
msgs.add("username", new ActionMessage("Validation failure message"));
like so, and then put the msgs object under the Globals.ERRORS key.
To store your own messages you'll have to do something like this:
{
ActionMessages msgs = new ActionMessages(); // Normal messages
ActionMessages errors = new ActionMessages(); // Normal errors
ActionMessages confirms = new ActionMessages(); // My custom
messages collection
confirms.add("username", new
ActionMessage("prompt.confirm.username"));
msgs.add("firstname", new ActionMessage("prompt.modify"));
errors.add("postal_code", new
ActionMessage("prompt.badpostalcode"));
saveMessages(request, msgs); // This concatenates with the
Messages in struts Globals.MESSAGES
saveErrors(request, errors); // This concatenates with the
Messages in struts Globals.ERRORS
// You may want a helper method to do this, so it can also check
if you've already saved some messages
request.setAttribute(MyConstants.MESSAGE_CONFIRM, confirms);
}
Now keep in mind too, that the struts saveMessages method does a bit
more than just store the messages object to the correct variable. What
it actually does is checks if there's already an existing ActionMessages
object there, and if so it will add your new messages to it. I strongly
recommend you download the source for your version and see how it works,
then you can build yourself a corresponding helper for your own message
category.
ihth,
Louis

Attachment:
user_187690.ezm (zipped)Hi Everyone,
Some time ago I asked you about a problem with old objects in session.
I noted that my application is using diferent sessions to recovery a data
from db.
Some times the application shows the corect result, other shows old results
(with old session).
I guess that if I use session-per-request I'll throw my problem away.
Does anyone knows how to implement a session-per-request in Struts 2?
Thanks so much.
Márcio Gurgel

Attachment:
user_187696.ezm (zipped)Márcio Gurgel wrote:
> Hi Everyone,
>
> Some time ago I asked you about a problem with old objects in session.
> I noted that my application is using diferent sessions to recovery a data
> from db.
> Some times the application shows the corect result, other shows old results
> (with old session).
>
> I guess that if I use session-per-request I'll throw my problem away.
>
> Does anyone knows how to implement a session-per-request in Struts 2?
The term 'session-per-request' doesn't really make a lot of sense,
unless you are using 'session' to mean something other than a web
application session (perhaps a database 'session'? a Hibernate session?
something else?).
IIRC, though, your previous problem *was* about web application
sessions, as in unwanted sharing of session-scoped data. Perhaps you
could explain what you mean by session-per-request?
L.

Attachment:
user_187698.ezm (zipped)I think he's trying to do whats at
http://cwiki.apache.org/S2WIKI/struts-2-spring-2-jpa-ajax.html without
using the great google first :).
Al.
Laurie Harper wrote:
> Márcio Gurgel wrote:
>> Hi Everyone,
>>
>> Some time ago I asked you about a problem with old objects in session.
>> I noted that my application is using diferent sessions to recovery a
>> data
>> from db.
>> Some times the application shows the corect result, other shows old
>> results
>> (with old session).
>>
>> I guess that if I use session-per-request I'll throw my problem away.
>>
>> Does anyone knows how to implement a session-per-request in Struts 2?
>
> The term 'session-per-request' doesn't really make a lot of sense,
> unless you are using 'session' to mean something other than a web
> application session (perhaps a database 'session'? a Hibernate
> session? something else?).
>
> IIRC, though, your previous problem *was* about web application
> sessions, as in unwanted sharing of session-scoped data. Perhaps you
> could explain what you mean by session-per-request?
>
> L.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>

Attachment:
user_187699.ezm (zipped)2008/6/17 Márcio Gurgel <marcio.rga@(protected)>:
> Does anyone knows how to implement a session-per-request in Struts 2?
If you mean a Hibernate session, you have to implement the "Open
Session In View" pattern, for example using a filter.
http://www.hibernate.org/43.html
If you are using Spring, there is an already implemented
OpenSessionInView filter:
http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/support/OpenSessionInViewFilter.html
Antonio

Attachment:
user_187702.ezm (zipped)I'm gonna try your sugestions and post the result.
Thanks a lot!
Márcio Gurgel
2008/6/17 Antonio Petrelli <antonio.petrelli@(protected)>:
> 2008/6/17 Márcio Gurgel <marcio.rga@(protected)>:
> > Does anyone knows how to implement a session-per-request in Struts 2?
>
> If you mean a Hibernate session, you have to implement the "Open
> Session In View" pattern, for example using a filter.
> http://www.hibernate.org/43.html
>
> If you are using Spring, there is an already implemented
> OpenSessionInView filter:
>
> http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/support/OpenSessionInViewFilter.html
>
> Antonio
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

Attachment:
user_187692.ezm (zipped)
list="#{'01': getText('message.key'), ...
Hi,
I have tried the above and it doesn't work:
"the requested key list="#xxxxxx" cannot be resolved as a collection/...."
so i do the bundle mapping in my Action class before the map is populated.
just FYI.
Eddie Lau
--
Sent from the Struts - User mailing list archive at Nabble.com.

Attachment:
user_187700.ezm (zipped)Hi,
I am having problems using a custom tag class derived from LinkTag and
using a runtime expression as the 'href' attribute value. It seems like
expressions in attributes that are inherited from LinkTag are not parsed
by my JSP engine (Jetty server). In my TLD file, <rtexprvalue> is set to
'true' but the rendered result is always <a href=<%= request.get...
%>...
When I try the same on an attribute that is defined in my custom tag
class (and not in the parent class LinkTag) then it works without
problems.
Any ideas? Thanks in advance!
Michael

Attachment:
user_187701.ezm (zipped)
hi,
i need to populate my combo with options taken from the FormBean and
compared with the Enum values.
i have it working but i doubt it's the best way to do it (and it mixes too
much struts tags with jstl ones, in my opinion)
anybody can help?
<%@(protected)
used further down %>
<%! String val; %>
<html:form action="/full_profiloGiocoRespAutoesclusione">
<label>WANT TO DO THIS?</label>
<% String d2 = "session"; %>
<logic:notEmpty name="MyFormBean" property="duration">
<bean:define id="d1" name="MyFormBean" property="duration"/>
<% d2 = d1.toString();%>
</logic:notEmpty>
<fieldset>
<label for="question">Choose duration</label>
<html:select property="duration" name="MyFormBean">
<%
QuestionValues value;
String d = "session";
if (d2 != null) {
d = d2;
}
if ("day".equals(d)) {
value = QuestionValues.day;
}
else if ("week".equals(d)) {
value = QuestionValues.week;
} else {
value = QuestionValues.session;
}
for (QuestionValues v : QuestionValues.values()) {
if (v.compareTo(value) >= 0) {
val = (String) (v.getLabel());
%>
<html:option value='<%=val%>'><%=val%></html:option>
<% }
}
%>
</html:select>
</fieldset>
</html:form>
--
Sent from the Struts - User mailing list archive at Nabble.com.

Attachment:
user_187703.ezm (zipped)
Hi,
I am trying to use Dojo Richtext editor in my jsp. I have specified it as
<s:textarea id="editor" label="editor" theme="ajax"/>
When the page is launched I get the error
There is no Action mapped for namespace /struts/dojo/src/widget/templates
and action name EditorToolbarOneline. - [unknown location]
at
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
at
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
I am able to use other Dojo tags like Tree and tabbed panels.
Could anyone please help me in this?
Thanks
--
Sent from the Struts - User mailing list archive at Nabble.com.

Attachment:
user_187706.ezm (zipped)Let me guess: a similar problem to the date/time picker tag.
--- On Tue, 6/17/08, StrutsUser <ajaykumar.r@(protected):
> From: StrutsUser <ajaykumar.r@(protected)>
> Subject: Dojo Rich Text Editor Not Rendered
> To: user@(protected)
> Date: Tuesday, June 17, 2008, 7:20 AM
> Hi,
> I am trying to use Dojo Richtext editor in my jsp. I have
> specified it as
> <s:textarea id="editor"
> label="editor" theme="ajax"/>
> When the page is launched I get the error
> There is no Action mapped for namespace
> /struts/dojo/src/widget/templates
> and action name EditorToolbarOneline. - [unknown location]
> at
> com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
> at
> org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
> I am able to use other Dojo tags like Tree and tabbed
> panels.
> Could anyone please help me in this?
> Thanks
> --
> View this message in context:
> http://www.nabble.com/Dojo-Rich-Text-Editor-Not-Rendered-tp17885138p17885138.html
> Sent from the Struts - User mailing list archive at
> Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail:
> user-help@(protected)

Attachment:
user_187708.ezm (zipped)
It seems to be similar problem because the error messages are similar and I
have already noticed it. But it need not be that because,
in case of datetime picker the issue was with the .html extension. Now I am
able use other dojo tags with same .html extension.
newton.dave wrote:
>
> Let me guess: a similar problem to the date/time picker tag.
>
>
> --- On Tue, 6/17/08, StrutsUser <ajaykumar.r@(protected):
>
>> From: StrutsUser <ajaykumar.r@(protected)>
>> Subject: Dojo Rich Text Editor Not Rendered
>> To: user@(protected)
>> Date: Tuesday, June 17, 2008, 7:20 AM
>> Hi,
>> I am trying to use Dojo Richtext editor in my jsp. I have
>> specified it as
>> <s:textarea id="editor"
>> label="editor" theme="ajax"/>
>> When the page is launched I get the error
>> There is no Action mapped for namespace
>> /struts/dojo/src/widget/templates
>> and action name EditorToolbarOneline. - [unknown location]
>> at
>> com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
>> at
>> org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
>> I am able to use other Dojo tags like Tree and tabbed
>> panels.
>> Could anyone please help me in this?
>> Thanks
>> --
>> View this message in context:
>> http://www.nabble.com/Dojo-Rich-Text-Editor-Not-Rendered-tp17885138p17885138.html
>> Sent from the Struts - User mailing list archive at
>> Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>> For additional commands, e-mail:
>> user-help@(protected)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>
>
--
Sent from the Struts - User mailing list archive at Nabble.com.

Attachment:
user_187707.ezm (zipped)Hello,
Are there any good options to integrate ajax with struts 1? I woul like
something based o tags. My problem is that i have an upload form
<html:form action="/something" enctype="multipart/form-data"
styleId="somethingId">.....
and the input files are like :
<html:file property="image1" styleId="image1"/>
The values are mapped on the form, private FileForm image1; ......
Now, i whant to submit this form with ajax, and to react like it was a
normal struts submit. To populate form values, s.o.
Is there something that ca do what i need? Any library?