You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Mostafa Mohamed <es...@gmail.com> on 2009/08/13 18:10:05 UTC
Performance Problem
Hi,
We're working on a wicket/spring/hibernate webapp (research
repository) and today i was working on an 'Add Publication Panel'. i
added some
validation today but whenever i click on the link that shows the panel
in the main content area it takes like 10/15 seconds to show it.
Tomcat
doesn't show any errors and everything is working. here's my Add
Publication Panel. i have no idea as to what could be causing this.
here's my panel's .java
public class AddPublicationPanel extends BasicPanel {
@SpringBean
private IBrowseService browseService;
@SpringBean
private IAddEditService addEditService;
@SpringBean
private IBook book;
@SpringBean
private IConferencePaper conferencePaper;
@SpringBean
private ITechnicalReport technicalReport;
@SpringBean
private IWorkshop workshop;
@SpringBean
private IArticle article;
@SpringBean
private IBookChapter bookChapter;
@SpringBean(name = "book")
private IPublication publication;
private List<Short> year;
private List<Byte> month;
private Form form;
private WebMarkupContainer detailsBook, detailsConferencePaper,
detailsTechnicalReport, detailsWorkshop, detailsArticle,
detailsBookChapter, detailsCurrent;
private AjaxFallbackLink addAuthor, removeAuthor;
private AutoCompleteTextFieldUser[] authors;
public AddPublicationPanel() {
super("block", "Add Publication");
initLists();
initCommon();
initDetails();
}
private void initCommon() {
add(new FeedbackPanel("feedback"));
add(form = new Form("form", new CompoundPropertyModel(
publication)) {
protected void onSubmit() {
switch (publication.getPublicationType()) {
case BOOK:
break;
case BOOK_CHAPTER:
break;
case ARTICLE:
break;
case CONFERENCE_PAPER:
break;
case WORKSHOP:
break;
case TECHNICAL_REPORT:
break;
}
}
});
// title
form.add(new TextField("title").setRequired(true).add(
StringValidator.maximumLength(128)));
// year
form.add(new DropDownChoice("year", year));
// month
form.add(new DropDownChoice("month", month, new ChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
return (new DateFormatSymbols().getMonths())[((Byte) object)
.intValue()];
}
}));
// abstractText
form.add(new TextArea("abstractText").add(StringValidator
.maximumLength(2048))); //
required??????????????????????????????
// reproducible
form.add(new CheckBox("reproducible"));
// passwordProtected
form.add(new CheckBox("passwordProtected"));
// keywords
form.add(new TextField("keywords").add(
new PatternValidator("(\\s*\\w+\\s*,*\\s*)*,*\\s*")).add(
StringValidator.maximumLength(2048)));
// authors (internal & external)
authors = new AutoCompleteTextFieldUser[10];
for (int i = 0; i < 10; i++)
// use model to set authors (internal & external)
// later*****************
form.add((authors[i] = new AutoCompleteTextFieldUser("author" + i))
.setVisible(false).setOutputMarkupId(true)
.setOutputMarkupPlaceholderTag(true));
authors[0].setRequired(true).setVisible(true);
form.add((addAuthor = (new AjaxFallbackLink("add") {
@Override
public void onClick(AjaxRequestTarget target) {
int pointer;
for (pointer = 0; pointer < 10; pointer++) {
if (!authors[pointer].isVisible()) {
break;
}
}
if (pointer < 10) {
authors[pointer].setVisible(true);
if (pointer == 9)
this.setVisible(false);
if (pointer > 0)
removeAuthor.setVisible(true);
if (target != null) {
target.addComponent(authors[pointer]);
target.addComponent(removeAuthor);
target.addComponent(this);
}
}
}
})).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
form.add((removeAuthor = (new AjaxFallbackLink("remove") {
@Override
public void onClick(AjaxRequestTarget target) {
int pointer;
for (pointer = 0; pointer < 10; pointer++) {
if (!authors[pointer].isVisible()) {
break;
}
}
pointer--;
if (pointer > 0)
authors[pointer].setVisible(false);
if (pointer == 1)
this.setVisible(false);
if (pointer <= 9)
addAuthor.setVisible(true);
if (target != null) {
target.addComponent(authors[pointer]);
target.addComponent(addAuthor);
target.addComponent(this);
}
}
})).setVisible(false).setOutputMarkupId(true)
.setOutputMarkupPlaceholderTag(true));
// departments
form.add(new ListMultipleChoice("departments",
new LoadableDetachableModel() {
@Override
protected Object load() {
return browseService.findAllDepartments();
}
}, new ChoiceRenderer("name", "id")).setRequired(true));
// publicationType
form.add((new DropDownChoice("publicationType", Arrays
.asList(PublicationType.values()), new ChoiceRenderer(
"displayName", "id")).setRequired(true))
.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.addComponent(detailsArticle);
target.addComponent(detailsBook);
target.addComponent(detailsBookChapter);
target.addComponent(detailsConferencePaper);
target.addComponent(detailsTechnicalReport);
target.addComponent(detailsWorkshop);
if (publication.getPublicationType() == null) {
detailsCurrent.setVisible(false);
} else {
if (publication.getPublicationType().getId() == 0) {
replaceDetails(detailsArticle).setModel(
new CompoundPropertyModel(article));
publication = article;
} else {
if
(publication.getPublicationType().getId() == 1) {
replaceDetails(detailsBook).setModel(
new CompoundPropertyModel(book));
publication = book;
} else {
if (publication.getPublicationType()
.getId() == 2) {
replaceDetails(detailsBookChapter)
.setModel(
new
CompoundPropertyModel(
bookChapter));
publication = bookChapter;
} else {
if (publication.getPublicationType()
.getId() == 3) {
replaceDetails(
detailsConferencePaper)
.setModel(
new
CompoundPropertyModel(
conferencePaper));
publication = conferencePaper;
} else {
if (publication
.getPublicationType()
.getId() == 4) {
replaceDetails(
detailsTechnicalReport)
.setModel(
new
CompoundPropertyModel(
technicalReport));
publication = technicalReport;
} else {
if (publication
.getPublicationType()
.getId() == 5) {
replaceDetails(
detailsWorkshop)
.setModel(
new CompoundPropertyModel(
workshop));
publication = workshop;
}
}
}
}
}
}
}
}
}));
// clear button
form.add((new AjaxFallbackButton("clear", form) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
form.clearInput();
if (target != null)
target.addComponent(form);
}
}).setDefaultFormProcessing(false));
}
private void initDetails() {
// article
(detailsArticle = new WebMarkupContainer("detailsArticle")).setVisible(
false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(
true);
detailsArticle
.add(
new TextField("journalName").setRequired(true).add(
StringValidator.maximumLength(128)))
.add(
new TextField("volume").add(NumberValidator.range(0,
Short.MAX_VALUE)))
.add(
new TextField("issue").add(NumberValidator.range(0,
Long.MAX_VALUE)))
.add(
new TextField("pages")
.add(StringValidator.maximumLength(64))
.add(
new PatternValidator(
"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")));
// book
(detailsBook = new WebMarkupContainer("detailsBook")).setVisible(false)
.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
detailsBook.add(
new TextField("ISBN").setRequired(true).add(
StringValidator.lengthBetween(10, 13)))
.add(
new TextField("series").add(StringValidator
.maximumLength(128))).add(
new TextField("edition").add(StringValidator
.maximumLength(64))).add(
new TextField("volume").add(NumberValidator.range(0,
Short.MAX_VALUE))).add(
new TextField("publisher.name").setRequired(true).add(
StringValidator.maximumLength(128))).add(
new TextField("publisher.address").add(StringValidator
.maximumLength(128)));
// book chapter
(detailsBookChapter = new WebMarkupContainer("detailsBookChapter"))
.setVisible(false).setOutputMarkupId(true)
.setOutputMarkupPlaceholderTag(true);
detailsBookChapter
.add(
new TextField("bookISBN").setRequired(true).add(
StringValidator.lengthBetween(10, 13)))
.add(
new TextField("bookTitle").setRequired(true).add(
StringValidator.maximumLength(128)))
.add(
new TextField("series").add(StringValidator
.maximumLength(128)))
.add(
new TextField("edition").add(StringValidator
.maximumLength(64)))
.add(
new TextField("volume").add(
NumberValidator.range(0, 32767)).setType(
Short.class))
.add(
new TextField("pages")
.setRequired(true)
.add(StringValidator.maximumLength(64))
.add(
new PatternValidator(
"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
.add(
new TextField("publisher.name").setRequired(true).add(
StringValidator.maximumLength(128))).add(
new TextField("publisher.address").add(StringValidator
.maximumLength(128)));
// conference paper
(detailsConferencePaper = new WebMarkupContainer(
"detailsConferencePaper")).setVisible(false).setOutputMarkupId(
true).setOutputMarkupPlaceholderTag(true);
detailsConferencePaper
.add(
new TextField("conferenceBookTitle").setRequired(true)
.add(StringValidator.maximumLength(128)))
.add(
new TextField("conferenceAddress").add(StringValidator
.maximumLength(128)))
.add(
new TextField("pages")
.add(StringValidator.maximumLength(64))
.add(
new PatternValidator(
"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
.add(
new TextField("editors").add(StringValidator
.maximumLength(256))).add(
new TextField("sponsors").add(StringValidator
.maximumLength(512))).add(
new TextField("publisher.address").add(StringValidator
.maximumLength(128))).add(
new TextField("publisher.name").setRequired(true).add(
StringValidator.maximumLength(128)));
// technical report
(detailsTechnicalReport = new WebMarkupContainer(
"detailsTechnicalReport")).setVisible(false).setOutputMarkupId(
true).setOutputMarkupPlaceholderTag(true);
detailsTechnicalReport.add(
new DropDownChoice("type", Arrays.asList(TechnicalReportType
.values()), new ChoiceRenderer("displayName", "id")))
.add(
new TextField("institution").setRequired(true).add(
StringValidator.maximumLength(128))).add(
new TextField("institutionAddress").add(StringValidator
.maximumLength(128)));
// setting the default value of the technical report type to
// PRIMARY_RESEARCH
technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH);
// workshop
(detailsWorkshop = new WebMarkupContainer("detailsWorkshop"))
.setVisible(false).setOutputMarkupId(true)
.setOutputMarkupPlaceholderTag(true);
detailsWorkshop.add(
new TextField("workshopTitle").setRequired(true).add(
StringValidator.maximumLength(128))).add(
new TextField("workshopNumber").add(NumberValidator.range(0,
Long.MAX_VALUE))).add(
new TextField("workshopAddress").add(StringValidator
.maximumLength(128)));
detailsCurrent = detailsBook;
form.add(detailsArticle).add(detailsBook).add(detailsBookChapter).add(
detailsConferencePaper).add(detailsConferencePaper).add(
detailsTechnicalReport).add(detailsWorkshop);
}
private void initLists() {
// years
year = new ArrayList<Short>();
for (short i = (short)
Calendar.getInstance().get(Calendar.YEAR); i >= 1950; i--) {
year.add(new Short(i));
}
// setting the default value of year to current year
publication.setYear(new Short((short) Calendar.getInstance().get(
Calendar.YEAR)));
// months
month = new ArrayList<Byte>();
for (byte i = 0; i < 12; i++) {
month.add(new Byte((byte) i));
}
}
private Form replaceDetails(WebMarkupContainer replacement) {
detailsCurrent.setVisible(false);
(detailsCurrent = replacement).setVisible(true);
return form;
}
}
Re: Performance Problem
Posted by "sky.walker" <es...@gmail.com>.
I figured out what the problem was and thought i'd share how it was solved in
case someone else has the same problem, we had this in the html page
<wicket:head>
<wicket:link>
<link rel="stylesheet" type="text/css" href="link to css file" />
</wicket:link>
</wicket:head>
which i guess would cause wicket to spend some time looking for a css file
that doesn't exist.
--
View this message in context: http://www.nabble.com/Performance-Problem-tp24957835p24965566.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Performance Problem
Posted by "sky.walker" <es...@gmail.com>.
I'm sorry igor, i didn't mean to post it twice i thought this one wasn't
posted as it took 5 hours to appear on the forum so i sent another one. I'm
going to delete the other post. as to using a profiler, i'm not really
familiar with such a tool but i'll see what i can do.
igor.vaynberg wrote:
>
> use a profiler.
>
> -igor
>
> On Thu, Aug 13, 2009 at 9:10 AM, Mostafa Mohamed<es...@gmail.com>
> wrote:
>> Hi,
>>
>> We're working on a wicket/spring/hibernate webapp (research
>> repository) and today i was working on an 'Add Publication Panel'. i
>> added some
>> validation today but whenever i click on the link that shows the panel
>> in the main content area it takes like 10/15 seconds to show it.
>> Tomcat
>> doesn't show any errors and everything is working. here's my Add
>> Publication Panel. i have no idea as to what could be causing this.
>>
>> here's my panel's .java
>>
>> public class AddPublicationPanel extends BasicPanel {
>>
>> @SpringBean
>> private IBrowseService browseService;
>> @SpringBean
>> private IAddEditService addEditService;
>>
>> @SpringBean
>> private IBook book;
>> @SpringBean
>> private IConferencePaper conferencePaper;
>> @SpringBean
>> private ITechnicalReport technicalReport;
>> @SpringBean
>> private IWorkshop workshop;
>> @SpringBean
>> private IArticle article;
>> @SpringBean
>> private IBookChapter bookChapter;
>> @SpringBean(name = "book")
>> private IPublication publication;
>>
>> private List<Short> year;
>> private List<Byte> month;
>>
>> private Form form;
>> private WebMarkupContainer detailsBook, detailsConferencePaper,
>> detailsTechnicalReport, detailsWorkshop, detailsArticle,
>> detailsBookChapter, detailsCurrent;
>> private AjaxFallbackLink addAuthor, removeAuthor;
>>
>> private AutoCompleteTextFieldUser[] authors;
>>
>> public AddPublicationPanel() {
>> super("block", "Add Publication");
>>
>> initLists();
>> initCommon();
>> initDetails();
>>
>> }
>>
>> private void initCommon() {
>> add(new FeedbackPanel("feedback"));
>> add(form = new Form("form", new CompoundPropertyModel(
>> publication)) {
>> protected void onSubmit() {
>> switch (publication.getPublicationType()) {
>> case BOOK:
>> break;
>> case BOOK_CHAPTER:
>> break;
>> case ARTICLE:
>> break;
>> case CONFERENCE_PAPER:
>> break;
>> case WORKSHOP:
>> break;
>> case TECHNICAL_REPORT:
>> break;
>> }
>> }
>> });
>> // title
>> form.add(new TextField("title").setRequired(true).add(
>> StringValidator.maximumLength(128)));
>> // year
>> form.add(new DropDownChoice("year", year));
>> // month
>> form.add(new DropDownChoice("month", month, new ChoiceRenderer()
>> {
>> @Override
>> public Object getDisplayValue(Object object) {
>> return (new DateFormatSymbols().getMonths())[((Byte)
>> object)
>> .intValue()];
>> }
>> }));
>> // abstractText
>> form.add(new TextArea("abstractText").add(StringValidator
>> .maximumLength(2048))); //
>> required??????????????????????????????
>> // reproducible
>> form.add(new CheckBox("reproducible"));
>> // passwordProtected
>> form.add(new CheckBox("passwordProtected"));
>> // keywords
>> form.add(new TextField("keywords").add(
>> new PatternValidator("(\\s*\\w+\\s*,*\\s*)*,*\\s*")).add(
>> StringValidator.maximumLength(2048)));
>>
>> // authors (internal & external)
>> authors = new AutoCompleteTextFieldUser[10];
>> for (int i = 0; i < 10; i++)
>> // use model to set authors (internal & external)
>> // later*****************
>> form.add((authors[i] = new AutoCompleteTextFieldUser("author"
>> + i))
>> .setVisible(false).setOutputMarkupId(true)
>> .setOutputMarkupPlaceholderTag(true));
>> authors[0].setRequired(true).setVisible(true);
>>
>> form.add((addAuthor = (new AjaxFallbackLink("add") {
>>
>> @Override
>> public void onClick(AjaxRequestTarget target) {
>>
>> int pointer;
>> for (pointer = 0; pointer < 10; pointer++) {
>> if (!authors[pointer].isVisible()) {
>> break;
>> }
>> }
>> if (pointer < 10) {
>> authors[pointer].setVisible(true);
>> if (pointer == 9)
>> this.setVisible(false);
>> if (pointer > 0)
>> removeAuthor.setVisible(true);
>>
>> if (target != null) {
>> target.addComponent(authors[pointer]);
>> target.addComponent(removeAuthor);
>> target.addComponent(this);
>> }
>> }
>>
>> }
>>
>> })).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
>> form.add((removeAuthor = (new AjaxFallbackLink("remove") {
>>
>> @Override
>> public void onClick(AjaxRequestTarget target) {
>>
>> int pointer;
>> for (pointer = 0; pointer < 10; pointer++) {
>> if (!authors[pointer].isVisible()) {
>> break;
>> }
>> }
>> pointer--;
>> if (pointer > 0)
>> authors[pointer].setVisible(false);
>> if (pointer == 1)
>> this.setVisible(false);
>> if (pointer <= 9)
>> addAuthor.setVisible(true);
>>
>> if (target != null) {
>> target.addComponent(authors[pointer]);
>> target.addComponent(addAuthor);
>> target.addComponent(this);
>> }
>>
>> }
>> })).setVisible(false).setOutputMarkupId(true)
>> .setOutputMarkupPlaceholderTag(true));
>>
>> // departments
>> form.add(new ListMultipleChoice("departments",
>> new LoadableDetachableModel() {
>>
>> @Override
>> protected Object load() {
>>
>> return browseService.findAllDepartments();
>> }
>>
>> }, new ChoiceRenderer("name", "id")).setRequired(true));
>>
>> // publicationType
>> form.add((new DropDownChoice("publicationType", Arrays
>> .asList(PublicationType.values()), new ChoiceRenderer(
>> "displayName", "id")).setRequired(true))
>> .add(new AjaxFormComponentUpdatingBehavior("onchange") {
>>
>> @Override
>> protected void onUpdate(AjaxRequestTarget target) {
>> target.addComponent(detailsArticle);
>> target.addComponent(detailsBook);
>> target.addComponent(detailsBookChapter);
>> target.addComponent(detailsConferencePaper);
>> target.addComponent(detailsTechnicalReport);
>> target.addComponent(detailsWorkshop);
>>
>> if (publication.getPublicationType() == null) {
>> detailsCurrent.setVisible(false);
>> } else {
>> if (publication.getPublicationType().getId()
>> == 0) {
>> replaceDetails(detailsArticle).setModel(
>> new
>> CompoundPropertyModel(article));
>> publication = article;
>> } else {
>> if
>> (publication.getPublicationType().getId() == 1) {
>> replaceDetails(detailsBook).setModel(
>> new
>> CompoundPropertyModel(book));
>> publication = book;
>> } else {
>> if (publication.getPublicationType()
>> .getId() == 2) {
>>
>> replaceDetails(detailsBookChapter)
>> .setModel(
>> new
>> CompoundPropertyModel(
>>
>> bookChapter));
>> publication = bookChapter;
>>
>> } else {
>> if
>> (publication.getPublicationType()
>> .getId() == 3) {
>> replaceDetails(
>>
>> detailsConferencePaper)
>> .setModel(
>> new
>> CompoundPropertyModel(
>>
>> conferencePaper));
>> publication =
>> conferencePaper;
>>
>> } else {
>> if (publication
>> .getPublicationType()
>> .getId() == 4) {
>> replaceDetails(
>>
>> detailsTechnicalReport)
>> .setModel(
>> new
>> CompoundPropertyModel(
>>
>> technicalReport));
>> publication =
>> technicalReport;
>>
>> } else {
>> if (publication
>>
>> .getPublicationType()
>> .getId() == 5) {
>> replaceDetails(
>>
>> detailsWorkshop)
>> .setModel(
>>
>> new CompoundPropertyModel(
>>
>> workshop));
>> publication =
>> workshop;
>>
>> }
>> }
>> }
>> }
>> }
>> }
>> }
>>
>> }
>> }));
>>
>> // clear button
>> form.add((new AjaxFallbackButton("clear", form) {
>> @Override
>> protected void onSubmit(AjaxRequestTarget target, Form form)
>> {
>> form.clearInput();
>>
>> if (target != null)
>> target.addComponent(form);
>> }
>> }).setDefaultFormProcessing(false));
>> }
>>
>> private void initDetails() {
>> // article
>> (detailsArticle = new
>> WebMarkupContainer("detailsArticle")).setVisible(
>>
>> false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(
>> true);
>> detailsArticle
>> .add(
>> new
>> TextField("journalName").setRequired(true).add(
>> StringValidator.maximumLength(128)))
>> .add(
>> new
>> TextField("volume").add(NumberValidator.range(0,
>> Short.MAX_VALUE)))
>> .add(
>> new
>> TextField("issue").add(NumberValidator.range(0,
>> Long.MAX_VALUE)))
>> .add(
>> new TextField("pages")
>> .add(StringValidator.maximumLength(64))
>> .add(
>> new PatternValidator(
>>
>> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")));
>>
>> // book
>> (detailsBook = new
>> WebMarkupContainer("detailsBook")).setVisible(false)
>>
>> .setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
>> detailsBook.add(
>> new TextField("ISBN").setRequired(true).add(
>> StringValidator.lengthBetween(10, 13)))
>> .add(
>> new TextField("series").add(StringValidator
>> .maximumLength(128))).add(
>> new TextField("edition").add(StringValidator
>> .maximumLength(64))).add(
>> new
>> TextField("volume").add(NumberValidator.range(0,
>> Short.MAX_VALUE))).add(
>> new
>> TextField("publisher.name").setRequired(true).add(
>> StringValidator.maximumLength(128))).add(
>> new
>> TextField("publisher.address").add(StringValidator
>> .maximumLength(128)));
>>
>> // book chapter
>> (detailsBookChapter = new
>> WebMarkupContainer("detailsBookChapter"))
>> .setVisible(false).setOutputMarkupId(true)
>> .setOutputMarkupPlaceholderTag(true);
>> detailsBookChapter
>> .add(
>> new TextField("bookISBN").setRequired(true).add(
>> StringValidator.lengthBetween(10, 13)))
>> .add(
>> new TextField("bookTitle").setRequired(true).add(
>> StringValidator.maximumLength(128)))
>> .add(
>> new TextField("series").add(StringValidator
>> .maximumLength(128)))
>> .add(
>> new TextField("edition").add(StringValidator
>> .maximumLength(64)))
>> .add(
>> new TextField("volume").add(
>> NumberValidator.range(0, 32767)).setType(
>> Short.class))
>> .add(
>> new TextField("pages")
>> .setRequired(true)
>> .add(StringValidator.maximumLength(64))
>> .add(
>> new PatternValidator(
>>
>> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
>> .add(
>> new
>> TextField("publisher.name").setRequired(true).add(
>> StringValidator.maximumLength(128))).add(
>> new
>> TextField("publisher.address").add(StringValidator
>> .maximumLength(128)));
>>
>> // conference paper
>> (detailsConferencePaper = new WebMarkupContainer(
>>
>> "detailsConferencePaper")).setVisible(false).setOutputMarkupId(
>> true).setOutputMarkupPlaceholderTag(true);
>> detailsConferencePaper
>> .add(
>> new
>> TextField("conferenceBookTitle").setRequired(true)
>> .add(StringValidator.maximumLength(128)))
>> .add(
>> new
>> TextField("conferenceAddress").add(StringValidator
>> .maximumLength(128)))
>> .add(
>> new TextField("pages")
>> .add(StringValidator.maximumLength(64))
>> .add(
>> new PatternValidator(
>>
>> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
>> .add(
>> new TextField("editors").add(StringValidator
>> .maximumLength(256))).add(
>> new TextField("sponsors").add(StringValidator
>> .maximumLength(512))).add(
>> new
>> TextField("publisher.address").add(StringValidator
>> .maximumLength(128))).add(
>> new
>> TextField("publisher.name").setRequired(true).add(
>> StringValidator.maximumLength(128)));
>>
>> // technical report
>> (detailsTechnicalReport = new WebMarkupContainer(
>>
>> "detailsTechnicalReport")).setVisible(false).setOutputMarkupId(
>> true).setOutputMarkupPlaceholderTag(true);
>> detailsTechnicalReport.add(
>> new DropDownChoice("type",
>> Arrays.asList(TechnicalReportType
>> .values()), new ChoiceRenderer("displayName",
>> "id")))
>> .add(
>> new
>> TextField("institution").setRequired(true).add(
>> StringValidator.maximumLength(128))).add(
>> new
>> TextField("institutionAddress").add(StringValidator
>> .maximumLength(128)));
>> // setting the default value of the technical report type to
>> // PRIMARY_RESEARCH
>> technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH);
>>
>> // workshop
>> (detailsWorkshop = new WebMarkupContainer("detailsWorkshop"))
>> .setVisible(false).setOutputMarkupId(true)
>> .setOutputMarkupPlaceholderTag(true);
>> detailsWorkshop.add(
>> new TextField("workshopTitle").setRequired(true).add(
>> StringValidator.maximumLength(128))).add(
>> new
>> TextField("workshopNumber").add(NumberValidator.range(0,
>> Long.MAX_VALUE))).add(
>> new TextField("workshopAddress").add(StringValidator
>> .maximumLength(128)));
>>
>> detailsCurrent = detailsBook;
>>
>>
>> form.add(detailsArticle).add(detailsBook).add(detailsBookChapter).add(
>> detailsConferencePaper).add(detailsConferencePaper).add(
>> detailsTechnicalReport).add(detailsWorkshop);
>> }
>>
>> private void initLists() {
>> // years
>> year = new ArrayList<Short>();
>> for (short i = (short)
>> Calendar.getInstance().get(Calendar.YEAR); i >= 1950; i--) {
>> year.add(new Short(i));
>> }
>> // setting the default value of year to current year
>> publication.setYear(new Short((short) Calendar.getInstance().get(
>> Calendar.YEAR)));
>>
>> // months
>> month = new ArrayList<Byte>();
>> for (byte i = 0; i < 12; i++) {
>> month.add(new Byte((byte) i));
>> }
>> }
>>
>> private Form replaceDetails(WebMarkupContainer replacement) {
>> detailsCurrent.setVisible(false);
>> (detailsCurrent = replacement).setVisible(true);
>> return form;
>> }
>> }
>>
>
>
--
View this message in context: http://www.nabble.com/Performance-Problem-tp24957835p24962138.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Performance Problem
Posted by Igor Vaynberg <ig...@gmail.com>.
use a profiler.
-igor
On Thu, Aug 13, 2009 at 9:10 AM, Mostafa Mohamed<es...@gmail.com> wrote:
> Hi,
>
> We're working on a wicket/spring/hibernate webapp (research
> repository) and today i was working on an 'Add Publication Panel'. i
> added some
> validation today but whenever i click on the link that shows the panel
> in the main content area it takes like 10/15 seconds to show it.
> Tomcat
> doesn't show any errors and everything is working. here's my Add
> Publication Panel. i have no idea as to what could be causing this.
>
> here's my panel's .java
>
> public class AddPublicationPanel extends BasicPanel {
>
> @SpringBean
> private IBrowseService browseService;
> @SpringBean
> private IAddEditService addEditService;
>
> @SpringBean
> private IBook book;
> @SpringBean
> private IConferencePaper conferencePaper;
> @SpringBean
> private ITechnicalReport technicalReport;
> @SpringBean
> private IWorkshop workshop;
> @SpringBean
> private IArticle article;
> @SpringBean
> private IBookChapter bookChapter;
> @SpringBean(name = "book")
> private IPublication publication;
>
> private List<Short> year;
> private List<Byte> month;
>
> private Form form;
> private WebMarkupContainer detailsBook, detailsConferencePaper,
> detailsTechnicalReport, detailsWorkshop, detailsArticle,
> detailsBookChapter, detailsCurrent;
> private AjaxFallbackLink addAuthor, removeAuthor;
>
> private AutoCompleteTextFieldUser[] authors;
>
> public AddPublicationPanel() {
> super("block", "Add Publication");
>
> initLists();
> initCommon();
> initDetails();
>
> }
>
> private void initCommon() {
> add(new FeedbackPanel("feedback"));
> add(form = new Form("form", new CompoundPropertyModel(
> publication)) {
> protected void onSubmit() {
> switch (publication.getPublicationType()) {
> case BOOK:
> break;
> case BOOK_CHAPTER:
> break;
> case ARTICLE:
> break;
> case CONFERENCE_PAPER:
> break;
> case WORKSHOP:
> break;
> case TECHNICAL_REPORT:
> break;
> }
> }
> });
> // title
> form.add(new TextField("title").setRequired(true).add(
> StringValidator.maximumLength(128)));
> // year
> form.add(new DropDownChoice("year", year));
> // month
> form.add(new DropDownChoice("month", month, new ChoiceRenderer() {
> @Override
> public Object getDisplayValue(Object object) {
> return (new DateFormatSymbols().getMonths())[((Byte) object)
> .intValue()];
> }
> }));
> // abstractText
> form.add(new TextArea("abstractText").add(StringValidator
> .maximumLength(2048))); //
> required??????????????????????????????
> // reproducible
> form.add(new CheckBox("reproducible"));
> // passwordProtected
> form.add(new CheckBox("passwordProtected"));
> // keywords
> form.add(new TextField("keywords").add(
> new PatternValidator("(\\s*\\w+\\s*,*\\s*)*,*\\s*")).add(
> StringValidator.maximumLength(2048)));
>
> // authors (internal & external)
> authors = new AutoCompleteTextFieldUser[10];
> for (int i = 0; i < 10; i++)
> // use model to set authors (internal & external)
> // later*****************
> form.add((authors[i] = new AutoCompleteTextFieldUser("author" + i))
> .setVisible(false).setOutputMarkupId(true)
> .setOutputMarkupPlaceholderTag(true));
> authors[0].setRequired(true).setVisible(true);
>
> form.add((addAuthor = (new AjaxFallbackLink("add") {
>
> @Override
> public void onClick(AjaxRequestTarget target) {
>
> int pointer;
> for (pointer = 0; pointer < 10; pointer++) {
> if (!authors[pointer].isVisible()) {
> break;
> }
> }
> if (pointer < 10) {
> authors[pointer].setVisible(true);
> if (pointer == 9)
> this.setVisible(false);
> if (pointer > 0)
> removeAuthor.setVisible(true);
>
> if (target != null) {
> target.addComponent(authors[pointer]);
> target.addComponent(removeAuthor);
> target.addComponent(this);
> }
> }
>
> }
>
> })).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
> form.add((removeAuthor = (new AjaxFallbackLink("remove") {
>
> @Override
> public void onClick(AjaxRequestTarget target) {
>
> int pointer;
> for (pointer = 0; pointer < 10; pointer++) {
> if (!authors[pointer].isVisible()) {
> break;
> }
> }
> pointer--;
> if (pointer > 0)
> authors[pointer].setVisible(false);
> if (pointer == 1)
> this.setVisible(false);
> if (pointer <= 9)
> addAuthor.setVisible(true);
>
> if (target != null) {
> target.addComponent(authors[pointer]);
> target.addComponent(addAuthor);
> target.addComponent(this);
> }
>
> }
> })).setVisible(false).setOutputMarkupId(true)
> .setOutputMarkupPlaceholderTag(true));
>
> // departments
> form.add(new ListMultipleChoice("departments",
> new LoadableDetachableModel() {
>
> @Override
> protected Object load() {
>
> return browseService.findAllDepartments();
> }
>
> }, new ChoiceRenderer("name", "id")).setRequired(true));
>
> // publicationType
> form.add((new DropDownChoice("publicationType", Arrays
> .asList(PublicationType.values()), new ChoiceRenderer(
> "displayName", "id")).setRequired(true))
> .add(new AjaxFormComponentUpdatingBehavior("onchange") {
>
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
> target.addComponent(detailsArticle);
> target.addComponent(detailsBook);
> target.addComponent(detailsBookChapter);
> target.addComponent(detailsConferencePaper);
> target.addComponent(detailsTechnicalReport);
> target.addComponent(detailsWorkshop);
>
> if (publication.getPublicationType() == null) {
> detailsCurrent.setVisible(false);
> } else {
> if (publication.getPublicationType().getId() == 0) {
> replaceDetails(detailsArticle).setModel(
> new CompoundPropertyModel(article));
> publication = article;
> } else {
> if
> (publication.getPublicationType().getId() == 1) {
> replaceDetails(detailsBook).setModel(
> new CompoundPropertyModel(book));
> publication = book;
> } else {
> if (publication.getPublicationType()
> .getId() == 2) {
> replaceDetails(detailsBookChapter)
> .setModel(
> new
> CompoundPropertyModel(
> bookChapter));
> publication = bookChapter;
>
> } else {
> if (publication.getPublicationType()
> .getId() == 3) {
> replaceDetails(
> detailsConferencePaper)
> .setModel(
> new
> CompoundPropertyModel(
>
> conferencePaper));
> publication = conferencePaper;
>
> } else {
> if (publication
> .getPublicationType()
> .getId() == 4) {
> replaceDetails(
> detailsTechnicalReport)
> .setModel(
> new
> CompoundPropertyModel(
>
> technicalReport));
> publication = technicalReport;
>
> } else {
> if (publication
> .getPublicationType()
> .getId() == 5) {
> replaceDetails(
> detailsWorkshop)
> .setModel(
>
> new CompoundPropertyModel(
>
> workshop));
> publication = workshop;
>
> }
> }
> }
> }
> }
> }
> }
>
> }
> }));
>
> // clear button
> form.add((new AjaxFallbackButton("clear", form) {
> @Override
> protected void onSubmit(AjaxRequestTarget target, Form form) {
> form.clearInput();
>
> if (target != null)
> target.addComponent(form);
> }
> }).setDefaultFormProcessing(false));
> }
>
> private void initDetails() {
> // article
> (detailsArticle = new WebMarkupContainer("detailsArticle")).setVisible(
> false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(
> true);
> detailsArticle
> .add(
> new TextField("journalName").setRequired(true).add(
> StringValidator.maximumLength(128)))
> .add(
> new TextField("volume").add(NumberValidator.range(0,
> Short.MAX_VALUE)))
> .add(
> new TextField("issue").add(NumberValidator.range(0,
> Long.MAX_VALUE)))
> .add(
> new TextField("pages")
> .add(StringValidator.maximumLength(64))
> .add(
> new PatternValidator(
>
> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")));
>
> // book
> (detailsBook = new WebMarkupContainer("detailsBook")).setVisible(false)
> .setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
> detailsBook.add(
> new TextField("ISBN").setRequired(true).add(
> StringValidator.lengthBetween(10, 13)))
> .add(
> new TextField("series").add(StringValidator
> .maximumLength(128))).add(
> new TextField("edition").add(StringValidator
> .maximumLength(64))).add(
> new TextField("volume").add(NumberValidator.range(0,
> Short.MAX_VALUE))).add(
> new TextField("publisher.name").setRequired(true).add(
> StringValidator.maximumLength(128))).add(
> new TextField("publisher.address").add(StringValidator
> .maximumLength(128)));
>
> // book chapter
> (detailsBookChapter = new WebMarkupContainer("detailsBookChapter"))
> .setVisible(false).setOutputMarkupId(true)
> .setOutputMarkupPlaceholderTag(true);
> detailsBookChapter
> .add(
> new TextField("bookISBN").setRequired(true).add(
> StringValidator.lengthBetween(10, 13)))
> .add(
> new TextField("bookTitle").setRequired(true).add(
> StringValidator.maximumLength(128)))
> .add(
> new TextField("series").add(StringValidator
> .maximumLength(128)))
> .add(
> new TextField("edition").add(StringValidator
> .maximumLength(64)))
> .add(
> new TextField("volume").add(
> NumberValidator.range(0, 32767)).setType(
> Short.class))
> .add(
> new TextField("pages")
> .setRequired(true)
> .add(StringValidator.maximumLength(64))
> .add(
> new PatternValidator(
>
> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
> .add(
> new TextField("publisher.name").setRequired(true).add(
> StringValidator.maximumLength(128))).add(
> new TextField("publisher.address").add(StringValidator
> .maximumLength(128)));
>
> // conference paper
> (detailsConferencePaper = new WebMarkupContainer(
> "detailsConferencePaper")).setVisible(false).setOutputMarkupId(
> true).setOutputMarkupPlaceholderTag(true);
> detailsConferencePaper
> .add(
> new TextField("conferenceBookTitle").setRequired(true)
> .add(StringValidator.maximumLength(128)))
> .add(
> new TextField("conferenceAddress").add(StringValidator
> .maximumLength(128)))
> .add(
> new TextField("pages")
> .add(StringValidator.maximumLength(64))
> .add(
> new PatternValidator(
>
> "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*")))
> .add(
> new TextField("editors").add(StringValidator
> .maximumLength(256))).add(
> new TextField("sponsors").add(StringValidator
> .maximumLength(512))).add(
> new TextField("publisher.address").add(StringValidator
> .maximumLength(128))).add(
> new TextField("publisher.name").setRequired(true).add(
> StringValidator.maximumLength(128)));
>
> // technical report
> (detailsTechnicalReport = new WebMarkupContainer(
> "detailsTechnicalReport")).setVisible(false).setOutputMarkupId(
> true).setOutputMarkupPlaceholderTag(true);
> detailsTechnicalReport.add(
> new DropDownChoice("type", Arrays.asList(TechnicalReportType
> .values()), new ChoiceRenderer("displayName", "id")))
> .add(
> new TextField("institution").setRequired(true).add(
> StringValidator.maximumLength(128))).add(
> new TextField("institutionAddress").add(StringValidator
> .maximumLength(128)));
> // setting the default value of the technical report type to
> // PRIMARY_RESEARCH
> technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH);
>
> // workshop
> (detailsWorkshop = new WebMarkupContainer("detailsWorkshop"))
> .setVisible(false).setOutputMarkupId(true)
> .setOutputMarkupPlaceholderTag(true);
> detailsWorkshop.add(
> new TextField("workshopTitle").setRequired(true).add(
> StringValidator.maximumLength(128))).add(
> new TextField("workshopNumber").add(NumberValidator.range(0,
> Long.MAX_VALUE))).add(
> new TextField("workshopAddress").add(StringValidator
> .maximumLength(128)));
>
> detailsCurrent = detailsBook;
>
> form.add(detailsArticle).add(detailsBook).add(detailsBookChapter).add(
> detailsConferencePaper).add(detailsConferencePaper).add(
> detailsTechnicalReport).add(detailsWorkshop);
> }
>
> private void initLists() {
> // years
> year = new ArrayList<Short>();
> for (short i = (short)
> Calendar.getInstance().get(Calendar.YEAR); i >= 1950; i--) {
> year.add(new Short(i));
> }
> // setting the default value of year to current year
> publication.setYear(new Short((short) Calendar.getInstance().get(
> Calendar.YEAR)));
>
> // months
> month = new ArrayList<Byte>();
> for (byte i = 0; i < 12; i++) {
> month.add(new Byte((byte) i));
> }
> }
>
> private Form replaceDetails(WebMarkupContainer replacement) {
> detailsCurrent.setVisible(false);
> (detailsCurrent = replacement).setVisible(true);
> return form;
> }
> }
>