Changeset 752:82fdff343778
- Timestamp:
- 01/02/12 16:13:13 (5 months ago)
- Branch:
- default
- Files:
-
- 1 added
- 1 deleted
- 12 edited
-
kraken-core/pom.xml (modified) (2 diffs)
-
kraken-core/src/main/java/org/krakenapps/main/Kraken.java (modified) (4 diffs)
-
kraken-core/src/main/resources/system.packages (modified) (1 diff)
-
kraken-cron/pom.xml (modified) (3 diffs)
-
kraken-cron/src/main/java/org/krakenapps/cron/CronScript.java (deleted)
-
kraken-cron/src/main/java/org/krakenapps/cron/CronService.java (modified) (1 diff)
-
kraken-cron/src/main/java/org/krakenapps/cron/Schedule.java (modified) (6 diffs)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronConfig.java (modified) (1 diff)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronScript.java (added)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronScriptFactory.java (modified) (2 diffs)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronServiceImpl.java (modified) (5 diffs)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/IllegalTypeException.java (modified) (1 diff)
-
kraken-cron/src/main/java/org/krakenapps/cron/impl/Scheduler.java (modified) (3 diffs)
-
kraken-cron/src/main/resources/metadata.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kraken-core/pom.xml
r749 r752 9 9 </parent> 10 10 <artifactId>kraken-core</artifactId> 11 <version>1.1 0.1</version>11 <version>1.11.0</version> 12 12 <name>Kraken Core</name> 13 13 <packaging>jar</packaging> … … 32 32 <artifactId>kraken-api</artifactId> 33 33 <version>1.9.8</version> 34 </dependency> 35 <dependency> 36 <groupId>org.krakenapps</groupId> 37 <artifactId>kraken-cron</artifactId> 38 <version>1.6.0</version> 34 39 </dependency> 35 40 <dependency> -
kraken-core/src/main/java/org/krakenapps/main/Kraken.java
r732 r752 63 63 import org.krakenapps.console.TelnetCodecFactory; 64 64 import org.krakenapps.console.TelnetHandler; 65 import org.krakenapps.cron.CronService; 66 import org.krakenapps.cron.impl.CronScriptFactory; 67 import org.krakenapps.cron.impl.CronServiceImpl; 65 68 import org.krakenapps.instrumentation.InstrumentationServiceImpl; 66 69 import org.krakenapps.keystore.KeyStoreScriptFactory; … … 115 118 private ConfigService conf; 116 119 private AuthService auth; 120 private CronService cron; 117 121 118 122 private static boolean serviceMode = false; … … 345 349 conf = new FileConfigService(); 346 350 auth = new DefaultAuthService(context, conf); 351 cron = new CronServiceImpl(context); 347 352 348 353 registerScripts(context); … … 387 392 registerScriptFactory(context, new ConfScriptFactory(conf), "conf"); 388 393 registerScriptFactory(context, new AuthScriptFactory(auth), "auth"); 394 registerScriptFactory(context, new CronScriptFactory(context, cron), "cron"); 389 395 registerScriptFactory(context, BatchScriptFactory.class, "batch"); 396 397 Kraken.getContext().registerService(CronService.class.getName(), cron, null); 390 398 } 391 399 -
kraken-core/src/main/resources/system.packages
r606 r752 18 18 org.krakenapps.confdb.file; version=0.3.0, 19 19 org.krakenapps.codec; version=2.1.0, 20 org.krakenapps.cron; version=1.6.0, 20 21 javax.naming, 21 22 javax.naming.directory, -
kraken-cron/pom.xml
r2 r752 12 12 <packaging>bundle</packaging> 13 13 <name>Kraken Cron</name> 14 <version>1. 5.0</version>14 <version>1.6.0</version> 15 15 <build> 16 16 <plugins> … … 54 54 <groupId>org.krakenapps</groupId> 55 55 <artifactId>kraken-api</artifactId> 56 <version>1. 6.0</version>56 <version>1.9.8</version> 57 57 </dependency> 58 58 <dependency> … … 79 79 <groupId>org.krakenapps</groupId> 80 80 <artifactId>kraken-msgbus</artifactId> 81 <version>1. 0.0</version>81 <version>1.4.0</version> 82 82 <optional>true</optional> 83 83 </dependency> -
kraken-cron/src/main/java/org/krakenapps/cron/CronService.java
r2 r752 26 26 */ 27 27 public interface CronService { 28 29 28 int registerSchedule(Schedule schedule); 30 29 -
kraken-cron/src/main/java/org/krakenapps/cron/Schedule.java
r2 r752 30 30 */ 31 31 public final class Schedule { 32 33 32 /** 34 33 * fieldName to CronField mapping … … 37 36 private final String taskName; 38 37 39 private Schedule() throws Exception{40 map = null;41 t askName = null;38 private Schedule() { 39 this.map = null; 40 this.taskName = null; 42 41 } 43 42 … … 69 68 @Override 70 69 public String toString() { 71 return String.format("%8s %8s %8s %8s %8s / %8s", map.get("Minute"), map.get("Hour"), map.get("DayOfMonth"), 72 map.get(" Month"), map.get("DayOfWeek"), taskName);70 return String.format("%8s %8s %8s %8s %8s / %8s", map.get("Minute"), map.get("Hour"), map.get("DayOfMonth"), map.get("Month"), 71 map.get("DayOfWeek"), taskName); 73 72 } 74 73 … … 124 123 /** 125 124 * Set cron field with given expression. Following expressions are 126 * supported. 127 * 1. comma(',') as list. e.g:"1,3,4,8" (space inside the list must not be used)128 * 2. dash('-') as range. e.g:"1-6", which means 1 to 6129 * 3. asterisk('*') as wild. e.g:"*", which means every~130 * 4. slash('/') as interval. e.g:"* /5" which means every five~ (withoutwhitespace)125 * supported. 1. comma(',') as list. e.g:"1,3,4,8" (space inside the 126 * list must not be used) 2. dash('-') as range. e.g:"1-6", which means 127 * 1 to 6 3. asterisk('*') as wild. e.g:"*", which means every~ 4. 128 * slash('/') as interval. e.g:"* /5" which means every five~ (without 129 * whitespace) 131 130 */ 132 131 public Builder set(CronField.Type type, String exp) throws ParseException { … … 136 135 137 136 /** 138 * returns schedule object representing scheduling rule of current build object. 139 * e.g. new Schedule.Builder("test").set(CronField.Type.Minute,"5").build(); 137 * returns schedule object representing scheduling rule of current build 138 * object. e.g. new 139 * Schedule.Builder("test").set(CronField.Type.Minute,"5").build(); 140 140 * represents schedule of "5 * * * * / test" 141 141 */ … … 206 206 } 207 207 208 209 208 } -
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronConfig.java
r2 r752 35 35 */ 36 36 public class CronConfig { 37 final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName());37 private final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 38 38 private Preferences prefs; 39 39 private AtomicInteger maxId = new AtomicInteger(); -
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronScriptFactory.java
r2 r752 16 16 package org.krakenapps.cron.impl; 17 17 18 import org.apache.felix.ipojo.annotations.Component;19 import org.apache.felix.ipojo.annotations.Provides;20 import org.apache.felix.ipojo.annotations.Requires;21 import org.apache.felix.ipojo.annotations.ServiceProperty;22 18 import org.krakenapps.api.Script; 23 19 import org.krakenapps.api.ScriptFactory; 24 import org.krakenapps.cron.CronScript;25 20 import org.krakenapps.cron.CronService; 26 27 21 import org.osgi.framework.BundleContext; 28 22 … … 33 27 * @since 1.0.0 34 28 */ 35 @Component(name = "cron-script-factory")36 @Provides37 29 public class CronScriptFactory implements ScriptFactory { 38 @SuppressWarnings("unused") 39 @ServiceProperty(name = "alias", value = "cron") 40 private String alias; 41 42 @Requires 30 private BundleContext context; 43 31 private CronService cron; 44 32 45 private BundleContext context; 46 47 public CronScriptFactory(BundleContext context) { 33 public CronScriptFactory(BundleContext context, CronService cron) { 48 34 this.context = context; 35 this.cron = cron; 49 36 } 50 37 -
kraken-cron/src/main/java/org/krakenapps/cron/impl/CronServiceImpl.java
r2 r752 25 25 import java.util.concurrent.ConcurrentMap; 26 26 27 import org.apache.felix.ipojo.annotations.Component;28 import org.apache.felix.ipojo.annotations.Invalidate;29 import org.apache.felix.ipojo.annotations.Provides;30 import org.apache.felix.ipojo.annotations.Validate;31 27 import org.krakenapps.cron.CronService; 32 28 import org.krakenapps.cron.DuplicatedScheduleException; 33 29 import org.krakenapps.cron.Schedule; 34 35 30 import org.osgi.framework.BundleContext; 36 31 import org.osgi.framework.InvalidSyntaxException; … … 45 40 * @since 1.0.0 46 41 */ 47 @Component(name = "cron-service")48 @Provides49 42 public class CronServiceImpl implements CronService { 50 43 private static BundleContext bundleContext; … … 62 55 this.config = new CronConfig(getSystemPrefs()); 63 56 refreshMap(); 57 scheduler.start(getMap()); 58 tracker.open(); 64 59 } 65 60 … … 89 84 config.removeEntry(i); 90 85 scheduler.remove(i); 91 }92 93 /**94 * start scheduler95 */96 @Validate97 public void validate() {98 scheduler.start(getMap());99 tracker.open();100 }101 102 /**103 * stop scheduler104 */105 @Invalidate106 public void invalidate() {107 tracker.close();108 scheduler.stop();109 86 } 110 87 … … 155 132 */ 156 133 private static Runnable getRef(BundleContext context, String instanceName) throws InvalidSyntaxException { 157 ServiceReference[] refs = context.getServiceReferences(Runnable.class.getName(), "(instance.name=" 158 + instanceName + ")"); 134 ServiceReference[] refs = context.getServiceReferences(Runnable.class.getName(), "(instance.name=" + instanceName + ")"); 159 135 if (refs == null || refs.length == 0) { 160 136 throw new NullPointerException(); -
kraken-cron/src/main/java/org/krakenapps/cron/impl/IllegalTypeException.java
r2 r752 28 28 super(string); 29 29 } 30 31 30 } -
kraken-cron/src/main/java/org/krakenapps/cron/impl/Scheduler.java
r2 r752 31 31 */ 32 32 public class Scheduler { 33 34 final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 33 private final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 35 34 private PriorityQueue<Job> queue; 36 35 private final Thread loop = new Thread(new Loop()); 37 36 private boolean running; 38 39 public void stop() {40 running = false;41 }42 37 43 38 public void start(Map<Integer, Schedule> map) { … … 45 40 running = true; 46 41 loop.start(); 42 } 43 44 public void stop() { 45 running = false; 47 46 } 48 47 … … 172 171 job.run(); 173 172 } catch (NullPointerException e) { 174 logger.debug("Cron: unable to run " + job + ". runnable \'" + job.schedule.getTaskName() 175 + "\' is not active."); 173 logger.debug("Cron: unable to run " + job + ". runnable \'" + job.schedule.getTaskName() + "\' is not active."); 176 174 } catch (InvalidSyntaxException e) { 177 175 logger.warn("Cron: scheduler instance.name syntax error.", e); -
kraken-cron/src/main/resources/metadata.xml
r2 r752 2 2 xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd" 3 3 xmlns="org.apache.felix.ipojo"> 4 <instance component="cron-script-factory" />5 <instance component="cron-service" />6 4 <instance component="cron-plugin" /> 7 5 </ipojo>
Note: See TracChangeset
for help on using the changeset viewer.
