You can use MyApp.get().setMetaData() and MyApp.get().getMetaData() François Meillet Formation Wicket - Développement Wicket
Le 6 mai 2014 à 14:50, Richard W. Adams <rwada...@up.com> a écrit : > Are you referring to org.apache.wicket.Application? I don't see a > getTasksMap() method there. We use Wicket 1.4.17 & our company will not > allow us to upgrade to newer versions). If getTasksMap() is unavailable in > 1.4.17, could Application.getSharedResources() be used in a similar way? > > > > > From: Martin Grigorov <mgrigo...@apache.org> > To: "users@wicket.apache.org" <users@wicket.apache.org> > Date: 05/06/2014 07:26 AM > Subject: Re: Background Threading > > > > Hi, > > You can put the tasks in an application scoped structure (e.g. > MyApplication.get().getTasksMap()) and use a serializable key. > > Martin Grigorov > Wicket Training and Consulting > > > On Tue, May 6, 2014 at 2:11 PM, Richard W. Adams <rwada...@up.com> wrote: > >> Interesting approach. Our use case is more complex, as it runs a >> background task in a separate thread. Our task has three basic >> requirements. It must: >> >> 1. Be cancellable. >> >> 2. Report its outcome (success/failure/warning). >> >> 3. Report incremental progress. >> >> Our fundamental problem is not how to display the progress bar, it's how >> to determine the outcome of the background thread. That's an > unexpectedly >> a tough nut to crack. The vast majority of examples we've seen use the >> Runnable interface (which doesn't help us, as it can't be canceled or >> return a value), rather than Callable interface (which meets our needs, >> but doesn't seem to play well with Wicket) >> >> >> >> >> From: Colin Rogers <colin.rog...@objectconsulting.com.au> >> To: "users@wicket.apache.org" <users@wicket.apache.org> >> Date: 05/05/2014 08:14 PM >> Subject: RE: Progress Bar >> >> >> >> There is a pretty nifty, jquery based progress bar, in wicket-jquery-ui >> library... >> >> > http://www.7thweb.net/wicket-jquery-ui/progressbar/DefaultProgressBarPage >> >> Cheers, >> Col. >> >> -----Original Message----- >> From: Richard W. Adams [mailto:rwada...@up.com] >> Sent: Tuesday, 6 May 2014 3:19 AM >> To: users@wicket.apache.org >> Subject: Progress Bar >> >> We have a requirement to implement a progress bar for long-running > server >> operations. We can't use the code at >> https://github.com/wicketstuff/core/wiki/Progressbar, because it doesn't >> meet our corporate user interface look-and-feel standards. >> >> So, we started our own implementation. Our test page contains these >> methods below (the TestExecutor below class implements >> Callable<ExecutorResult>). >> >> >> > //---------------------------------------------------------------------------------------------- >> private Component createButton() { >> return new AjaxButton("start-button") { >> private static final long serialVersionUID = -1; >> >> @Override protected void onSubmit(final > AjaxRequestTarget >> ajax, final Form<?> form) { >> >> final ExecutorService service = Executors. >> newSingleThreadExecutor(); >> try { >> final ProgressBarTestPage page = >> ProgressBarTestPage.this; >> final TransactionData data = new >> TransactionData (page.getId(), false); >> final TestExecutor executor = new >> TestExecutor(data, getPermissions()); >> >> executor.addListener(page); // > Request >> notification when done >> future = service.submit(executor); // >> Begin execution >> progressBarUpdater.start(ajax, > executor); >> // Start polling for progress >> >> } catch (final Exception ex) { >> throw new RuntimeException(ex); >> } >> service.shutdown(); // Terminate gracefully >> (VM probably >> } // won't exit if we fail to do > this) >> }; >> } >> >> > //---------------------------------------------------------------------------------------------- >> /** >> Observer Pattern method to let us know when the task is done so we > can >> check how things went. >> */ >> @Override public void executionComplete(final EnmCallableExecutor >> executor) { >> >> try { >> if (!future.isCancelled()) { // >> Unless execution was canceled >> final ExecutorResult result = future.get(); // >> Get the outcome >> System.out.println(result); >> /* >> * TODO: Show success or error message >> */ >> } >> } catch (final Exception ex) { >> ex.printStackTrace(); >> } >> } >> >> The ProgessBarUpdater class has this method: >> >> >> > //---------------------------------------------------------------------------------------------- >> /** >> * Displays the progress bar & begins the polling. We don't start > the >> polling until >> * explicitly told to do, for efficiency purposes. >> * @param ajax The Ajax request wrapper. >> * @param reporter The object to query for progress data. >> */ >> public void start(final AjaxRequestTarget ajax, final ProgressReporter >> reporter) { >> >> add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(2)) { >> private static final long serialVersionUID = 1L; >> >> @Override protected void onPostProcessTarget(final >> AjaxRequestTarget ajax) { >> >> final Progress progress = > reporter.getProgress(); >> final String script = // Build >> script to update >> ProgressScript.build(progress); // >> progress bar >> ajax.appendJavascript(script); >> if (progress == null) { // If >> operation is finished >> final ProgressBarUpdater updater = >> ProgressBarUpdater.this; >> updater.remove(this); // >> Stop timer to prevent >> ajax.addComponent(updater); // > pointless >> polling >> } >> } >> }); >> ajax.addComponent(this); >> } >> >> The page also contains a Future object so we can check the result after >> the thread finishes: >> >> private Future<ExecutorResult> future; >> >> __________________________________________ >> >> Having said all that, here's the problem: When I click the page's > button, >> Wicket throws this error: >> >> Unable to serialize class: java.util.concurrent.FutureTask >> >> The FutureTask object, I believe, is coming from the service.submit call >> whose return value we store in our Future variable. >> >> Does anyone know how to get around this roadblock? >> >> >> >> ** >> >> This email and any attachments may contain information that is >> confidential and/or privileged for the sole use of the intended > recipient. >> Any use, review, disclosure, copying, distribution or reliance by > others, >> and any forwarding of this email or its contents, without the express >> permission of the sender is strictly prohibited by law. If you are not >> the intended recipient, please contact the sender immediately, delete > the >> e-mail and destroy all copies. >> ** >> EMAIL DISCLAIMER This email message and its attachments are confidential >> and may also contain copyright or privileged material. If you are not > the >> intended recipient, you may not forward the email or disclose or use the >> information contained in it. If you have received this email message in >> error, please advise the sender immediately by replying to this email > and >> delete the message and any associated attachments. Any views, opinions, >> conclusions, advice or statements expressed in this email message are >> those of the individual sender and should not be relied upon as the >> considered view, opinion, conclusions, advice or statement of this > company >> except where the sender expressly, and with authority, states them to be >> the considered view, opinion, conclusions, advice or statement of this >> company. Every care is taken but we recommend that you scan any >> attachments for viruses. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> >> >> ** >> >> This email and any attachments may contain information that is >> confidential and/or privileged for the sole use of the intended > recipient. >> Any use, review, disclosure, copying, distribution or reliance by > others, >> and any forwarding of this email or its contents, without the express >> permission of the sender is strictly prohibited by law. If you are not > the >> intended recipient, please contact the sender immediately, delete the >> e-mail and destroy all copies. >> ** >> > > > > ** > > This email and any attachments may contain information that is confidential > and/or privileged for the sole use of the intended recipient. Any use, > review, disclosure, copying, distribution or reliance by others, and any > forwarding of this email or its contents, without the express permission of > the sender is strictly prohibited by law. If you are not the intended > recipient, please contact the sender immediately, delete the e-mail and > destroy all copies. > **