You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2014/09/30 11:09:32 UTC

svn commit: r1628377 - in /sling/trunk/bundles/extensions/discovery/impl: ./ src/main/java/org/apache/sling/discovery/impl/cluster/voting/ src/main/java/org/apache/sling/discovery/impl/common/resource/ src/test/java/org/apache/sling/discovery/impl/setup/

Author: cziegeler
Date: Tue Sep 30 09:09:32 2014
New Revision: 1628377

URL: http://svn.apache.org/r1628377
Log:
SLING-3618 : Unable to create node at /var/discovery error in sling trunk

Modified:
    sling/trunk/bundles/extensions/discovery/impl/pom.xml
    sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingView.java
    sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/resource/ResourceHelper.java
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/Instance.java
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockFactory.java
    sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockedResourceResolver.java

Modified: sling/trunk/bundles/extensions/discovery/impl/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/pom.xml?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/pom.xml (original)
+++ sling/trunk/bundles/extensions/discovery/impl/pom.xml Tue Sep 30 09:09:32 2014
@@ -231,9 +231,9 @@
         	<scope>test</scope>
         </dependency>
         <dependency>
-        	<groupId>org.slf4j</groupId>
-        	<artifactId>jcl-over-slf4j</artifactId>
-        	<version>1.7.5</version>
+        	<groupId>org.apache.sling</groupId>
+        	<artifactId>org.apache.sling.jcr.resource</artifactId>
+        	<version>2.3.8</version>
         	<scope>test</scope>
         </dependency>
 	    <dependency>
@@ -255,5 +255,11 @@
             <version>1.0.2</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.testing.tools</artifactId>
+            <version>1.0.2</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>

