Changeset 752:82fdff343778


Ignore:
Timestamp:
01/02/12 16:13:13 (5 months ago)
Author:
delmitz@delmitz-PC.office.nchovy.net
Branch:
default
Message:

added CronService to system packages.
removed ServiceProperty dependency.

Files:
1 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • kraken-core/pom.xml

    r749 r752  
    99        </parent> 
    1010        <artifactId>kraken-core</artifactId> 
    11         <version>1.10.1</version> 
     11        <version>1.11.0</version> 
    1212        <name>Kraken Core</name> 
    1313        <packaging>jar</packaging> 
     
    3232                        <artifactId>kraken-api</artifactId> 
    3333                        <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> 
    3439                </dependency> 
    3540                <dependency> 
  • kraken-core/src/main/java/org/krakenapps/main/Kraken.java

    r732 r752  
    6363import org.krakenapps.console.TelnetCodecFactory; 
    6464import org.krakenapps.console.TelnetHandler; 
     65import org.krakenapps.cron.CronService; 
     66import org.krakenapps.cron.impl.CronScriptFactory; 
     67import org.krakenapps.cron.impl.CronServiceImpl; 
    6568import org.krakenapps.instrumentation.InstrumentationServiceImpl; 
    6669import org.krakenapps.keystore.KeyStoreScriptFactory; 
     
    115118        private ConfigService conf; 
    116119        private AuthService auth; 
     120        private CronService cron; 
    117121 
    118122        private static boolean serviceMode = false; 
     
    345349                conf = new FileConfigService(); 
    346350                auth = new DefaultAuthService(context, conf); 
     351                cron = new CronServiceImpl(context); 
    347352 
    348353                registerScripts(context); 
     
    387392                registerScriptFactory(context, new ConfScriptFactory(conf), "conf"); 
    388393                registerScriptFactory(context, new AuthScriptFactory(auth), "auth"); 
     394                registerScriptFactory(context, new CronScriptFactory(context, cron), "cron"); 
    389395                registerScriptFactory(context, BatchScriptFactory.class, "batch"); 
     396 
     397                Kraken.getContext().registerService(CronService.class.getName(), cron, null); 
    390398        } 
    391399 
  • kraken-core/src/main/resources/system.packages

    r606 r752  
    1818org.krakenapps.confdb.file; version=0.3.0, 
    1919org.krakenapps.codec; version=2.1.0, 
     20org.krakenapps.cron; version=1.6.0, 
    2021javax.naming,  
    2122javax.naming.directory,  
  • kraken-cron/pom.xml

    r2 r752  
    1212        <packaging>bundle</packaging> 
    1313        <name>Kraken Cron</name> 
    14         <version>1.5.0</version> 
     14        <version>1.6.0</version> 
    1515        <build> 
    1616                <plugins> 
     
    5454                        <groupId>org.krakenapps</groupId> 
    5555                        <artifactId>kraken-api</artifactId> 
    56                         <version>1.6.0</version> 
     56                        <version>1.9.8</version> 
    5757                </dependency> 
    5858                <dependency> 
     
    7979                        <groupId>org.krakenapps</groupId> 
    8080                        <artifactId>kraken-msgbus</artifactId> 
    81                         <version>1.0.0</version> 
     81                        <version>1.4.0</version> 
    8282                        <optional>true</optional> 
    8383                </dependency> 
  • kraken-cron/src/main/java/org/krakenapps/cron/CronService.java

    r2 r752  
    2626 */ 
    2727public interface CronService { 
    28  
    2928        int registerSchedule(Schedule schedule); 
    3029 
  • kraken-cron/src/main/java/org/krakenapps/cron/Schedule.java

    r2 r752  
    3030 */ 
    3131public final class Schedule { 
    32  
    3332        /** 
    3433         * fieldName to CronField mapping 
     
    3736        private final String taskName; 
    3837 
    39         private Schedule() throws Exception { 
    40                 map = null; 
    41                 taskName = null; 
     38        private Schedule() { 
     39                this.map = null; 
     40                this.taskName = null; 
    4241        } 
    4342 
     
    6968        @Override 
    7069        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); 
    7372        } 
    7473 
     
    124123                /** 
    125124                 * 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 6  
    129                  * 3. asterisk('*') as wild. e.g:"*", which means every~  
    130                  * 4. slash('/') as interval. e.g:"* /5" which means every five~ (without whitespace) 
     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) 
    131130                 */ 
    132131                public Builder set(CronField.Type type, String exp) throws ParseException { 
     
    136135 
    137136                /** 
    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(); 
    140140                 * represents schedule of "5 * * * * / test" 
    141141                 */ 
     
    206206        } 
    207207 
    208  
    209208} 
  • kraken-cron/src/main/java/org/krakenapps/cron/impl/CronConfig.java

    r2 r752  
    3535 */ 
    3636public class CronConfig { 
    37         final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 
     37        private final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 
    3838        private Preferences prefs; 
    3939        private AtomicInteger maxId = new AtomicInteger(); 
  • kraken-cron/src/main/java/org/krakenapps/cron/impl/CronScriptFactory.java

    r2 r752  
    1616package org.krakenapps.cron.impl; 
    1717 
    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; 
    2218import org.krakenapps.api.Script; 
    2319import org.krakenapps.api.ScriptFactory; 
    24 import org.krakenapps.cron.CronScript; 
    2520import org.krakenapps.cron.CronService; 
    26  
    2721import org.osgi.framework.BundleContext; 
    2822 
     
    3327 * @since 1.0.0 
    3428 */ 
    35 @Component(name = "cron-script-factory") 
    36 @Provides 
    3729public class CronScriptFactory implements ScriptFactory { 
    38         @SuppressWarnings("unused") 
    39         @ServiceProperty(name = "alias", value = "cron") 
    40         private String alias; 
    41  
    42         @Requires 
     30        private BundleContext context; 
    4331        private CronService cron; 
    4432 
    45         private BundleContext context; 
    46  
    47         public CronScriptFactory(BundleContext context) { 
     33        public CronScriptFactory(BundleContext context, CronService cron) { 
    4834                this.context = context; 
     35                this.cron = cron; 
    4936        } 
    5037 
  • kraken-cron/src/main/java/org/krakenapps/cron/impl/CronServiceImpl.java

    r2 r752  
    2525import java.util.concurrent.ConcurrentMap; 
    2626 
    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; 
    3127import org.krakenapps.cron.CronService; 
    3228import org.krakenapps.cron.DuplicatedScheduleException; 
    3329import org.krakenapps.cron.Schedule; 
    34  
    3530import org.osgi.framework.BundleContext; 
    3631import org.osgi.framework.InvalidSyntaxException; 
     
    4540 * @since 1.0.0 
    4641 */ 
    47 @Component(name = "cron-service") 
    48 @Provides 
    4942public class CronServiceImpl implements CronService { 
    5043        private static BundleContext bundleContext; 
     
    6255                this.config = new CronConfig(getSystemPrefs()); 
    6356                refreshMap(); 
     57                scheduler.start(getMap()); 
     58                tracker.open(); 
    6459        } 
    6560 
     
    8984                config.removeEntry(i); 
    9085                scheduler.remove(i); 
    91         } 
    92  
    93         /** 
    94          * start scheduler 
    95          */ 
    96         @Validate 
    97         public void validate() { 
    98                 scheduler.start(getMap()); 
    99                 tracker.open(); 
    100         } 
    101  
    102         /** 
    103          * stop scheduler 
    104          */ 
    105         @Invalidate 
    106         public void invalidate() { 
    107                 tracker.close(); 
    108                 scheduler.stop(); 
    10986        } 
    11087 
     
    155132         */ 
    156133        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 + ")"); 
    159135                if (refs == null || refs.length == 0) { 
    160136                        throw new NullPointerException(); 
  • kraken-cron/src/main/java/org/krakenapps/cron/impl/IllegalTypeException.java

    r2 r752  
    2828                super(string); 
    2929        } 
    30  
    3130} 
  • kraken-cron/src/main/java/org/krakenapps/cron/impl/Scheduler.java

    r2 r752  
    3131 */ 
    3232public class Scheduler { 
    33  
    34         final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 
     33        private final Logger logger = LoggerFactory.getLogger(CronConfig.class.getName()); 
    3534        private PriorityQueue<Job> queue; 
    3635        private final Thread loop = new Thread(new Loop()); 
    3736        private boolean running; 
    38  
    39         public void stop() { 
    40                 running = false; 
    41         } 
    4237 
    4338        public void start(Map<Integer, Schedule> map) { 
     
    4540                running = true; 
    4641                loop.start(); 
     42        } 
     43 
     44        public void stop() { 
     45                running = false; 
    4746        } 
    4847 
     
    172171                                job.run(); 
    173172                        } 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."); 
    176174                        } catch (InvalidSyntaxException e) { 
    177175                                logger.warn("Cron: scheduler instance.name syntax error.", e); 
  • kraken-cron/src/main/resources/metadata.xml

    r2 r752  
    22        xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd" 
    33        xmlns="org.apache.felix.ipojo"> 
    4         <instance component="cron-script-factory" /> 
    5         <instance component="cron-service" /> 
    64        <instance component="cron-plugin" /> 
    75</ipojo> 
Note: See TracChangeset for help on using the changeset viewer.