You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2014/04/09 13:04:20 UTC
[17/50] [abbrv] git commit: more flexibility for backend testing
more flexibility for backend testing
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/090273c6
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/090273c6
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/090273c6
Branch: refs/heads/master
Commit: 090273c671a33cee3039139b19d99a7c2cac4e64
Parents: 3eb12a6
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Apr 1 15:46:31 2014 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Apr 1 15:46:31 2014 +0200
----------------------------------------------------------------------
.../core/qualifiers/inject/Fallback.java | 36 ++++++++++++++++++++
.../services/logging/LoggingServiceImpl.java | 21 ++++++------
.../services/triplestore/SesameServiceImpl.java | 33 ++++++++++++------
.../core/test/base/TestStoreProvider.java | 2 ++
4 files changed, 71 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/090273c6/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/qualifiers/inject/Fallback.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/qualifiers/inject/Fallback.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/qualifiers/inject/Fallback.java
new file mode 100644
index 0000000..3cf6fc6
--- /dev/null
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/qualifiers/inject/Fallback.java
@@ -0,0 +1,36 @@
+/*
+ * 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.marmotta.platform.core.qualifiers.inject;
+
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Add file description here!
+ *
+ * @author Sebastian Schaffert (sschaffert@apache.org)
+ */
+@Target({ TYPE, METHOD, FIELD })
+@Retention(RUNTIME)
+@Inherited
+public @interface Fallback {
+}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/090273c6/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/logging/LoggingServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/logging/LoggingServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/logging/LoggingServiceImpl.java
index f604ec2..dc53656 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/logging/LoggingServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/logging/LoggingServiceImpl.java
@@ -56,12 +56,7 @@ import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
import java.io.File;
import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
@@ -148,16 +143,20 @@ public class LoggingServiceImpl implements LoggingService {
}
public void startEventHandler(@Observes LoggingStartEvent event) {
- log.warn("LOGGING: Switching to Apache Marmotta logging configuration; further output will be found in {}{}log{}*.log", configurationService.getHome(), File.separator, File.separator);
+ if(!configurationService.getBooleanConfiguration("testing.enabled")) {
+ log.warn("LOGGING: Switching to Apache Marmotta logging configuration; further output will be found in {}{}log{}*.log", configurationService.getHome(), File.separator, File.separator);
- configureLoggers();
+ configureLoggers();
+ }
}
public void configurationEventHandler(@Observes ConfigurationChangedEvent event) {
- if(event.containsChangedKeyWithPrefix("logging.")) {
- log.warn("LOGGING: Reloading logging configuration");
+ if(!configurationService.getBooleanConfiguration("testing.enabled")) {
+ if (event.containsChangedKeyWithPrefix("logging.")) {
+ log.warn("LOGGING: Reloading logging configuration");
- configureLoggers();
+ configureLoggers();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/090273c6/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
index 9b243d6..52e42c0 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/triplestore/SesameServiceImpl.java
@@ -18,7 +18,6 @@
package org.apache.marmotta.platform.core.services.triplestore;
import edu.emory.mathcs.backport.java.util.concurrent.locks.ReentrantReadWriteLock;
-
import org.apache.marmotta.commons.sesame.transactions.api.TransactionListener;
import org.apache.marmotta.commons.sesame.transactions.api.TransactionalSail;
import org.apache.marmotta.commons.sesame.transactions.model.TransactionData;
@@ -28,6 +27,7 @@ import org.apache.marmotta.platform.core.api.triplestore.*;
import org.apache.marmotta.platform.core.qualifiers.event.transaction.AfterCommit;
import org.apache.marmotta.platform.core.qualifiers.event.transaction.AfterRollback;
import org.apache.marmotta.platform.core.qualifiers.event.transaction.BeforeCommit;
+import org.apache.marmotta.platform.core.qualifiers.inject.Fallback;
import org.apache.marmotta.platform.core.util.CDIContext;
import org.openrdf.model.ValueFactory;
import org.openrdf.repository.RepositoryConnection;
@@ -44,6 +44,7 @@ import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
import javax.enterprise.inject.Instance;
import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.UnsatisfiedResolutionException;
import javax.inject.Inject;
import java.util.Iterator;
@@ -139,20 +140,32 @@ public class SesameServiceImpl implements SesameService {
log.warn("RDF repository has already been initialized");
}
+ if(storeProviders.isUnsatisfied()) {
+ log.error("no storage backend found in classpath; please add one of the marmotta-backend-XXX modules");
+ throw new UnsatisfiedResolutionException("no storage backend found in classpath; please add one of the marmotta-backend-XXX modules");
+ }
+
if(storeProviders.isAmbiguous()) {
- log.error("more than one storage backend in classpath; please only select one storage backend");
+ log.warn("more than one storage backend in classpath, trying to select the most appropriate ...");
+ StoreProvider candidate = null;
+
Iterator<StoreProvider> it = storeProviders.iterator();
while (it.hasNext()) {
- log.error(" - {}", it.next().getName());
+ StoreProvider next = it.next();
+
+ log.warn("- candidate: {} (annotations: {})", next.getName(), next.getClass().getAnnotations());
+
+ if(candidate == null || !next.getClass().isAnnotationPresent(Fallback.class)) {
+ candidate = next;
+ }
}
- return;
- }
- if(storeProviders.isUnsatisfied()) {
- log.error("no storage backend found in classpath; please add one of the marmotta-backend-XXX modules");
- return;
- }
- store = storeProviders.get().createStore();
+ log.warn("selected storage backend: {}", candidate.getName());
+
+ store = candidate.createStore();
+ } else {
+ store = storeProviders.get().createStore();
+ }
NotifyingSail notifyingSail;
http://git-wip-us.apache.org/repos/asf/marmotta/blob/090273c6/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/TestStoreProvider.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/TestStoreProvider.java b/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/TestStoreProvider.java
index c12684b..5c96803 100644
--- a/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/TestStoreProvider.java
+++ b/platform/marmotta-core/src/test/java/org/apache/marmotta/platform/core/test/base/TestStoreProvider.java
@@ -18,6 +18,7 @@
package org.apache.marmotta.platform.core.test.base;
import org.apache.marmotta.platform.core.api.triplestore.StoreProvider;
+import org.apache.marmotta.platform.core.qualifiers.inject.Fallback;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.sail.NotifyingSail;
import org.openrdf.sail.Sail;
@@ -34,6 +35,7 @@ import javax.enterprise.inject.Alternative;
* @author Sebastian Schaffert (sschaffert@apache.org)
*/
@Alternative
+@Fallback
@ApplicationScoped
public class TestStoreProvider implements StoreProvider {