Modified: sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingView.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingView.java?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingView.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingView.java Tue Sep 30 09:09:32 2014
@@ -60,7 +60,7 @@ public class VotingView extends View {
     public static VotingView newVoting(final ResourceResolver resourceResolver,
             final Config config,
             final String newViewId, String initiatorId, final Set<String> liveInstances) throws PersistenceException {
-        final Resource votingResource = ResourceHelper.createResource(
+        final Resource votingResource = ResourceHelper.getOrCreateResource(
                 resourceResolver, config.getOngoingVotingsPath() + "/"
                         + newViewId);
         final ModifiableValueMap votingMap = votingResource.adaptTo(ModifiableValueMap.class);
@@ -95,7 +95,7 @@ public class VotingView extends View {
         	clusterIdDefinedBy = initiatorId;
         }
         votingMap.put(VIEW_PROPERTY_CLUSTER_ID_DEFINED_BY, clusterIdDefinedBy);
-        
+
         final Resource membersResource = resourceResolver.create(votingResource, "members", null);
         final Iterator<String> it = liveInstances.iterator();
         while (it.hasNext()) {

Modified: sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/resource/ResourceHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/resource/ResourceHelper.java?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/resource/ResourceHelper.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/main/java/org/apache/sling/discovery/impl/common/resource/ResourceHelper.java Tue Sep 30 09:09:32 2014
@@ -37,13 +37,15 @@ import org.apache.sling.api.resource.Val
  */
 public class ResourceHelper {
 
+    private static final String DEFAULT_RESOURCE_TYPE = "sling:Folder";
+
     public static Resource getOrCreateResource(
             final ResourceResolver resourceResolver, final String path)
             throws PersistenceException {
     	return ResourceUtil.getOrCreateResource(resourceResolver, path,
-    			(String)null, null, true);
+    	        DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, true);
     }
-    
+
     public static boolean deleteResource(
             final ResourceResolver resourceResolver, final String path) throws PersistenceException {
         final Resource resource = resourceResolver.getResource(path);
@@ -54,15 +56,6 @@ public class ResourceHelper {
         return true;
     }
 
-    /**
-     * @deprecated use {@link #getOrCreateResource(ResourceResolver, String)} instead
-     */
-    @Deprecated
-    public static Resource createResource(final ResourceResolver resourceResolver,
-            final String path) throws PersistenceException {
-    	return getOrCreateResource(resourceResolver, path);
-    }
-
     /** Compile a string builder containing the properties of a resource - used for logging **/
     public static StringBuilder getPropertiesForLogging(final Resource resource) {
         ValueMap valueMap;

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/Instance.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/Instance.java?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/Instance.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/Instance.java Tue Sep 30 09:09:32 2014
@@ -70,6 +70,7 @@ import org.apache.sling.discovery.impl.t
 import org.apache.sling.discovery.impl.topology.connector.ConnectorRegistry;
 import org.apache.sling.discovery.impl.topology.connector.TopologyConnectorClientInformation;
 import org.apache.sling.discovery.impl.topology.connector.TopologyConnectorServlet;
+import org.apache.sling.jcr.api.SlingRepository;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.nio.SelectChannelConnector;
@@ -86,23 +87,23 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class Instance {
-    
+
     public class MyConfig extends Config {
-        
+
         long heartbeatTimeout;
         long heartbeatInterval;
         int minEventDelay;
         List<String> whitelist;
-        
+
         @Override
         public long getHeartbeatInterval() {
             return heartbeatInterval;
         }
-        
+
         public void setHeartbeatInterval(long heartbeatInterval) {
             this.heartbeatInterval = heartbeatInterval;
         }
-        
+
         @Override
         public long getHeartbeatTimeout() {
             return heartbeatTimeout;
@@ -111,16 +112,16 @@ public class Instance {
         public void setHeartbeatTimeout(long heartbeatTimeout) {
             this.heartbeatTimeout = heartbeatTimeout;
         }
-        
+
         @Override
         public int getMinEventDelay() {
             return minEventDelay;
         }
-        
+
         public void setMinEventDelay(int minEventDelay) {
             this.minEventDelay = minEventDelay;
         }
-        
+
         @Override
         public String[] getTopologyConnectorWhitelist() {
             if (whitelist==null) {
@@ -128,24 +129,24 @@ public class Instance {
             }
             return whitelist.toArray(new String[whitelist.size()]);
         }
-        
+
         public void addTopologyConnectorWhitelistEntry(String whitelistEntry) {
             if (whitelist==null) {
                 whitelist = new LinkedList<String>();
             }
             whitelist.add(whitelistEntry);
         }
-        
+
         @Override
         public int getBackoffStableFactor() {
             return 1;
         }
-        
+
         @Override
         public int getBackoffStandbyFactor() {
             return 1;
         }
-        
+
     }
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -174,9 +175,9 @@ public class Instance {
     private ResourceResolver resourceResolver;
 
     private int serviceId = 999;
-    
+
     private static Scheduler singletonScheduler = null;
-    
+
     private static Scheduler getSingletonScheduler() throws Exception {
     	if (singletonScheduler!=null) {
     		return singletonScheduler;
@@ -194,7 +195,7 @@ public class Instance {
         singletonScheduler = newscheduler;
         return singletonScheduler;
     }
-    
+
     private HeartbeatRunner heartbeatRunner = null;
 
     private ServletContextHandler servletContext;
@@ -204,19 +205,19 @@ public class Instance {
     private MyConfig config;
 
     private EventListener observationListener;
-    
+
     private ObservationManager observationManager;
-    
+
     private class HeartbeatRunner implements Runnable {
-    	
+
     	private final int intervalInSeconds;
 
     	private boolean stopped_ = false;
-    	
+
 		public HeartbeatRunner(int intervalInSeconds) {
     		this.intervalInSeconds = intervalInSeconds;
     	}
-		
+
 		public synchronized void stop() {
 			logger.info("Stopping Instance ["+slingId+"]");
 			stopped_ = true;
@@ -239,7 +240,7 @@ public class Instance {
 				}
 			}
 		}
-    	
+
     }
 
     private Instance(String debugName,
@@ -247,7 +248,7 @@ public class Instance {
             throws Exception {
     	this("/var/discovery/impl/", debugName, resourceResolverFactory, resetRepo, 20, 1, UUID.randomUUID().toString());
     }
-    
+
     private Instance(String discoveryResourcePath, String debugName,
             ResourceResolverFactory resourceResolverFactory, boolean resetRepo,
             final int heartbeatTimeout, final int minEventDelay, String slingId)
@@ -265,9 +266,9 @@ public class Instance {
         config.setHeartbeatInterval(20);
         config.setMinEventDelay(minEventDelay);
         config.addTopologyConnectorWhitelistEntry("127.0.0.1");
-                
+
         PrivateAccessor.setField(config, "discoveryResourcePath", discoveryResourcePath);
-        
+
         clusterViewService = OSGiFactory.createClusterViewServiceImpl(slingId,
                 resourceResolverFactory, config);
         announcementRegistry = OSGiFactory.createITopologyAnnouncementRegistry(
@@ -279,7 +280,7 @@ public class Instance {
                 connectorRegistry, config,
                 resourceResolverFactory.getAdministrativeResourceResolver(null)
                         .adaptTo(Repository.class), getSingletonScheduler());
-        
+
 		discoveryService = OSGiFactory.createDiscoverService(slingId,
                 heartbeatHandler, clusterViewService, announcementRegistry,
                 resourceResolverFactory, config, connectorRegistry, getSingletonScheduler());
@@ -349,7 +350,7 @@ public class Instance {
     }
 
     public static Instance newStandaloneInstance(String debugName,
-            Repository repository) throws Exception {
+            SlingRepository repository) throws Exception {
         ResourceResolverFactory resourceResolverFactory = MockFactory
                 .mockResourceResolverFactory(repository);
         return new Instance(debugName, resourceResolverFactory, false);
@@ -361,14 +362,14 @@ public class Instance {
                 .mockResourceResolverFactory();
         return new Instance(discoveryResourcePath, debugName, resourceResolverFactory, resetRepo, heartbeatTimeout, minEventDelay, slingId);
     }
-    
+
     public static Instance newStandaloneInstance(String discoveryResourcePath, String debugName,
             boolean resetRepo, int heartbeatTimeout, int minEventDelay) throws Exception {
         ResourceResolverFactory resourceResolverFactory = MockFactory
                 .mockResourceResolverFactory();
         return new Instance(discoveryResourcePath, debugName, resourceResolverFactory, resetRepo, heartbeatTimeout, minEventDelay, UUID.randomUUID().toString());
     }
-    
+
     public static Instance newStandaloneInstance(String debugName,
             boolean resetRepo) throws Exception {
         ResourceResolverFactory resourceResolverFactory = MockFactory
@@ -409,15 +410,15 @@ public class Instance {
     public ClusterViewService getClusterViewService() {
         return clusterViewService;
     }
-    
+
     public DiscoveryService getDiscoveryService() {
         return discoveryService;
     }
-    
+
     public AnnouncementRegistry getAnnouncementRegistry() {
         return announcementRegistry;
     }
-    
+
     public synchronized void startJetty() throws Throwable {
         if (jettyServer!=null) {
             return;
@@ -434,19 +435,19 @@ public class Instance {
         final HttpService httpService = context.mock(HttpService.class);
         context.checking(new Expectations() {
             {
-                allowing(httpService).registerServlet(with(any(String.class)), 
-                        with(any(Servlet.class)), 
-                        with(any(Dictionary.class)), 
+                allowing(httpService).registerServlet(with(any(String.class)),
+                        with(any(Servlet.class)),
+                        with(any(Dictionary.class)),
                         with(any(HttpContext.class)));
             }
         });
         PrivateAccessor.setField(servlet, "httpService", httpService);
         ComponentContext cc = null;
         PrivateAccessor.invoke(servlet, "activate", new Class[] {ComponentContext.class}, new Object[] {cc});
-        
+
         ServletHolder holder =
                 new ServletHolder(servlet);
-        
+
         servletContext.addServlet(holder, "/system/console/topology/*");
 
         jettyServer = new Server();
@@ -455,7 +456,7 @@ public class Instance {
         jettyServer.setConnectors(new Connector[]{connector});
         jettyServer.start();
     }
-    
+
     public synchronized int getJettyPort() {
         if (jettyServer==null) {
             throw new IllegalStateException("jettyServer not started");
@@ -485,7 +486,7 @@ public class Instance {
     	logger.info("Instance ["+slingId+"] issues a heartbeat now "+new Date());
         heartbeatHandler.run();
     }
-    
+
     public void startHeartbeats(int intervalInSeconds) throws IllegalAccessException, InvocationTargetException {
     	logger.info("startHeartbeats: intervalInSeconds="+intervalInSeconds);
     	if (heartbeatRunner!=null) {
@@ -510,7 +511,7 @@ public class Instance {
     	th.start();
 		logger.info("startHeartbeats: done.");
     }
-    
+
 	public boolean isHeartbeatRunning() {
 		return (heartbeatRunner!=null);
 	}
@@ -587,7 +588,7 @@ public class Instance {
     	} else {
     	    logger.warn("stop: could not remove listener for slingId="+slingId+", debugName="+debugName+", observationManager="+observationManager+", observationListener="+observationListener);
     	}
-    	
+
         if (resourceResolver != null) {
             resourceResolver.close();
         }

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockFactory.java?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockFactory.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockFactory.java Tue Sep 30 09:09:32 2014
@@ -21,10 +21,8 @@ package org.apache.sling.discovery.impl.
 import java.util.Dictionary;
 import java.util.Properties;
 
-import javax.jcr.Repository;
-
 import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.apache.sling.commons.scheduler.Scheduler;
+import org.apache.sling.jcr.api.SlingRepository;
 import org.apache.sling.settings.SlingSettingsService;
 import org.hamcrest.Description;
 import org.jmock.Expectations;
@@ -44,8 +42,8 @@ public class MockFactory {
             throws Exception {
     	return mockResourceResolverFactory(null);
     }
-    
-    public static ResourceResolverFactory mockResourceResolverFactory(final Repository repositoryOrNull)
+
+    public static ResourceResolverFactory mockResourceResolverFactory(final SlingRepository repositoryOrNull)
             throws Exception {
         Mockery context = new JUnit4Mockery();
 

Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockedResourceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockedResourceResolver.java?rev=1628377&r1=1628376&r2=1628377&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockedResourceResolver.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/MockedResourceResolver.java Tue Sep 30 09:09:32 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.discovery.impl.setup;
 
+import java.io.IOException;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -39,27 +40,40 @@ import org.apache.sling.api.resource.Per
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.commons.testing.jcr.RepositoryProvider;
+import org.apache.sling.commons.testing.jcr.RepositoryUtil;
+import org.apache.sling.jcr.api.SlingRepository;
 
 public class MockedResourceResolver implements ResourceResolver {
 
-	private final Repository repository;
-	
+	private final SlingRepository repository;
+
 	private Session session;
-	
+
     private List<MockedResource> resources = new LinkedList<MockedResource>();
 
     public MockedResourceResolver() throws RepositoryException {
     	this(null);
     }
 
-    public MockedResourceResolver(Repository repositoryOrNull) throws RepositoryException {
+    public MockedResourceResolver(SlingRepository repositoryOrNull) throws RepositoryException {
     	if (repositoryOrNull==null) {
     		this.repository = RepositoryProvider.instance().getRepository();
+    		Session adminSession = null;
+    		try {
+    		    adminSession = this.repository.loginAdministrative(null);
+                RepositoryUtil.registerSlingNodeTypes(adminSession);
+    		} catch ( final IOException ioe ) {
+    		    throw new RepositoryException(ioe);
+    		} finally {
+    		    if ( adminSession != null ) {
+    		        adminSession.logout();
+    		    }
+    		}
     	} else {
     		this.repository = repositoryOrNull;
     	}
     }
-    
+
     public Session getSession() throws RepositoryException {
         synchronized (this) {
             if (session != null) {
@@ -73,14 +87,14 @@ public class MockedResourceResolver impl
     private Repository getRepository() {
     	return repository;
     }
-    
+
     private Session createSession() throws RepositoryException {
         final Credentials credentials = new SimpleCredentials("admin",
                 "admin".toCharArray());
         return repository.login(credentials, "default");
     }
-	
-	
+
+
     @SuppressWarnings("unchecked")
     public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
         if (type.equals(Session.class)) {