View Javadoc

1   package org.apache.commons.jelly.tags.quartz;
2   
3   /*
4    * Copyright 2002,2004 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import org.apache.commons.jelly.XMLOutput;
20  
21  import org.apache.commons.jelly.JellyTagException;
22  
23  import org.quartz.Scheduler;
24  import org.quartz.SchedulerException;
25  
26  /*** Block and wait for the Quartz scheduler to shutdown.
27   *
28   *  @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
29   */
30  public class WaitForSchedulerTag extends QuartzTagSupport
31  {
32      // ------------------------------------------------------------
33      //     Constructors
34      // ------------------------------------------------------------
35  
36      /*** Construct.
37       */
38      public WaitForSchedulerTag()
39      {
40          // intentionally left blank.
41      }
42  
43      // ------------------------------------------------------------
44      //     Instance methods
45      // ------------------------------------------------------------
46  
47      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
48      //     org.apache.commons.jelly.Tag
49      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
50  
51      /*** Perform this tag.
52       *
53       *  @param output Output sink.
54       *
55       *  @throws Exception If an error occurs.
56       */
57      public void doTag(XMLOutput output) throws JellyTagException
58      {
59          try {
60              Scheduler sched = getScheduler();
61  
62              while ( ! sched.isShutdown() )
63              {
64                  try
65                  {
66                      Thread.sleep( 500 );
67                  }
68                  catch (InterruptedException e)
69                  {
70                      break;
71                  }
72              }
73          }
74          catch (SchedulerException e) {
75              throw new JellyTagException(e);
76          }
77      }
78  }
79