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 &amp; 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.
> **

Reply via email to