#
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
#
h1. Synopsis

	${project.name}

	${project.description}

	Maven URL:
		[mvn:${project.groupId}/${project.artifactId}/${project.version}]

h1. Description

	This bundle registers a service listener, which listens from service events related to java.lang.Runnable and org.apache.karaf.scheduler.Job interface.
	Each service with such interface may be added the following properties:
		* scheduler.name
		* scheduler.period
		* scheduler.expression
		* scheduler.immediate
		* scheduler.concurrent

	One of scheduler.period or scheduler.expression is mandatory.

h1. Commands

	The bundle contains the following commands:
\${command-list|scheduler|indent=8,list,cyan}


