You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/05/28 17:46:17 UTC

svn commit: r1486973 - in /sling/trunk/launchpad/base/src: main/java/org/apache/sling/launchpad/base/impl/StartupManager.java test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java

Author: bdelacretaz
Date: Tue May 28 15:46:17 2013
New Revision: 1486973

URL: http://svn.apache.org/r1486973
Log:
SLING-2889 - fix StartupManager.getTimeStampOfClass, with test

Added:
    sling/trunk/launchpad/base/src/test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java
Modified:
    sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/StartupManager.java

Modified: sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/StartupManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/StartupManager.java?rev=1486973&r1=1486972&r2=1486973&view=diff
==============================================================================
--- sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/StartupManager.java (original)
+++ sling/trunk/launchpad/base/src/main/java/org/apache/sling/launchpad/base/impl/StartupManager.java Tue May 28 15:46:17 2013
@@ -172,7 +172,7 @@ public class StartupManager {
     /**
      * Get the time stamp of a class through its url classloader (if possible)
      */
-    private long getTimeStampOfClass(final Class<?> clazz, final long selfStamp) {
+    long getTimeStampOfClass(final Class<?> clazz, final long selfStamp) {
         long timeStamp = selfStamp;
         final ClassLoader loader = clazz.getClassLoader();
         if (loader instanceof URLClassLoader) {
@@ -184,7 +184,7 @@ public class StartupManager {
                     final long stamp = urls[0].openConnection().getLastModified();
                     if ( stamp > selfStamp ) {
                         logger.log(Logger.LOG_INFO, String.format("Newer timestamp for %s from %s : %s", clazz.getName(), url, selfStamp));
-                        timeStamp = selfStamp;
+                        timeStamp = stamp;
                     }
                 } catch (final IOException ignore) {}
             }

Added: sling/trunk/launchpad/base/src/test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/base/src/test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java?rev=1486973&view=auto
==============================================================================
--- sling/trunk/launchpad/base/src/test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java (added)
+++ sling/trunk/launchpad/base/src/test/java/org/apache/sling/launchpad/base/impl/StartupManagerTimestampTest.java Tue May 28 15:46:17 2013
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.sling.launchpad.base.impl;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.felix.framework.Logger;
+import org.apache.sling.launchpad.base.shared.SharedConstants;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Constants;
+
+/** Test the timestamp functions of the StartupManager */
+public class StartupManagerTimestampTest {
+    private StartupManager startupManager;
+    
+    @Before
+    public void setup() throws IOException {
+        final File tmpFile = File.createTempFile(getClass().getSimpleName(), "tmp");
+        final String tmpDirName = tmpFile.getParentFile().getAbsolutePath();
+        try {
+            final Map<String, String> properties = new HashMap<String, String>();
+            properties.put(SharedConstants.SLING_HOME, tmpDirName);
+            properties.put(Constants.FRAMEWORK_STORAGE, tmpDirName);
+            properties.put(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, "42");
+            
+            final Logger logger = new Logger();
+            startupManager = new StartupManager(properties, logger);
+        } finally {
+            tmpFile.delete();
+        }
+    }
+    
+    @Test
+    public void testClassTimestamp() {
+        final int defaultValue = Integer.MIN_VALUE;
+        final long ts = startupManager.getTimeStampOfClass(getClass(), defaultValue);
+        assertTrue("Expecting non-default timestamp, got " + ts, ts > defaultValue);
+    }
+}