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)) {


Reply via email to