aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'container-core/src')
-rwxr-xr-xcontainer-core/src/main/java/com/yahoo/container/Container.java18
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java4
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java7
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java6
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java2
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java1
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java4
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java57
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java26
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java41
-rw-r--r--container-core/src/main/java/com/yahoo/container/protect/Watchdog.java168
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java58
-rw-r--r--container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java23
-rw-r--r--container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java (renamed from container-core/src/main/java/com/yahoo/language/provider/SimpleLinguisticsProvider.java)11
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java7
-rw-r--r--container-core/src/main/resources/configdefinitions/diagnostics.def16
-rw-r--r--container-core/src/main/resources/configdefinitions/qr-logging.def38
-rw-r--r--container-core/src/main/resources/configdefinitions/qr-searchers.def5
-rw-r--r--container-core/src/main/resources/configdefinitions/qr-templates.def79
-rw-r--r--container-core/src/main/resources/configdefinitions/qr.def7
-rw-r--r--container-core/src/main/resources/configdefinitions/vip-status.def6
-rw-r--r--container-core/src/test/java/com/yahoo/component/provider/test/ComponentClassTestCase.java191
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java15
-rw-r--r--container-core/src/test/java/com/yahoo/container/xml/bind/JAXBContextFactoryTest.java45
24 files changed, 22 insertions, 813 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/Container.java b/container-core/src/main/java/com/yahoo/container/Container.java
index e84c8b340a4..031d4a26d05 100755
--- a/container-core/src/main/java/com/yahoo/container/Container.java
+++ b/container-core/src/main/java/com/yahoo/container/Container.java
@@ -3,13 +3,11 @@ package com.yahoo.container;
import com.yahoo.component.AbstractComponent;
import com.yahoo.component.provider.ComponentRegistry;
-import com.yahoo.container.core.config.BundleLoader;
import com.yahoo.filedistribution.fileacquirer.FileAcquirer;
import com.yahoo.filedistribution.fileacquirer.FileAcquirerFactory;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.service.ClientProvider;
import com.yahoo.jdisc.service.ServerProvider;
-import com.yahoo.osgi.Osgi;
import com.yahoo.vespa.config.ConfigTransformer;
import com.yahoo.vespa.config.UrlDownloader;
@@ -34,8 +32,6 @@ public class Container {
private volatile FileAcquirer fileAcquirer;
private volatile UrlDownloader urlDownloader;
- private volatile BundleLoader bundleLoader;
-
private static Logger logger = Logger.getLogger(Container.class.getName());
// TODO: Make this final again.
@@ -43,12 +39,6 @@ public class Container {
public static Container get() { return instance; }
- /** @deprecated do not use */
- @Deprecated // TODO: Remove
- public void setOsgi(Osgi osgi) {
- bundleLoader = new BundleLoader(osgi);
- }
-
public void shutdown() {
if (fileAcquirer != null)
fileAcquirer.shutdown();
@@ -61,14 +51,6 @@ public class Container {
return fileAcquirer;
}
- /** @deprecated do not use */
- @Deprecated // TODO: Remove
- public BundleLoader getBundleLoader() {
- if (bundleLoader == null)
- bundleLoader = new BundleLoader(null);
- return bundleLoader;
- }
-
/**
* Hack. For internal use only, will be removed later
*
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
index f7a3f49538e..cca3c5c4610 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
@@ -9,7 +9,6 @@ import com.yahoo.component.ComponentSpecification;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.concurrent.ThreadFactoryFactory;
import com.yahoo.config.FileReference;
-import com.yahoo.container.core.DiagnosticsConfig;
import com.yahoo.container.di.ComponentDeconstructor;
import com.yahoo.container.di.Container;
import com.yahoo.container.di.componentgraph.core.ComponentGraph;
@@ -148,9 +147,6 @@ public class HandlersConfigurerDi {
protected void configure() {
bind(com.yahoo.container.Container.class).toInstance(vespaContainer);
bind(com.yahoo.statistics.Statistics.class).toInstance(Statistics.nullImplementation);
- bind(com.yahoo.container.protect.FreezeDetector.class).toInstance(
- new com.yahoo.container.protect.FreezeDetector(
- new DiagnosticsConfig(new DiagnosticsConfig.Builder().disabled(true))));
bind(AccessLog.class).toInstance(new AccessLog(new ComponentRegistry<>()));
bind(Executor.class).toInstance(Executors.newCachedThreadPool(ThreadFactoryFactory.getThreadFactory("HandlersConfigurerDI")));
diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
index 60affddeb60..c8cf575dff3 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatusHandler.java
@@ -38,7 +38,6 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler {
private final boolean accessDisk;
private final File statusFile;
private final VipStatus vipStatus;
- private final boolean noSearchBackendsImpliesOutOfService;
private volatile boolean previouslyInRotation = true;
@@ -57,7 +56,7 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler {
private StatusResponse() {
super(com.yahoo.jdisc.http.HttpResponse.Status.OK); // status may be overwritten below
- if (noSearchBackendsImpliesOutOfService && !vipStatus.isInRotation()) {
+ if (vipStatus != null && ! vipStatus.isInRotation()) {
searchContainerOutOfService();
} else if (accessDisk) {
preSlurpFile();
@@ -179,7 +178,6 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler {
super(executor, metric);
this.accessDisk = vipConfig.accessdisk();
this.statusFile = new File(Defaults.getDefaults().underVespaHome(vipConfig.statusfile()));
- this.noSearchBackendsImpliesOutOfService = vipConfig.noSearchBackendsImpliesOutOfService();
this.vipStatus = vipStatus;
}
@@ -187,9 +185,8 @@ public final class VipStatusHandler extends ThreadedHttpRequestHandler {
public HttpResponse handle(HttpRequest request) {
if (metric != null)
metric.add(NUM_REQUESTS_METRIC, 1, null);
- if (noSearchBackendsImpliesOutOfService) {
+ if (vipStatus != null)
updateAndLogRotationState();
- }
return new StatusResponse();
}
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
index 73b56cd89f5..705092ef12e 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
@@ -295,7 +295,6 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler {
logEntry.setRemotePort(remoteAddress.getPort());
}
URI uri = AccessLogUtil.getUri(httpRequest);
- setDeprecatedUri(logEntry, uri);
logEntry.setRawPath(uri.getRawPath());
logEntry.setRawQuery(uri.getRawQuery());
logEntry.setUserAgent(AccessLogUtil.getUserAgentHeader(httpRequest));
@@ -307,9 +306,4 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler {
}
}
- @SuppressWarnings("deprecation")
- private static void setDeprecatedUri(AccessLogEntry logEntry, URI uri) {
- logEntry.setURI(uri);
- }
-
}
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
index 50052bbf70c..d0cf07584e4 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/MetricConsumerFactory.java
@@ -4,7 +4,7 @@ package com.yahoo.container.jdisc;
import com.yahoo.jdisc.application.MetricConsumer;
/**
- * <p>This is the interface to implement if one wishes to configure a non-default <tt>MetricConsumer</tt>. Simply
+ * <p>This is the interface to implement if one wishes to configure a non-default <code>MetricConsumer</code>. Simply
* add the implementing class as a component in your services.xml file.</p>
*
* @author Simon Thoresen Hult
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
index 670c48bb339..dddde1205ca 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java
@@ -30,7 +30,6 @@ import java.util.logging.Logger;
public abstract class ThreadedHttpRequestHandler extends ThreadedRequestHandler {
public static final String CONTENT_TYPE = "Content-Type";
- public static final String DATE = "Date"; // TODO: Remove on Vespa 7
private static final String RENDERING_ERRORS = "rendering_errors";
/** Logger for subclasses */
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
index 715038470b9..309405f1242 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/VespaHeaders.java
@@ -54,6 +54,7 @@ public final class VespaHeaders {
}
}
+ /** Returns true if this is a benchmarking request, according to headers */
public static boolean benchmarkOutput(com.yahoo.container.jdisc.HttpRequest request) {
return request.getHeader(BenchmarkingHeaders.REQUEST) != null;
}
@@ -69,8 +70,7 @@ public final class VespaHeaders {
* @param coverage The Coverage to read data from.
*/
public static void benchmarkOutput(HeaderFields responseHeaders, boolean benchmarkCoverage,
- Timing t, HitCounts c, int errorCount, Coverage coverage)
- {
+ Timing t, HitCounts c, int errorCount, Coverage coverage) {
final long renderStartTime = System.currentTimeMillis();
if (c != null) {
// Fill inn response getHeaders
diff --git a/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java b/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java
deleted file mode 100644
index 6a8a3239c17..00000000000
--- a/container-core/src/main/java/com/yahoo/container/protect/FreezeDetector.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.protect;
-
-import java.util.Timer;
-
-import com.yahoo.component.AbstractComponent;
-import com.yahoo.concurrent.ThreadLocalDirectory;
-import com.yahoo.container.core.DiagnosticsConfig;
-
-/**
- * Runs and initializes a {@link Watchdog} instance.
- *
- * @author Steinar Knutsen
- * @deprecated this is not in use and will be removed in the next major release
- */
-@Deprecated
-// TODO: Remove on Vespa 7
-public class FreezeDetector extends AbstractComponent {
-
- private final Timer timeoutWatchdog;
- private final Watchdog watchdog;
-
- public FreezeDetector(DiagnosticsConfig diagnosticsConfig) {
- timeoutWatchdog = null;
- watchdog = null;
- }
-
- public void register(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) {
- if (watchdog == null) {
- return;
- }
- watchdog.addTimeouts(timeouts);
- }
-
- public boolean isBreakdown() {
- if (watchdog == null) {
- return false;
- }
- return watchdog.isBreakdown();
- }
-
- public void unRegister(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) {
- if (watchdog == null) {
- return;
- }
- watchdog.removeTimeouts(timeouts);
- }
-
- @Override
- public void deconstruct() {
- super.deconstruct();
- if (timeoutWatchdog != null) {
- timeoutWatchdog.cancel();
- }
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java b/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java
deleted file mode 100644
index e31716a292e..00000000000
--- a/container-core/src/main/java/com/yahoo/container/protect/TimeoutCollector.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.protect;
-
-import com.yahoo.concurrent.ThreadLocalDirectory.Updater;
-
-/**
- * Allocator and glue for sampling timeouts in SearchHandler.
- *
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @deprecated this is not in use and will be removed in the next major release
- */
-@Deprecated
-public final class TimeoutCollector implements Updater<TimeoutRate, Boolean> {
-
- @Override
- public TimeoutRate createGenerationInstance(TimeoutRate previous) {
- return new TimeoutRate();
- }
-
- @Override
- public TimeoutRate update(TimeoutRate current, Boolean x) {
- current.addQuery(x);
- return current;
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java b/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java
deleted file mode 100644
index 4bb68fedb9b..00000000000
--- a/container-core/src/main/java/com/yahoo/container/protect/TimeoutRate.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.protect;
-
-/**
- * Helper class to account for measuring how many queries times outs.
- *
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @deprecated this is not in use and will be removed in the next major release
- */
-// TODO: Remove on Vespa 7
-@Deprecated
-public final class TimeoutRate {
-
- private int timeouts = 0;
- private int total = 0;
-
- public void addQuery(Boolean timeout) {
- if (timeout) {
- timeouts += 1;
- }
- total += 1;
- }
-
- public void merge(TimeoutRate other) {
- timeouts += other.timeouts;
- total += other.total;
- }
-
- public double timeoutFraction() {
- if (total == 0) {
- return 0.0d;
- } else {
- return ((double) timeouts) / ((double) total);
- }
- }
-
- public int getTotal() {
- return total;
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java b/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java
deleted file mode 100644
index ff425242587..00000000000
--- a/container-core/src/main/java/com/yahoo/container/protect/Watchdog.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.protect;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.TimerTask;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import com.yahoo.concurrent.ThreadLocalDirectory;
-import com.yahoo.log.LogLevel;
-import com.yahoo.protect.Process;
-
-/**
- * Watchdog for a frozen process, too many timeouts, etc.
- *
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @deprecated this is not in use and will be removed in the next major release
- */
-// TODO: Remove on Vespa 7
-@Deprecated
-class Watchdog extends TimerTask {
-
- public static final String FREEZEDETECTOR_DISABLE = "vespa.freezedetector.disable";
- Logger log = Logger.getLogger(Watchdog.class.getName());
- private long lastRun = 0L;
- private long lastQpsCheck = 0L;
- // Local copy to avoid ever _reading_ the volatile version
- private boolean breakdownCopy = false;
- private volatile boolean breakdown;
- // The fraction of queries which must time out to view the QRS as being
- // in breakdown
- private final double timeoutThreshold;
- // The minimal QPS to care about timeoutThreshold
- private final int minimalQps;
- private final boolean disableSevereBreakdownCheck;
- private final List<ThreadLocalDirectory<TimeoutRate, Boolean>> timeoutRegistry = new ArrayList<>();
- private final boolean shutdownIfFrozen;
-
- Watchdog(double timeoutThreshold, int minimalQps, boolean shutdownIfFrozen) {
- this.timeoutThreshold = timeoutThreshold;
- this.minimalQps = minimalQps;
- if (System.getProperty(FREEZEDETECTOR_DISABLE) != null) {
- disableSevereBreakdownCheck = true;
- } else {
- disableSevereBreakdownCheck = false;
- }
- this.shutdownIfFrozen = shutdownIfFrozen;
- }
-
- @Override
- public void run() {
- long now = System.currentTimeMillis();
- if (lastRun != 0L) {
- severeBreakdown(now);
- queryTimeouts(now);
- } else {
- lastQpsCheck = now;
- }
- lastRun = now;
- }
-
- private void severeBreakdown(final long now) {
- if (disableSevereBreakdownCheck) {
- return;
- }
- if (now - lastRun < 5000L) {
- return;
- }
-
- threadStackMessage();
-
- if (shutdownIfFrozen) {
- Process.logAndDie("Watchdog timer meant to run ten times per second"
- + " not run for five seconds or more."
- + " Assuming severe failure or overloaded node, shutting down container.");
- } else {
- log.log(LogLevel.ERROR,
- "A watchdog meant to run 10 times a second has not been invoked for 5 seconds."
- + " This usually means this machine is swapping or otherwise severely overloaded.");
- }
- }
-
- private void threadStackMessage() {
- log.log(LogLevel.INFO, "System seems unresponsive, performing full thread dump for diagnostics.");
- threadDump();
- log.log(LogLevel.INFO, "End of diagnostic thread dump.");
- }
-
- private void threadDump() {
- try {
- Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();
- for (Map.Entry<Thread, StackTraceElement[]> e : allStackTraces.entrySet()) {
- Thread t = e.getKey();
- StackTraceElement[] stack = e.getValue();
- StringBuilder forOneThread = new StringBuilder();
- int initLen;
- forOneThread.append("Stack for thread: ").append(t.getName()).append(": ");
- initLen = forOneThread.length();
- for (StackTraceElement s : stack) {
- if (forOneThread.length() > initLen) {
- forOneThread.append(" ");
- }
- forOneThread.append(s.toString());
- }
- log.log(LogLevel.INFO, forOneThread.toString());
- }
- } catch (Exception e) {
- // just give up...
- }
- }
-
- private void queryTimeouts(final long now) {
- // only check query timeout every 10s
- if (now - lastQpsCheck < 10000L) {
- return;
- } else {
- lastQpsCheck = now;
- }
-
- final TimeoutRate globalState = new TimeoutRate();
- synchronized (timeoutRegistry) {
- for (ThreadLocalDirectory<TimeoutRate, Boolean> timeouts : timeoutRegistry) {
- final List<TimeoutRate> threadStates = timeouts.fetch();
- for (final TimeoutRate t : threadStates) {
- globalState.merge(t);
- }
- }
- }
- if (globalState.timeoutFraction() > timeoutThreshold && globalState.getTotal() > (10 * minimalQps)) {
- setBreakdown(true);
- log.log(Level.WARNING, "Too many queries timed out. Assuming container is in breakdown.");
- } else {
- if (!breakdown()) {
- return;
- }
- setBreakdown(false);
- log.log(Level.WARNING, "Fewer queries timed out. Assuming container is no longer in breakdown.");
- }
- }
-
- private void setBreakdown(final boolean state) {
- breakdown = state;
- breakdownCopy = state;
- }
-
- private boolean breakdown() {
- return breakdownCopy;
- }
-
- boolean isBreakdown() {
- return breakdown;
- }
-
- void addTimeouts(ThreadLocalDirectory<TimeoutRate, Boolean> t) {
- synchronized (timeoutRegistry) {
- timeoutRegistry.add(t);
- }
- }
-
- void removeTimeouts(ThreadLocalDirectory<TimeoutRate, Boolean> timeouts) {
- synchronized (timeoutRegistry) {
- timeoutRegistry.remove(timeouts);
- }
- }
-
-}
diff --git a/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java b/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java
deleted file mode 100644
index c2355ce74be..00000000000
--- a/container-core/src/main/java/com/yahoo/container/xml/bind/JAXBContextFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.xml.bind;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-/**
- * Container components can take an instance of this class as a constructor argument,
- * to get a new instance injected by the container framework. There is usually no
- * need to create an instance with this class' constructor.
- * <p>
- * This factory is needed because the JAXBContext needs a user defined context path,
- * which means that it cannot be created at the time the container creates its
- * component graph.
- *
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
- * @author gjoranv
- * @since 5.3
- * @deprecated Do not use!
- */
-@Deprecated
-public class JAXBContextFactory {
- public static final String FACTORY_CLASS = "com.sun.xml.internal.bind.v2.ContextFactory";
-
- /**
- * Returns a new JAXBContext for the context path defined by the given list of classes.
- * @return A new JAXBContext.
- * @param classes One class per package that contains schema derived classes and/or
- * java to schema (JAXB-annotated) mapped classes
- */
- public JAXBContext newInstance(Class<?>... classes) {
- return newInstance(getContextPath(classes), classes[0].getClassLoader());
- }
-
- // TODO: guard against adding the same package more than once
- static String getContextPath(Class<?>... classes) {
- if (classes == null || classes.length == 0) {
- throw new IllegalArgumentException("Empty package list.");
- }
- StringBuilder contextPath = new StringBuilder();
- for (Class<?> clazz : classes) {
- contextPath
- .append(clazz.getPackage().getName())
- .append(':');
- }
- contextPath.deleteCharAt(contextPath.length() - 1);
- return contextPath.toString();
- }
-
- private static JAXBContext newInstance(String contextPath, ClassLoader classLoader) {
- System.setProperty(JAXBContext.JAXB_CONTEXT_FACTORY, FACTORY_CLASS);
- try {
- return JAXBContext.newInstance(contextPath, classLoader);
- } catch (JAXBException e) {
- throw new IllegalStateException(e);
- }
- }
-}
diff --git a/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java b/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java
deleted file mode 100644
index 6d82fa7af82..00000000000
--- a/container-core/src/main/java/com/yahoo/container/xml/providers/JAXBContextFactoryProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.xml.providers;
-
-import com.yahoo.container.di.componentgraph.Provider;
-
-/**
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
- * @since 5.1.29
- * @deprecated Do not use!
- */
-@Deprecated
-@SuppressWarnings("deprecation")
-public class JAXBContextFactoryProvider implements Provider<com.yahoo.container.xml.bind.JAXBContextFactory> {
- public static final String FACTORY_CLASS = com.yahoo.container.xml.bind.JAXBContextFactory.class.getName();
-
- @Override
- public com.yahoo.container.xml.bind.JAXBContextFactory get() {
- return new com.yahoo.container.xml.bind.JAXBContextFactory();
- }
-
- @Override
- public void deconstruct() { }
-}
diff --git a/container-core/src/main/java/com/yahoo/language/provider/SimpleLinguisticsProvider.java b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java
index 169c9f1a2a4..8f08e33a777 100644
--- a/container-core/src/main/java/com/yahoo/language/provider/SimpleLinguisticsProvider.java
+++ b/container-core/src/main/java/com/yahoo/language/provider/DefaultLinguisticsProvider.java
@@ -2,26 +2,23 @@
package com.yahoo.language.provider;
import com.google.inject.Inject;
-import com.yahoo.language.simple.SimpleLinguistics;
+import com.yahoo.language.opennlp.OpenNlpLinguistics;
import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.language.Linguistics;
-import com.yahoo.language.simple.SimpleLinguisticsConfig;
/**
- * Provides simple linguistics if no linguistics component has been explicitly configured
+ * Provides the default linguistics implementation if no linguistics component has been explicitly configured
* (dependency injection will fallback to providers if no components of the requested type is found).
*
* @author bratseth
*/
-public class SimpleLinguisticsProvider implements Provider<Linguistics> {
+public class DefaultLinguisticsProvider implements Provider<Linguistics> {
private final Linguistics linguistics;
@SuppressWarnings("deprecation")
@Inject
- public SimpleLinguisticsProvider(SimpleLinguisticsConfig config) {
- linguistics = new SimpleLinguistics(config);
- }
+ public DefaultLinguisticsProvider() { linguistics = new OpenNlpLinguistics(); }
@Override
public Linguistics get() { return linguistics; }
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
index 2269bd1358b..72a5fbdce55 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/AbstractProcessingHandler.java
@@ -47,10 +47,9 @@ import static com.yahoo.component.chain.ChainsConfigurer.prepareChainRegistry;
* <p>
* COMPONENT: The type of the processing components of which this executes a chain
*
- * @author bratseth
- * @author Tony Vaagenes
- * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
- * @since 5.1.6
+ * @author bratseth
+ * @author Tony Vaagenes
+ * @author Steinar Knutsen
*/
public abstract class AbstractProcessingHandler<COMPONENT extends Processor> extends LoggingRequestHandler {
diff --git a/container-core/src/main/resources/configdefinitions/diagnostics.def b/container-core/src/main/resources/configdefinitions/diagnostics.def
deleted file mode 100644
index 33f733d4386..00000000000
--- a/container-core/src/main/resources/configdefinitions/diagnostics.def
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace=container.core
-
-## The fraction of queries to time out over a period of 10s to consider
-## the system in breakdown.
-timeoutfraction double default=0.1
-
-## Minimum QPS to consider the system in breakdown.
-minimumqps int default=1
-
-## Whether to shut down process if in a deadlock situation
-shutdown bool default=false
-
-## Whether to totally disable the detector. Alternative to system property
-## which works better in tests.
-disabled bool default=false
diff --git a/container-core/src/main/resources/configdefinitions/qr-logging.def b/container-core/src/main/resources/configdefinitions/qr-logging.def
deleted file mode 100644
index f828f321ae7..00000000000
--- a/container-core/src/main/resources/configdefinitions/qr-logging.def
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-namespace=container.core
-logger string default="com.yahoo"
-# Either QueryAccessLog for a regular Vespa access log, or YApacheAccessLog for a log on yApache format
-speciallog[].name string
-
-# Leave as ""
-speciallog[].type string
-
-speciallog[].filehandler.name string default=""
-
-# File name patterns supporting the expected time variables
-speciallog[].filehandler.pattern string default=".%Y%m%d%H%M%S"
-
-speciallog[].filehandler.rotation string default="0 60 ..."
-
-# Defines how file rotation is done. There are two options:
-#
-# "date" :
-# The active log file is given the name resulting from pattern (but in this case "pattern" must yield a
-# time-dependent name. In addition, a symlink is created pointing to the newest file.
-# The symlink is given the name of the symlink parameter (or the name of this service
-# if no parameter is given.
-#
-# "sequence" :
-# The active log file is given the name
-# defined by "pattern" (which in this case will likely just be a constant string).
-# At rotation, this file is given the name pattern.N where N is 1 + the largest integer found by
-# extracting the integers from all files ending by .Integer in the same directory
-#
-speciallog[].filehandler.rotatescheme string default="date"
-
-# Use this as the name of the symlink created pointing to the newest file in the "date" naming scheme.
-# This is ignored if the sequence naming scheme is used.
-speciallog[].filehandler.symlink string default=""
-
-speciallog[].cachehandler.name string default=""
-speciallog[].cachehandler.size int default=1000
diff --git a/container-core/src/main/resources/configdefinitions/qr-searchers.def b/container-core/src/main/resources/configdefinitions/qr-searchers.def
index e2b4836c081..bb8f80052f1 100644
--- a/container-core/src/main/resources/configdefinitions/qr-searchers.def
+++ b/container-core/src/main/resources/configdefinitions/qr-searchers.def
@@ -14,6 +14,8 @@ com.yahoo.prelude.searcher.FieldCollapsingSearcher.extrafactor double default=2.
com.yahoo.prelude.searcher.FieldCollapsingSearcher.collapsefield string default="mid"
com.yahoo.prelude.searcher.BlendingSearcher.numthreads int default=200
+
+# The field we'll unique on, use [id] to unique on the document id
com.yahoo.prelude.searcher.BlendingSearcher.docid string default=""
com.yahoo.prelude.searcher.JuniperSearcher.source string default=""
@@ -74,8 +76,5 @@ searchcluster[].storagecluster.routespec string default=""
searchcluster[].dispatcher[].host string
searchcluster[].dispatcher[].port int
-## Not used. TODO: Remove on Vespa 7
-searchcluster[].rowbits int default=0
-
# Per dispatcher config-id might be nice to have, remove it until needed.
# searchcluster[].dispatcher[].configid reference
diff --git a/container-core/src/main/resources/configdefinitions/qr-templates.def b/container-core/src/main/resources/configdefinitions/qr-templates.def
deleted file mode 100644
index 46b1a5cbd65..00000000000
--- a/container-core/src/main/resources/configdefinitions/qr-templates.def
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-# Not used
-# TODO: Remove on Vespa 7
-namespace=container.core
-
-## Prefix to use in queries to choose a given template
-templateset[].urlprefix string
-
-## The id of the Java class which the given templateset
-## should be an instance of. This is only used for implementing
-## templates in the Java API instead of Velocity.
-templateset[].classid string default=""
-
-## The symbolic name of the Osgi bundle this template is located in.
-## Assumed to be the same as the classid if not set, and is only used
-## when classid is used.
-templateset[].bundle string default=""
-
-## The MIME type of a given template
-templateset[].mimetype string default="text/html"
-
-## The character set of a given template
-templateset[].encoding string default="iso-8859-1"
-
-## Not used
-templateset[].rankprofile int default=0
-
-
-## Not used in 1.0
-templateset[].keepalive bool default=false
-
-## Header template. Always rendered.
-templateset[].headertemplate string default=""
-
-## Footer template. Always rendered.
-templateset[].footertemplate string default=""
-
-## Nohits template. Rendered if there are no hits in the result.
-templateset[].nohitstemplate string default=""
-
-## Hit template. Rendered if there are hits in the result.
-templateset[].hittemplate string default=""
-
-## Error template. Rendered if there is an error condition. This is
-## not mutually exclusive with the (no)hit templates as such.
-templateset[].errortemplate string default=""
-
-## Aggregated groups header template.
-## Default rendering is used if missing
-templateset[].groupsheadertemplate string default="[DEFAULT]"
-
-## Aggregated range group template.
-## Default rendering is used if missing
-templateset[].rangegrouptemplate string default="[DEFAULT]"
-
-## Aggregated exact group template
-## Default rendering is used if missing
-templateset[].exactgrouptemplate string default="[DEFAULT]"
-
-## Aggregated groups footer template.
-## Default rendering is used if missing
-templateset[].groupsfootertemplate string default="[DEFAULT]"
-
-## Tags used to highlight results, starting a bolded section.
-## An empty string means the template should no override what
-## was inserted by the search chain.
-templateset[].highlightstarttag string default=""
-## Tags used to highlight results, ending a bolded section
-## An empty string means the template should no override what
-## was inserted by the search chain.
-templateset[].highlightendtag string default=""
-## Tags used to highlight results, separating dynamic snippets
-## An empty string means the template should no override what
-## was inserted by the search chain.
-templateset[].highlightseptag string default=""
-
-## The summary class to use for this template if there is none
-## defined in the query.
-templateset[].defaultsummaryclass string default=""
diff --git a/container-core/src/main/resources/configdefinitions/qr.def b/container-core/src/main/resources/configdefinitions/qr.def
index d6549674137..fe44b04e9d5 100644
--- a/container-core/src/main/resources/configdefinitions/qr.def
+++ b/container-core/src/main/resources/configdefinitions/qr.def
@@ -2,8 +2,7 @@
namespace=container
### All params must be flagged as 'restart' because this config is manually
-### retrieved by ConfiguredApplication.start to init the rpc server in
-### com.yahoo.container.Server.
+### retrieved by ConfiguredApplication.start to init the rpc server
## filedistributor rpc configuration
filedistributor.configid reference default="" restart
@@ -20,10 +19,6 @@ rpc.host string default="" restart
## The id this service should register itself with in slobrok
rpc.slobrokId string default="" restart
-## Whether to obtain coverage reports by default. This can be overridden with
-## the 'reportcoverage' HTTP parameter.
-coveragereports bool default=false restart
-
## A unique identifier string for this QRS. The only guarantee given is
## this string will be unique for every QRS in a Vespa application.
discriminator string default="qrserver.0" restart
diff --git a/container-core/src/main/resources/configdefinitions/vip-status.def b/container-core/src/main/resources/configdefinitions/vip-status.def
index 6aa10ff1b90..ed7ab3e4802 100644
--- a/container-core/src/main/resources/configdefinitions/vip-status.def
+++ b/container-core/src/main/resources/configdefinitions/vip-status.def
@@ -1,12 +1,6 @@
# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
namespace=container.core
-## If there is a Vespa search backend connected to this container, and that
-## backend is out of service, automatically remove this container from VIP
-## rotation, ignoring any status file.
-## TODO VESPA 7: This is always true and can be removed
-noSearchBackendsImpliesOutOfService bool default=true
-
## Whether to return hard-coded reply or serve "status.html" from disk
accessdisk bool default=false
diff --git a/container-core/src/test/java/com/yahoo/component/provider/test/ComponentClassTestCase.java b/container-core/src/test/java/com/yahoo/component/provider/test/ComponentClassTestCase.java
deleted file mode 100644
index 0db12ba2fea..00000000000
--- a/container-core/src/test/java/com/yahoo/component/provider/test/ComponentClassTestCase.java
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.component.provider.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.lang.reflect.Constructor;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.yahoo.component.AbstractComponent;
-import org.junit.Test;
-
-import com.yahoo.component.ComponentId;
-import com.yahoo.component.Version;
-import com.yahoo.component.provider.ComponentClass;
-import com.yahoo.config.ConfigInstance;
-import com.yahoo.config.core.IntConfig;
-import com.yahoo.config.core.StringConfig;
-import com.yahoo.vespa.config.ConfigKey;
-
-/**
- * @author <a href="gv@yahoo-inc.com">G. Voldengen</a>
- */
-@SuppressWarnings("unused")
-public class ComponentClassTestCase {
-
- @Test
- public void testComponentConstructor() throws NoSuchMethodException {
- ComponentClass<A> a = new ComponentClass<>(A.class);
- assertEquals(A.preferred(), a.getPreferredConstructor().getConstructor());
-
- ComponentClass<B> b = new ComponentClass<>(B.class);
- assertEquals(B.preferred(), b.getPreferredConstructor().getConstructor());
-
- ComponentClass<C> c = new ComponentClass<>(C.class);
- assertEquals(C.preferred(), c.getPreferredConstructor().getConstructor());
-
- ComponentClass<E> e = new ComponentClass<>(E.class);
- assertEquals(E.preferred(), e.getPreferredConstructor().getConstructor());
-
- ComponentClass<G> g = new ComponentClass<>(G.class);
- assertEquals(G.preferred(), g.getPreferredConstructor().getConstructor());
-
- try {
- ComponentClass<H> h = new ComponentClass<>(H.class);
- fail("Expected exception due to no legal public constructors.");
- } catch (IllegalArgumentException expected) {
- assertTrue(expected.getMessage().contains("must have at least one public constructor with an optional " +
- "component ID followed by an optional FileAcquirer and zero or more config arguments"));
- }
-
- try {
- ComponentClass<I> i = new ComponentClass<>(I.class);
- fail("Expected exception due to no public constructors.");
- } catch (RuntimeException expected) {
- assertTrue(expected.getMessage().contains("Class has no public constructors"));
- }
-
- try {
- ComponentClass<J> j = new ComponentClass<>(J.class);
- fail("Expected exception due to no public constructors.");
- } catch (RuntimeException expected) {
- assertTrue(expected.getMessage().contains("Class has no public constructors"));
- }
-
- ComponentClass<K> k = new ComponentClass<>(K.class);
- assertEquals(K.preferred(), k.getPreferredConstructor().getConstructor());
-
- ComponentClass<L> l = new ComponentClass<>(L.class);
- assertEquals(L.preferred(), l.getPreferredConstructor().getConstructor());
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void testCreateComponent() throws NoSuchMethodException {
- Map<ConfigKey, ConfigInstance> availableConfigs = new HashMap<>();
- String configId = "testConfigId";
- availableConfigs.put(new ConfigKey(StringConfig.class, configId), new StringConfig(new StringConfig.Builder()));
- availableConfigs.put(new ConfigKey(IntConfig.class, configId), new IntConfig(new IntConfig.Builder()));
-
- ComponentClass<TestComponent> testClass = new ComponentClass<>(TestComponent.class);
- TestComponent component = testClass.
- createComponent(new ComponentId("test", new Version(1)), availableConfigs, configId);
- assertEquals("test", component.getId().getName());
- assertEquals(1, component.getId().getVersion().getMajor());
- assertEquals(1, component.intVal);
- assertEquals("_default_", component.stringVal);
- }
-
- /**
- * Verifies that ComponentClass sets the ComponentId when a component that takes a ComponentId as
- * constructor argument fails to call super(id).
- */
- @Test
- public void testNullIdComponent() throws NoSuchMethodException {
- ComponentClass<NullIdComponent> testClass = new ComponentClass<>(NullIdComponent.class);
- NullIdComponent component = testClass.createComponent(new ComponentId("null-test", new Version(1)), new HashMap<ConfigKey, ConfigInstance>(), null);
- assertEquals("null-test", component.getId().getName());
- assertEquals(1, component.getId().getVersion().getMajor());
- }
-
- public static class TestComponent extends AbstractComponent {
- private int intVal = 0;
- private String stringVal = "";
- public TestComponent(ComponentId id, IntConfig intConfig, StringConfig stringConfig) {
- super(id);
- intVal = intConfig.intVal();
- stringVal = stringConfig.stringVal();
- }
- }
-
- /**
- * This component takes a ComponentId as constructor arg, but "forgets" to call super(id).
- */
- public static class NullIdComponent extends AbstractComponent {
- private int intVal = 0;
- private String stringVal = "";
- public NullIdComponent(ComponentId id) {
- }
- }
-
- private static class A extends AbstractComponent {
- public A(IntConfig intConfig) { }
- public A(IntConfig intConfig, StringConfig stringConfig) { }
- static Constructor<A> preferred() throws NoSuchMethodException{
- return A.class.getConstructor(IntConfig.class, StringConfig.class);
- }
- }
-
- private static class B extends AbstractComponent {
- public B(ComponentId id, IntConfig intConfig) { }
- public B(IntConfig intConfig) { }
- static Constructor<B> preferred() throws NoSuchMethodException{
- return B.class.getConstructor(ComponentId.class, IntConfig.class);
- }
- }
-
- private static class C extends AbstractComponent {
- public C(IntConfig intConfig, ComponentId id) { }
- public C(String id, IntConfig intConfig) { }
- static Constructor<C> preferred() throws NoSuchMethodException{
- return C.class.getConstructor(IntConfig.class, ComponentId.class);
- }
- }
-
- private static class E extends AbstractComponent {
- public E(IntConfig intConfig) { }
- public E(String id, String illegal, IntConfig intConfig, StringConfig stringConfig) { }
- static Constructor<E> preferred() throws NoSuchMethodException{
- return E.class.getConstructor(IntConfig.class);
- }
- }
-
- private static class G extends AbstractComponent {
- public G(ComponentId id) { }
- public G(String id) { }
- static Constructor<G> preferred() throws NoSuchMethodException{
- return G.class.getConstructor(ComponentId.class);
- }
- }
-
- private static class H extends AbstractComponent {
- public H(ComponentId id, String illegal) { }
- public H(String id, String illegal) { }
- }
-
- private static class I extends AbstractComponent {
- protected I(ComponentId id) { }
- }
-
- private static class J extends AbstractComponent {
- }
-
- private static class K extends AbstractComponent {
- public K() { }
- public K(ComponentId id, String illegal) { }
- static Constructor<K> preferred() throws NoSuchMethodException{
- return K.class.getConstructor();
- }
- }
-
- private static class L extends AbstractComponent {
- public L(long l, long ll, long lll) { }
- public L(ComponentId id, IntConfig intConfig) { }
- static Constructor<L> preferred() throws NoSuchMethodException{
- return L.class.getConstructor(ComponentId.class, IntConfig.class);
- }
- }
-}
diff --git a/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java b/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
index f8de32ee3ff..de9289a1e9d 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/VipStatusHandlerTestCase.java
@@ -53,8 +53,7 @@ public class VipStatusHandlerTestCase {
@Test
public void testHandleRequest() {
- VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(false)
- .noSearchBackendsImpliesOutOfService(false));
+ VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(false));
VipStatusHandler handler = new VipStatusHandler(Executors.newCachedThreadPool(), config, metric);
MockResponseHandler responseHandler = new MockResponseHandler();
HttpRequest request = createRequest();
@@ -81,8 +80,7 @@ public class VipStatusHandlerTestCase {
@Test
public void testFileNotFound() {
VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(true)
- .statusfile("/VipStatusHandlerTestCaseFileThatReallyReallyShouldNotExist")
- .noSearchBackendsImpliesOutOfService(false));
+ .statusfile("/VipStatusHandlerTestCaseFileThatReallyReallyShouldNotExist"));
VipStatusHandler handler = new VipStatusHandler(Executors.newCachedThreadPool(), config, metric);
NotFoundResponseHandler responseHandler = new NotFoundResponseHandler();
HttpRequest request = createRequest();
@@ -104,8 +102,10 @@ public class VipStatusHandlerTestCase {
String OK = "OK\n";
writer.write(OK);
writer.close();
- VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(true)
- .statusfile(statusFile.getAbsolutePath()).noSearchBackendsImpliesOutOfService(false));
+ VipStatusConfig config = new VipStatusConfig(
+ new VipStatusConfig.Builder()
+ .accessdisk(true)
+ .statusfile(statusFile.getAbsolutePath()));
VipStatusHandler handler = new VipStatusHandler(Executors.newCachedThreadPool(), config, metric);
MockResponseHandler responseHandler = new MockResponseHandler();
HttpRequest request = createRequest();
@@ -123,8 +123,7 @@ public class VipStatusHandlerTestCase {
@Test
public void testExplicitlyRotationControl() {
VipStatus vipStatus = new VipStatus();
- VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(false)
- .noSearchBackendsImpliesOutOfService(true));
+ VipStatusConfig config = new VipStatusConfig(new VipStatusConfig.Builder().accessdisk(false));
VipStatusHandler handler = new VipStatusHandler(Executors.newCachedThreadPool(), config, metric, vipStatus);
vipStatus.setInRotation(false);
diff --git a/container-core/src/test/java/com/yahoo/container/xml/bind/JAXBContextFactoryTest.java b/container-core/src/test/java/com/yahoo/container/xml/bind/JAXBContextFactoryTest.java
deleted file mode 100644
index 670b69516bf..00000000000
--- a/container-core/src/test/java/com/yahoo/container/xml/bind/JAXBContextFactoryTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.container.xml.bind;
-
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-
-/**
- * @author einarmr
- * @author gjoranv
- * @since 5.3
- */
-@SuppressWarnings("deprecation")
-public class JAXBContextFactoryTest {
- @Test
- public void testInstantiationAndDestruction() {
-
- com.yahoo.container.xml.providers.JAXBContextFactoryProvider provider = new com.yahoo.container.xml.providers.JAXBContextFactoryProvider();
- JAXBContextFactory factory = provider.get();
- assertThat(factory.getClass().getName(), equalTo(com.yahoo.container.xml.providers.JAXBContextFactoryProvider.FACTORY_CLASS));
-
- try {
- JAXBContextFactory.getContextPath((Class) null);
- fail("Should have failed with null classes.");
- } catch (Exception e) { }
-
- try {
- JAXBContextFactory.getContextPath();
- fail("Should have failed with empty list.");
- } catch (Exception e) { }
-
- assertThat(JAXBContextFactory.getContextPath(this.getClass()),
- equalTo(this.getClass().getPackage().getName()));
-
- assertThat(JAXBContextFactory.getContextPath(this.getClass(),
- String.class),
- equalTo(this.getClass().getPackage().getName() + ":" +
- String.class.getPackage().getName()));
-
- provider.deconstruct();
-
- }
-}