svn commit: r1557667 - in /sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor: HealthCheckExecutorImpl.java HealthCheckResultCache.java
Author: cziegeler Date: Mon Jan 13 09:01:27 2014 New Revision: 1557667 URL: http://svn.apache.org/r1557667 Log: SLING-3278 : Provide a HealthCheckExecutor service. Simplify code for single reference execution, remove cached entry if service is unregistered Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckResultCache.java Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java?rev=1557667r1=1557666r2=1557667view=diff == --- sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java (original) +++ sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java Mon Jan 13 09:01:27 2014 @@ -44,12 +44,17 @@ import org.apache.sling.commons.osgi.Pro import org.apache.sling.commons.threads.ModifiableThreadPoolConfig; import org.apache.sling.commons.threads.ThreadPool; import org.apache.sling.commons.threads.ThreadPoolManager; +import org.apache.sling.hc.api.HealthCheck; import org.apache.sling.hc.api.Result; import org.apache.sling.hc.api.execution.HealthCheckExecutionResult; import org.apache.sling.hc.api.execution.HealthCheckExecutor; import org.apache.sling.hc.util.HealthCheckFilter; import org.apache.sling.hc.util.HealthCheckMetadata; import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.ServiceEvent; +import org.osgi.framework.ServiceListener; import org.osgi.framework.ServiceReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -62,7 +67,7 @@ import org.slf4j.LoggerFactory; @Component(label = Apache Sling Health Check Executor, description = Runs health checks for a given list of tags in parallel., metatype = true, immediate = true) -public class HealthCheckExecutorImpl implements ExtendedHealthCheckExecutor { +public class HealthCheckExecutorImpl implements ExtendedHealthCheckExecutor, ServiceListener { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -93,7 +98,7 @@ public class HealthCheckExecutorImpl imp private long resultCacheTtlInMs; -private HealthCheckResultCache healthCheckResultCache = new HealthCheckResultCache(); +private final HealthCheckResultCache healthCheckResultCache = new HealthCheckResultCache(); private MapHealthCheckMetadata, HealthCheckFuture stillRunningFutures = new ConcurrentHashMapHealthCheckMetadata, HealthCheckFuture(); @@ -112,6 +117,14 @@ public class HealthCheckExecutorImpl imp hcThreadPool = threadPoolManager.create(hcThreadPoolConfig, Health Check Thread Pool); this.modified(properties); + +try { +this.bundleContext.addServiceListener(this, ( ++ Constants.OBJECTCLASS + = + HealthCheck.class.getName() + )); +} catch (final InvalidSyntaxException ise) { +// this should really never happen as the expression above is constant +throw new RuntimeException(Unexpected exception occured., ise); +} } @Modified @@ -137,7 +150,17 @@ public class HealthCheckExecutorImpl imp @Deactivate protected final void deactivate() { threadPoolManager.release(hcThreadPool); +this.bundleContext.removeServiceListener(this); this.bundleContext = null; +this.healthCheckResultCache.clear(); +} + +@Override +public void serviceChanged(final ServiceEvent event) { +if ( event.getType() == ServiceEvent.UNREGISTERING ) { +final Long serviceId = (Long)event.getServiceReference().getProperty(Constants.SERVICE_ID); +this.healthCheckResultCache.removeCachedResult(serviceId); +} } /** @@ -162,11 +185,8 @@ public class HealthCheckExecutorImpl imp */ @Override public HealthCheckExecutionResult execute(final ServiceReference ref) { -final ListHealthCheckExecutionResult result = this.execute(new ServiceReference[] {ref}); -if ( result.size() 0 ) { -return result.get(0); -} -return null; +final HealthCheckMetadata metadata = this.getHealthCheckMetadata(ref); +return createResultsForDescriptor(metadata); } /** @@ -177,7 +197,7 @@ public class HealthCheckExecutorImpl imp stopWatch.start(); final
svn commit: r1557739 - in /sling/trunk/bundles/extensions/healthcheck/support/src/main: java/org/apache/sling/hc/healthchecks/ java/org/apache/sling/hc/support/impl/ resources/
Author: cziegeler Date: Mon Jan 13 14:54:54 2014 New Revision: 1557739 URL: http://svn.apache.org/r1557739 Log: Inline metatype information - no functional changes Removed: sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/healthchecks/ sling/trunk/bundles/extensions/healthcheck/support/src/main/resources/ Modified: sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/DefaultLoginsHealthCheck.java sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/SlingRequestStatusHealthCheck.java Modified: sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/DefaultLoginsHealthCheck.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/DefaultLoginsHealthCheck.java?rev=1557739r1=1557738r2=1557739view=diff == --- sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/DefaultLoginsHealthCheck.java (original) +++ sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/DefaultLoginsHealthCheck.java Mon Jan 13 14:54:54 2014 @@ -48,18 +48,29 @@ import org.slf4j.LoggerFactory; name=org.apache.sling.hc.support.DefaultLoginsHealthCheck, configurationFactory=true, policy=ConfigurationPolicy.REQUIRE, -metatype=true) +metatype=true, +label=Apache Sling Default Logins Health Check, +description=Expects default logins to fail, used to verify + +that they are disabled on production systems) @Properties({ -@Property(name=HealthCheck.NAME), -@Property(name=HealthCheck.TAGS, unbounded=PropertyUnbounded.ARRAY), -@Property(name=HealthCheck.MBEAN_NAME) +@Property(name=HealthCheck.NAME, +label=Health Check Name, description=Name of this Health Check service.), +@Property(name=HealthCheck.TAGS, unbounded=PropertyUnbounded.ARRAY, + label=Health Check tags, description=List of tags for this Health Check service, used to select + + subsets of Health Check services for execution), +@Property(name=HealthCheck.MBEAN_NAME, + label=MBean Name, description=Name of the MBean to create for this Health Check.) }) @Service(value=HealthCheck.class) public class DefaultLoginsHealthCheck implements HealthCheck { private final Logger log = LoggerFactory.getLogger(getClass()); -@Property(unbounded=PropertyUnbounded.ARRAY) +@Property(unbounded=PropertyUnbounded.ARRAY, +label=Login credentials, +description=Which credentials to check. Each one is in the format \user:password\ + +like \admin:admin\ for example. Do *not* put any confidential passwords here, the goal + +is just to check that the default/demo logins, which passwords are known anyway, are disabled.) private static final String PROP_LOGINS = logins; private ListString logins; Modified: sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/SlingRequestStatusHealthCheck.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/SlingRequestStatusHealthCheck.java?rev=1557739r1=1557738r2=1557739view=diff == --- sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/SlingRequestStatusHealthCheck.java (original) +++ sling/trunk/bundles/extensions/healthcheck/support/src/main/java/org/apache/sling/hc/support/impl/SlingRequestStatusHealthCheck.java Mon Jan 13 14:54:54 2014 @@ -47,11 +47,17 @@ import org.slf4j.LoggerFactory; name=org.apache.sling.hc.support.SlingRequestStatusHealthCheck, configurationFactory=true, policy=ConfigurationPolicy.REQUIRE, -metatype=true) +metatype=true, +label=Apache Sling Request Status Health Check, +description=Checks the HTTP status of Sling requests.) @Properties({ -@Property(name=HealthCheck.NAME), -@Property(name=HealthCheck.TAGS, unbounded=PropertyUnbounded.ARRAY), -@Property(name=HealthCheck.MBEAN_NAME) +@Property(name=HealthCheck.NAME, +label=Health Check Name, description=Name of this Health Check service.), +@Property(name=HealthCheck.TAGS, unbounded=PropertyUnbounded.ARRAY, + label=Health Check tags, description=List of tags for this Health Check service, used to select + + subsets of Health Check services for execution), +@Property(name=HealthCheck.MBEAN_NAME, + label=MBean Name, description=Name of the MBean to
svn commit: r1557742 - /sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java
Author: cziegeler Date: Mon Jan 13 14:58:39 2014 New Revision: 1557742 URL: http://svn.apache.org/r1557742 Log: Correct metatype info Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java Modified: sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java?rev=1557742r1=1557741r2=1557742view=diff == --- sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java (original) +++ sling/trunk/bundles/servlets/post/src/main/java/org/apache/sling/servlets/post/impl/helper/ChunkCleanUpTask.java Mon Jan 13 14:58:39 2014 @@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory; * default workspace assuming users are stored in that workspace and the * administrative user has full access. */ -@Component(metatype = true, label = Sling Post Chunk Upload : Cleanup Task, description = Task to regularly purge incomplete chunks from the repository) +@Component(metatype = true, label = Apache Sling Post Chunk Upload : Cleanup Task, description = Task to regularly purge incomplete chunks from the repository) @Service(value = Runnable.class) @Properties({ @Property(name = scheduler.expression, value = 31 41 0/12 * * ?, label = Schedule, description = Cron expression scheudling this job. Default is hourly 17m23s after the hour. @@ -158,7 +158,7 @@ public class ChunkCleanUpTask implements * eligible the age of last * {@link SlingPostConstants#NT_SLING_CHUNK_NODETYPE} uploaded should be * greater than @link {@link #chunkCleanUpAge} - * + * * @param node {@link Node} containing *{@link SlingPostConstants#NT_SLING_CHUNK_NODETYPE} *{@link Node}s
[CONF] Apache Sling Sling book
Robert Munteanu created a page: Sling book Page for gathering objectives and implementation ideas regarding the Sling book initiative initially discussed in the [Happy new year] A new year with Sling (2013 Recap and a whishlist for 2014) mailing list thread. Requirements ( unstructured ) The golden goal would be a book covering all the stable parts of sling. IMHO it is essential for the success of Sling in the next years to flatten the learningcurve. Implementation ideas use the recently contributed samples/mail-archive as the supporting app for a more complete description of how to write Sling apps View Online Like Stop watching space Manage Notifications This message was sent by Atlassian Confluence 5.0.3, Team Collaboration Software
svn commit: r1557909 - in /sling/trunk/bundles/scripting/javascript: ./ src/main/java/org/apache/sling/scripting/javascript/wrapper/
Author: fmeschbe Date: Tue Jan 14 02:35:01 2014 New Revision: 1557909 URL: http://svn.apache.org/r1557909 Log: SLING-3308 Upgrade to Rhino 1.7R4 Apply extended patch by Rohit Kumar (Thanks alot !). Extensions to the original patch are checking all wrapper objects whether the wrapped field needs a null check. Modified: sling/trunk/bundles/scripting/javascript/pom.xml sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableItemMap.java sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableNode.java sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableProperty.java sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableResource.java Modified: sling/trunk/bundles/scripting/javascript/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/pom.xml?rev=1557909r1=1557908r2=1557909view=diff == --- sling/trunk/bundles/scripting/javascript/pom.xml (original) +++ sling/trunk/bundles/scripting/javascript/pom.xml Tue Jan 14 02:35:01 2014 @@ -137,9 +137,9 @@ artifactIdjcr/artifactId /dependency dependency -groupIdrhino/groupId -artifactIdjs/artifactId -version1.6R6/version +groupIdorg.mozilla/groupId +artifactIdrhino/artifactId +version1.7R4/version /dependency dependency groupIdorg.slf4j/groupId Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java?rev=1557909r1=1557908r2=1557909view=diff == --- sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java (original) +++ sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableCalendar.java Tue Jan 14 02:35:01 2014 @@ -19,7 +19,6 @@ package org.apache.sling.scripting.javas import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; - import org.apache.sling.scripting.javascript.SlingWrapper; import org.mozilla.javascript.ScriptRuntime; import org.mozilla.javascript.Scriptable; @@ -31,12 +30,17 @@ public class ScriptableCalendar extends public static final String CLASSNAME = Calendar; private SimpleDateFormat calendarFormat; - + /** Calendar is a class, not an interface - so we need to enumerate possible implementations here */ public static final Class? [] WRAPPED_CLASSES = { Calendar.class, GregorianCalendar.class }; +/** + * The wrapped Calendar. Will be {@code null} if the + * {@link #jsConstructor(Object)} method is not called, which particularly + * is the case for the Calendar host object prototype. + */ private Calendar calendar; - + public Class?[] getWrappedClasses() { return WRAPPED_CLASSES; } @@ -44,7 +48,7 @@ public class ScriptableCalendar extends public void jsConstructor(Object o) { this.calendar = (Calendar) o; } - + @Override public Object get(String name, Scriptable start) { @@ -57,14 +61,14 @@ public class ScriptableCalendar extends if(calendar == null) { return Undefined.instance; } - + if(date.equals(name)) { return ScriptRuntime.toObject(this, calendar.getTime()); } - + return getNative(name, start); } - + @Override protected Class? getStaticType() { return Calendar.class; @@ -92,7 +96,7 @@ public class ScriptableCalendar extends } return calendarFormat.format(calendar.getTime()); } - + public Object unwrap() { return calendar; } Modified: sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableItemMap.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/wrapper/ScriptableItemMap.java?rev=1557909r1=1557908r2=1557909view=diff == ---