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