You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2013/09/28 15:18:42 UTC
svn commit: r1527183 [1/2] - in /manifoldcf/trunk: ./
connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/
connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/
connectors/jdbc/connecto...
Author: kwright
Date: Sat Sep 28 13:18:40 2013
New Revision: 1527183
URL: http://svn.apache.org/r1527183
Log:
Refactor how properties are obtained. Part of CONNECTORS-13.
Added:
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ManifoldCFConfiguration.java
- copied unchanged from r1527182, manifoldcf/branches/CONNECTORS-13/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ManifoldCFConfiguration.java
Removed:
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCFConfiguration.java
Modified:
manifoldcf/trunk/ (props changed)
manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/GTSConnector.java
manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/HttpPoster.java
manifoldcf/trunk/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java
manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnectionFactory.java
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/BaseAgentsInitializationCommand.java
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DefineOutputConnection.java
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DeleteOutputConnection.java
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/TransactionalAgentsInitializationCommand.java
manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/system/ManifoldCF.java
manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseDerby.java
manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDB.java
manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDBext.java
manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseMySQL.java
manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BasePostgresql.java
manifoldcf/trunk/framework/api-service/src/main/java/org/apache/manifoldcf/apiservice/ServletListener.java
manifoldcf/trunk/framework/authority-service/src/main/java/org/apache/manifoldcf/authorityservice/ServletListener.java
manifoldcf/trunk/framework/combined-service/src/main/java/org/apache/manifoldcf/combinedservice/ServletListener.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/DBInitializationCommand.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/LockClean.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/ConnectionFactory.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceHSQLDB.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/DBInterfaceFactory.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ILockManager.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/LockManagerFactory.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/jdbcpool/ConnectionPoolManager.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockManager.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/Logging.java
manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCF.java
manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/Base.java
manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/UILockSpinner.java
manifoldcf/trunk/framework/crawler-ui/src/main/java/org/apache/manifoldcf/crawlerui/ServletListener.java
manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFCombinedJettyRunner.java
manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFJettyRunner.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseAuthoritiesInitializationCommand.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseMappersInitializationCommand.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/ChangeAuthSpec.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckAll.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckConfigured.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/DefineAuthorityConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/DefineMappingConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/DeleteAuthorityConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/DeleteMappingConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/system/ManifoldCF.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/AbortJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/AddScheduledTime.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/BaseCrawlerInitializationCommand.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/ChangeJobDocSpec.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/CheckConfigured.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/DefineJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/DefineRepositoryConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/DeleteJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/DeleteRepositoryConnection.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/FindJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/GetJobSchedule.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/InitializeAndRegister.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/ListJobStatuses.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/ListJobs.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/PauseJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RestartJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunDocumentStatus.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunMaxActivityHistory.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunMaxBandwidthHistory.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunQueueStatus.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunResultHistory.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/RunSimpleHistory.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/StartJob.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/TransactionalCrawlerInitializationCommand.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/WaitForJobDeleted.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/WaitForJobInactive.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/WaitJobPaused.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/CrawlerAgent.java
manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/system/ManifoldCF.java
manifoldcf/trunk/framework/pull-agent/src/test/java/org/apache/manifoldcf/crawler/tests/BaseDerby.java
manifoldcf/trunk/framework/pull-agent/src/test/java/org/apache/manifoldcf/crawler/tests/BaseHSQLDB.java
manifoldcf/trunk/framework/pull-agent/src/test/java/org/apache/manifoldcf/crawler/tests/BaseHSQLDBext.java
manifoldcf/trunk/framework/pull-agent/src/test/java/org/apache/manifoldcf/crawler/tests/BaseMySQL.java
manifoldcf/trunk/framework/pull-agent/src/test/java/org/apache/manifoldcf/crawler/tests/BasePostgresql.java
Propchange: manifoldcf/trunk/
------------------------------------------------------------------------------
Merged /manifoldcf/branches/CONNECTORS-13:r1525862-1527182
Modified: manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/GTSConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/GTSConnector.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/GTSConnector.java (original)
+++ manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/GTSConnector.java Sat Sep 28 13:18:40 2013
@@ -114,7 +114,7 @@ public class GTSConnector extends org.ap
String userID = params.getParameter(GTSConfig.PARAM_USERID);
String password = params.getObfuscatedParameter(GTSConfig.PARAM_PASSWORD);
String realm = params.getParameter(GTSConfig.PARAM_REALM);
- poster = new HttpPoster(realm,userID,password,ingestURI);
+ poster = new HttpPoster(currentContext,realm,userID,password,ingestURI);
}
}
Modified: manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/HttpPoster.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/HttpPoster.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/HttpPoster.java (original)
+++ manifoldcf/trunk/connectors/gts/connector/src/main/java/org/apache/manifoldcf/agents/output/gts/HttpPoster.java Sat Sep 28 13:18:40 2013
@@ -63,14 +63,16 @@ public class HttpPoster
private int port = 80;
private String protocol = null;
- private int buffersize = 32768; // default buffer size
- double sizeCoefficient = 0.0005; // 20 ms additional timeout per 2000 bytes, pulled out of my butt
+ /** Default buffer size */
+ private final int buffersize;
+ /** Size coefficient */
+ private static double sizeCoefficient = 0.0005; // 20 ms additional timeout per 2000 bytes, pulled out of my butt
/** the number of times we should poll for the response */
- int responseRetries = 9000; // Long basic wait: 3 minutes. This will also be added to by a term based on the size of the request.
+ private final int responseRetries;
/** how long we should wait before checking for a new stream */
- long responseRetryWait = 20L;
+ private final long responseRetryWait;
/** How long to wait before retrying a failed ingestion */
- long interruptionRetryTime = 60000L;
+ private final long interruptionRetryTime;
/** This is the secure socket factory we will use. I'm presuming it's thread-safe, but
* if not, synchronization blocks are in order when it's used. */
@@ -95,7 +97,7 @@ public class HttpPoster
* @param password is the unencoded password, or null.
* @param postURI the uri to post the request to
*/
- public HttpPoster(String realm, String userID, String password, String postURI)
+ public HttpPoster(IThreadContext threadContext, String realm, String userID, String password, String postURI)
throws ManifoldCFException
{
if (userID != null && userID.length() > 0 && password != null)
@@ -136,18 +138,10 @@ public class HttpPoster
port = 80;
}
- String x = ManifoldCF.getProperty(ingestBufferSizeProperty);
- if (x != null && x.length() > 0)
- buffersize = new Integer(x).intValue();
- x = ManifoldCF.getProperty(ingestResponseRetryCount);
- if (x != null && x.length() > 0)
- responseRetries = new Integer(x).intValue();
- x = ManifoldCF.getProperty(ingestResponseRetryInterval);
- if (x != null && x.length() > 0)
- responseRetryWait = new Long(x).longValue();
- x = ManifoldCF.getProperty(ingestRescheduleInterval);
- if (x != null && x.length() > 0)
- interruptionRetryTime = new Long(x).longValue();
+ buffersize = LockManagerFactory.getIntProperty(threadContext,ingestBufferSizeProperty,32768);
+ responseRetries = LockManagerFactory.getIntProperty(threadContext,ingestResponseRetryCount,9000);
+ responseRetryWait = LockManagerFactory.getIntProperty(threadContext,ingestResponseRetryInterval,20);
+ interruptionRetryTime = LockManagerFactory.getIntProperty(threadContext,ingestRescheduleInterval,60000);
}
/**
Modified: manifoldcf/trunk/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java (original)
+++ manifoldcf/trunk/connectors/jcifs/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/sharedrive/SharedDriveConnector.java Sat Sep 28 13:18:40 2013
@@ -54,6 +54,7 @@ import org.apache.manifoldcf.core.interf
import org.apache.manifoldcf.core.interfaces.KeystoreManagerFactory;
import org.apache.manifoldcf.core.interfaces.Configuration;
import org.apache.manifoldcf.core.interfaces.ConfigurationNode;
+import org.apache.manifoldcf.core.interfaces.LockManagerFactory;
import org.apache.manifoldcf.crawler.interfaces.DocumentSpecification;
import org.apache.manifoldcf.crawler.interfaces.IDocumentIdentifierStream;
import org.apache.manifoldcf.crawler.interfaces.IProcessActivity;
@@ -120,7 +121,7 @@ public class SharedDriveConnector extend
private boolean useSIDs = true;
private NtlmPasswordAuthentication pa;
-
+
/** Deny access token for default authority */
private final static String defaultAuthorityDenyToken = GLOBAL_DENY_TOKEN;
@@ -128,9 +129,19 @@ public class SharedDriveConnector extend
*/
public SharedDriveConnector()
{
- // We need to know whether to operate in NTLMv2 mode, or in NTLM mode.
- String value = ManifoldCF.getProperty(PROPERTY_JCIFS_USE_NTLM_V1);
- if (value == null || value.toLowerCase().equals("false"))
+ }
+
+ /** Set thread context.
+ * Use the opportunity to set the system properties we'll need.
+ */
+ @Override
+ public void setThreadContext(IThreadContext threadContext)
+ throws ManifoldCFException
+ {
+ super.setThreadContext(threadContext);
+ // We need to know whether to operate in NTLMv2 mode, or in NTLM mode. We do this before jcifs called the first time.
+ boolean useV1 = LockManagerFactory.getBooleanProperty(threadContext, PROPERTY_JCIFS_USE_NTLM_V1, false);
+ if (!useV1)
{
System.setProperty("jcifs.smb.lmCompatibility","3");
System.setProperty("jcifs.smb.client.useExtendedSecurity","true");
@@ -141,13 +152,14 @@ public class SharedDriveConnector extend
System.setProperty("jcifs.smb.client.useExtendedSecurity","false");
}
}
-
+
/** Establish a "session". In the case of the jcifs connector, this just builds the appropriate smbconnectionPath string, and does the necessary checks. */
protected void getSession()
throws ManifoldCFException
{
if (smbconnectionPath == null)
{
+
// Get the server
if (server == null || server.length() == 0)
throw new ManifoldCFException("Missing parameter '"+SharedDriveParameters.server+"'");
Modified: manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnectionFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnectionFactory.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnectionFactory.java (original)
+++ manifoldcf/trunk/connectors/jdbc/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/jdbc/JDBCConnectionFactory.java Sat Sep 28 13:18:40 2013
@@ -50,7 +50,7 @@ public class JDBCConnectionFactory
driverMap.put("mysql:","com.mysql.jdbc.Driver");
try
{
- _pool = new ConnectionPoolManager(120);
+ _pool = new ConnectionPoolManager(120,false);
}
catch (Exception e)
{
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/BaseAgentsInitializationCommand.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/BaseAgentsInitializationCommand.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/BaseAgentsInitializationCommand.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/BaseAgentsInitializationCommand.java Sat Sep 28 13:18:40 2013
@@ -32,8 +32,8 @@ public abstract class BaseAgentsInitiali
{
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
doExecute(tc);
}
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DefineOutputConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DefineOutputConnection.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DefineOutputConnection.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DefineOutputConnection.java Sat Sep 28 13:18:40 2013
@@ -51,8 +51,8 @@ public class DefineOutputConnection
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IOutputConnectionManager mgr = OutputConnectionManagerFactory.make(tc);
IOutputConnection conn = mgr.create();
conn.setName(connectionName);
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DeleteOutputConnection.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DeleteOutputConnection.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DeleteOutputConnection.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/DeleteOutputConnection.java Sat Sep 28 13:18:40 2013
@@ -46,8 +46,8 @@ public class DeleteOutputConnection
String connectionName = args[0];
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IOutputConnectionManager mgr = OutputConnectionManagerFactory.make(tc);
mgr.delete(connectionName);
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/TransactionalAgentsInitializationCommand.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/TransactionalAgentsInitializationCommand.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/TransactionalAgentsInitializationCommand.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/TransactionalAgentsInitializationCommand.java Sat Sep 28 13:18:40 2013
@@ -30,8 +30,8 @@ public abstract class TransactionalAgent
{
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IDBInterface database = DBInterfaceFactory.make(tc,
org.apache.manifoldcf.agents.system.ManifoldCF.getMasterDatabaseName(),
org.apache.manifoldcf.agents.system.ManifoldCF.getMasterDatabaseUsername(),
Modified: manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/system/ManifoldCF.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/system/ManifoldCF.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/system/ManifoldCF.java (original)
+++ manifoldcf/trunk/framework/agents/src/main/java/org/apache/manifoldcf/agents/system/ManifoldCF.java Sat Sep 28 13:18:40 2013
@@ -37,30 +37,30 @@ public class ManifoldCF extends org.apac
/** Initialize environment.
*/
- public static void initializeEnvironment()
+ public static void initializeEnvironment(IThreadContext threadContext)
throws ManifoldCFException
{
synchronized (initializeFlagLock)
{
// Do core initialization
- org.apache.manifoldcf.core.system.ManifoldCF.initializeEnvironment();
+ org.apache.manifoldcf.core.system.ManifoldCF.initializeEnvironment(threadContext);
// Local initialization
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(threadContext);
}
}
/** Clean up environment.
*/
- public static void cleanUpEnvironment()
+ public static void cleanUpEnvironment(IThreadContext threadContext)
{
synchronized (initializeFlagLock)
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
- org.apache.manifoldcf.core.system.ManifoldCF.cleanUpEnvironment();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(threadContext);
+ org.apache.manifoldcf.core.system.ManifoldCF.cleanUpEnvironment(threadContext);
}
}
- public static void localInitialize()
+ public static void localInitialize(IThreadContext threadContext)
throws ManifoldCFException
{
synchronized (initializeFlagLock)
@@ -73,22 +73,22 @@ public class ManifoldCF extends org.apac
// Initialize the local loggers
Logging.initializeLoggers();
- Logging.setLogLevels();
+ Logging.setLogLevels(threadContext);
agentsInitialized = true;
}
}
- public static void localCleanup()
+ public static void localCleanup(IThreadContext threadContext)
{
}
/** Reset the environment.
*/
- public static void resetEnvironment()
+ public static void resetEnvironment(IThreadContext threadContext)
{
synchronized (initializeFlagLock)
{
- org.apache.manifoldcf.core.system.ManifoldCF.resetEnvironment();
+ org.apache.manifoldcf.core.system.ManifoldCF.resetEnvironment(threadContext);
synchronized (runningHash)
{
stopAgentsRun = false;
Modified: manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseDerby.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseDerby.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseDerby.java (original)
+++ manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseDerby.java Sat Sep 28 13:18:40 2013
@@ -111,13 +111,13 @@ public class BaseDerby extends org.apach
throws Exception
{
super.initializeSystem();
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(ThreadContextFactory.make());
}
protected void cleanupSystem()
throws Exception
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(ThreadContextFactory.make());
super.cleanupSystem();
}
Modified: manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDB.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDB.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDB.java (original)
+++ manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDB.java Sat Sep 28 13:18:40 2013
@@ -111,13 +111,13 @@ public class BaseHSQLDB extends org.apac
throws Exception
{
super.initializeSystem();
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(ThreadContextFactory.make());
}
protected void cleanupSystem()
throws Exception
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(ThreadContextFactory.make());
super.cleanupSystem();
}
Modified: manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDBext.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDBext.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDBext.java (original)
+++ manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseHSQLDBext.java Sat Sep 28 13:18:40 2013
@@ -114,13 +114,13 @@ public class BaseHSQLDBext extends org.a
throws Exception
{
super.initializeSystem();
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(ThreadContextFactory.make());
}
protected void cleanupSystem()
throws Exception
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(ThreadContextFactory.make());
super.cleanupSystem();
}
Modified: manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseMySQL.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseMySQL.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseMySQL.java (original)
+++ manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BaseMySQL.java Sat Sep 28 13:18:40 2013
@@ -111,13 +111,13 @@ public class BaseMySQL extends org.apach
throws Exception
{
super.initializeSystem();
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(ThreadContextFactory.make());
}
protected void cleanupSystem()
throws Exception
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(ThreadContextFactory.make());
super.cleanupSystem();
}
Modified: manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BasePostgresql.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BasePostgresql.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BasePostgresql.java (original)
+++ manifoldcf/trunk/framework/agents/src/test/java/org/apache/manifoldcf/agents/tests/BasePostgresql.java Sat Sep 28 13:18:40 2013
@@ -111,13 +111,13 @@ public class BasePostgresql extends org.
throws Exception
{
super.initializeSystem();
- org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localInitialize(ThreadContextFactory.make());
}
protected void cleanupSystem()
throws Exception
{
- org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup();
+ org.apache.manifoldcf.agents.system.ManifoldCF.localCleanup(ThreadContextFactory.make());
super.cleanupSystem();
}
Modified: manifoldcf/trunk/framework/api-service/src/main/java/org/apache/manifoldcf/apiservice/ServletListener.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/api-service/src/main/java/org/apache/manifoldcf/apiservice/ServletListener.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/api-service/src/main/java/org/apache/manifoldcf/apiservice/ServletListener.java (original)
+++ manifoldcf/trunk/framework/api-service/src/main/java/org/apache/manifoldcf/apiservice/ServletListener.java Sat Sep 28 13:18:40 2013
@@ -33,7 +33,7 @@ public class ServletListener implements
{
try
{
- ManifoldCF.initializeEnvironment();
+ ManifoldCF.initializeEnvironment(ThreadContextFactory.make());
}
catch (ManifoldCFException e)
{
@@ -43,7 +43,7 @@ public class ServletListener implements
public void contextDestroyed(ServletContextEvent sce)
{
- ManifoldCF.cleanUpEnvironment();
+ ManifoldCF.cleanUpEnvironment(ThreadContextFactory.make());
}
}
Modified: manifoldcf/trunk/framework/authority-service/src/main/java/org/apache/manifoldcf/authorityservice/ServletListener.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/authority-service/src/main/java/org/apache/manifoldcf/authorityservice/ServletListener.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/authority-service/src/main/java/org/apache/manifoldcf/authorityservice/ServletListener.java (original)
+++ manifoldcf/trunk/framework/authority-service/src/main/java/org/apache/manifoldcf/authorityservice/ServletListener.java Sat Sep 28 13:18:40 2013
@@ -33,7 +33,7 @@ public class ServletListener implements
{
try
{
- ManifoldCF.initializeEnvironment();
+ ManifoldCF.initializeEnvironment(ThreadContextFactory.make());
}
catch (ManifoldCFException e)
{
@@ -43,7 +43,7 @@ public class ServletListener implements
public void contextDestroyed(ServletContextEvent sce)
{
- ManifoldCF.cleanUpEnvironment();
+ ManifoldCF.cleanUpEnvironment(ThreadContextFactory.make());
}
}
Modified: manifoldcf/trunk/framework/combined-service/src/main/java/org/apache/manifoldcf/combinedservice/ServletListener.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/combined-service/src/main/java/org/apache/manifoldcf/combinedservice/ServletListener.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/combined-service/src/main/java/org/apache/manifoldcf/combinedservice/ServletListener.java (original)
+++ manifoldcf/trunk/framework/combined-service/src/main/java/org/apache/manifoldcf/combinedservice/ServletListener.java Sat Sep 28 13:18:40 2013
@@ -36,9 +36,8 @@ public class ServletListener implements
{
try
{
- ManifoldCF.initializeEnvironment();
-
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
ManifoldCF.createSystemDatabase(tc);
ManifoldCF.installTables(tc);
@@ -55,16 +54,16 @@ public class ServletListener implements
public void contextDestroyed(ServletContextEvent sce)
{
+ IThreadContext tc = ThreadContextFactory.make();
try
{
- IThreadContext tc = ThreadContextFactory.make();
ManifoldCF.stopAgents(tc);
}
catch (ManifoldCFException e)
{
throw new RuntimeException("Cannot shutdown servlet cleanly; "+e.getMessage(),e);
}
- ManifoldCF.cleanUpEnvironment();
+ ManifoldCF.cleanUpEnvironment(tc);
}
}
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/DBInitializationCommand.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/DBInitializationCommand.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/DBInitializationCommand.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/DBInitializationCommand.java Sat Sep 28 13:18:40 2013
@@ -49,8 +49,8 @@ public abstract class DBInitializationCo
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
doExecute(tc);
}
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/LockClean.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/LockClean.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/LockClean.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/LockClean.java Sat Sep 28 13:18:40 2013
@@ -38,7 +38,7 @@ public class LockClean implements Initia
*/
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
+ ManifoldCF.initializeEnvironment(ThreadContextFactory.make());
String synchDir = ManifoldCF.getFileProperty(org.apache.manifoldcf.core.lockmanager.LockManager.synchDirectoryProperty).toString();
if (synchDir != null)
{
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/ConnectionFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/ConnectionFactory.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/ConnectionFactory.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/ConnectionFactory.java Sat Sep 28 13:18:40 2013
@@ -35,9 +35,6 @@ public class ConnectionFactory
{
public static final String _rcsid = "@(#)$Id: ConnectionFactory.java 988245 2010-08-23 18:39:35Z kwright $";
- // This default is designed to avoid strange errors with people using postgresql out of the box, where the maximum connection count is set to 100.
- private static final int defaultMaxDBConnections = 50;
- private static final int defaultTimeoutValue = 86400;
private static HashMap checkedOutConnections = new HashMap();
@@ -47,7 +44,8 @@ public class ConnectionFactory
{
}
- public static WrappedConnection getConnection(String jdbcUrl, String jdbcDriver, String database, String userName, String password)
+ public static WrappedConnection getConnection(String jdbcUrl, String jdbcDriver, String database, String userName, String password,
+ int maxDBConnections, boolean debug)
throws ManifoldCFException
{
// Make sure database driver is registered
@@ -59,8 +57,8 @@ public class ConnectionFactory
{
throw new ManifoldCFException("Unable to load database driver: "+e.getMessage(),e,ManifoldCFException.SETUP_ERROR);
}
-
- ConnectionPoolManager cpm = poolManager.createPoolManager();
+
+ ConnectionPoolManager cpm = poolManager.createPoolManager(debug);
try
{
@@ -76,18 +74,6 @@ public class ConnectionFactory
}
if (cp == null)
{
- String handleMax = ManifoldCF.getProperty(ManifoldCF.databaseHandleMaxcountProperty);
- int maxDBConnections = defaultMaxDBConnections;
- if (handleMax != null && handleMax.length() > 0)
- maxDBConnections = Integer.parseInt(handleMax);
- //String timeoutValueString = ManifoldCF.getProperty(ManifoldCF.databaseHandleTimeoutProperty);
- //int timeoutValue = defaultTimeoutValue;
- //if (timeoutValueString != null && timeoutValueString.length() > 0)
- // timeoutValue = Integer.parseInt(timeoutValueString);
-
- // Logging.db.debug("adding pool alias [" + database + "]");
- // I had to up the timeout from one hour to 3 due to the webconnector keeping some connections open a very long time...
- //System.out.println("jdbcUrl = '"+jdbcUrl+"', userName='"+userName+"', password='"+password+"'");
cpm.addAlias(database, jdbcDriver, jdbcUrl,
userName, password,
maxDBConnections, 300000L);
@@ -173,19 +159,19 @@ public class ConnectionFactory
{
private Integer poolExistenceLock = new Integer(0);
private ConnectionPoolManager _pool = null;
-
+
private PoolManager()
{
}
- public ConnectionPoolManager createPoolManager()
+ public ConnectionPoolManager createPoolManager(boolean debug)
throws ManifoldCFException
{
synchronized (poolExistenceLock)
{
if (_pool != null)
return _pool;
- _pool = new ConnectionPoolManager(100);
+ _pool = new ConnectionPoolManager(100, debug);
return _pool;
}
}
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceDerby.java Sat Sep 28 13:18:40 2013
@@ -91,6 +91,7 @@ public class DBInterfaceDerby extends Da
protected static String getFullDatabasePath(String databaseName)
throws ManifoldCFException
{
+ // Derby is local file based so it cannot currently be used in zookeeper mode
File path = ManifoldCF.getFileProperty(databasePathProperty);
if (path == null)
throw new ManifoldCFException("Derby database requires '"+databasePathProperty+"' property, containing a relative path");
@@ -1245,7 +1246,7 @@ public class DBInterfaceDerby extends Da
if (threshold == null)
{
// Look for this parameter; if we don't find it, use a default value.
- reindexThreshold = ManifoldCF.getIntProperty("org.apache.manifoldcf.db.derby.reindex."+tableName,250000);
+ reindexThreshold = lockManager.getSharedConfiguration().getIntProperty("org.apache.manifoldcf.db.derby.reindex."+tableName,250000);
reindexThresholds.put(tableName,new Integer(reindexThreshold));
}
else
@@ -1302,7 +1303,7 @@ public class DBInterfaceDerby extends Da
if (threshold == null)
{
// Look for this parameter; if we don't find it, use a default value.
- analyzeThreshold = ManifoldCF.getIntProperty("org.apache.manifoldcf.db.derby.analyze."+tableName,5000);
+ analyzeThreshold = lockManager.getSharedConfiguration().getIntProperty("org.apache.manifoldcf.db.derby.analyze."+tableName,5000);
analyzeThresholds.put(tableName,new Integer(analyzeThreshold));
}
else
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceHSQLDB.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceHSQLDB.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceHSQLDB.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceHSQLDB.java Sat Sep 28 13:18:40 2013
@@ -58,9 +58,9 @@ public class DBInterfaceHSQLDB extends D
public DBInterfaceHSQLDB(IThreadContext tc, String databaseName, String userName, String password)
throws ManifoldCFException
{
- super(tc,getJDBCString(databaseName),_driver,getDatabaseString(databaseName),userName,password);
+ super(tc,getJDBCString(tc,databaseName),_driver,getDatabaseString(tc,databaseName),userName,password);
cacheKey = CacheKeyFactory.makeDatabaseKey(this.databaseName);
- this.isRemote = ManifoldCF.getProperty(databaseProtocolProperty) != null;
+ this.isRemote = LockManagerFactory.getProperty(tc,databaseProtocolProperty) != null;
this.userName = userName;
this.password = password;
if (this.isRemote)
@@ -69,34 +69,34 @@ public class DBInterfaceHSQLDB extends D
schemaNameForQueries = "PUBLIC";
}
- protected static String getJDBCString(String databaseName)
+ protected static String getJDBCString(IThreadContext tc, String databaseName)
throws ManifoldCFException
{
// For local, we use the database name as the name of the database files.
// For remote, we connect to an instance specified by a different property, and use the database name as the schema name.
- String protocol = ManifoldCF.getProperty(databaseProtocolProperty);
+ String protocol = LockManagerFactory.getProperty(tc,databaseProtocolProperty);
if (protocol == null)
return _localUrl+getFullDatabasePath(databaseName);
// Remote instance. Build the URL.
if (legalProtocolValues.get(protocol) == null)
throw new ManifoldCFException("The value of the '"+databaseProtocolProperty+"' property was illegal; try hsql, http, or https");
- String server = ManifoldCF.getProperty(databaseServerProperty);
+ String server = LockManagerFactory.getProperty(tc,databaseServerProperty);
if (server == null)
throw new ManifoldCFException("HSQLDB remote mode requires '"+databaseServerProperty+"' property, containing a server name or IP address");
- String port = ManifoldCF.getProperty(databasePortProperty);
+ String port = LockManagerFactory.getProperty(tc,databasePortProperty);
if (port != null && port.length() > 0)
server += ":"+port;
- String instanceName = ManifoldCF.getProperty(databaseInstanceProperty);
+ String instanceName = LockManagerFactory.getProperty(tc,databaseInstanceProperty);
if (instanceName != null && instanceName.length() > 0)
server += "/" + instanceName;
return _remoteUrl + protocol + "://" + server;
}
- protected static String getDatabaseString(String databaseName)
+ protected static String getDatabaseString(IThreadContext tc, String databaseName)
throws ManifoldCFException
{
- String protocol = ManifoldCF.getProperty(databaseProtocolProperty);
+ String protocol = LockManagerFactory.getProperty(tc,databaseProtocolProperty);
if (protocol == null)
return getFullDatabasePath(databaseName);
return databaseName;
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfaceMySQL.java Sat Sep 28 13:18:40 2013
@@ -62,14 +62,15 @@ public class DBInterfaceMySQL extends Da
public DBInterfaceMySQL(IThreadContext tc, String databaseName, String userName, String password)
throws ManifoldCFException
{
- super(tc,getJdbcUrl(databaseName),_driver,databaseName,userName,password);
+ super(tc,getJdbcUrl(tc,databaseName),_driver,databaseName,userName,password);
cacheKey = CacheKeyFactory.makeDatabaseKey(this.databaseName);
lockManager = LockManagerFactory.make(tc);
}
- private static String getJdbcUrl(String theDatabaseName)
+ private static String getJdbcUrl(IThreadContext tc, String theDatabaseName)
+ throws ManifoldCFException
{
- String server = ManifoldCF.getProperty(mysqlServerProperty);
+ String server = LockManagerFactory.getProperty(tc,mysqlServerProperty);
if (server == null || server.length() == 0)
server = "localhost";
return "jdbc:mysql://"+server+"/"+theDatabaseName+"?useUnicode=true&characterEncoding=utf8";
@@ -615,7 +616,7 @@ public class DBInterfaceMySQL extends Da
throws ManifoldCFException
{
// Get the client property
- String client = ManifoldCF.getProperty(mysqlClientProperty);
+ String client = lockManager.getSharedConfiguration().getProperty(mysqlClientProperty);
if (client == null || client.length() == 0)
client = "localhost";
@@ -1278,7 +1279,7 @@ public class DBInterfaceMySQL extends Da
if (threshold == null)
{
// Look for this parameter; if we don't find it, use a default value.
- analyzeThreshold = ManifoldCF.getIntProperty("org.apache.manifoldcf.db.mysql.analyze."+tableName,10000);
+ analyzeThreshold = lockManager.getSharedConfiguration().getIntProperty("org.apache.manifoldcf.db.mysql.analyze."+tableName,10000);
analyzeThresholds.put(tableName,new Integer(analyzeThreshold));
}
else
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/DBInterfacePostgreSQL.java Sat Sep 28 13:18:40 2013
@@ -38,10 +38,10 @@ public class DBInterfacePostgreSQL exten
private static final String _driver = "org.postgresql.Driver";
/** A lock manager handle. */
- protected ILockManager lockManager;
+ protected final ILockManager lockManager;
// Database cache key
- protected String cacheKey;
+ protected final String cacheKey;
// Postgresql serializable transactions are broken in that transactions that occur within them do not in fact work properly.
// So, once we enter the serializable realm, STOP any additional transactions from doing anything at all.
@@ -78,17 +78,18 @@ public class DBInterfacePostgreSQL exten
public DBInterfacePostgreSQL(IThreadContext tc, String databaseName, String userName, String password)
throws ManifoldCFException
{
- super(tc,getJdbcUrl(databaseName),_driver,databaseName,userName,password);
+ super(tc,getJdbcUrl(tc,databaseName),_driver,databaseName,userName,password);
cacheKey = CacheKeyFactory.makeDatabaseKey(this.databaseName);
lockManager = LockManagerFactory.make(tc);
}
- private static String getJdbcUrl(final String databaseName)
+ private static String getJdbcUrl(final IThreadContext tc, final String databaseName)
+ throws ManifoldCFException
{
String jdbcUrl = _defaultUrl + databaseName;
- final String hostname = ManifoldCF.getProperty(postgresqlHostnameProperty);
- final String ssl = ManifoldCF.getProperty(postgresqlSslProperty);
- final String port = ManifoldCF.getProperty(postgresqlPortProperty);
+ final String hostname = LockManagerFactory.getProperty(tc,postgresqlHostnameProperty);
+ final String ssl = LockManagerFactory.getProperty(tc,postgresqlSslProperty);
+ final String port = LockManagerFactory.getProperty(tc,postgresqlPortProperty);
if (hostname != null && hostname.length() > 0)
{
jdbcUrl = "jdbc:postgresql://" + hostname;
@@ -1420,7 +1421,7 @@ public class DBInterfacePostgreSQL exten
if (threshold == null)
{
// Look for this parameter; if we don't find it, use a default value.
- reindexThreshold = ManifoldCF.getIntProperty("org.apache.manifoldcf.db.postgres.reindex."+tableName,250000);
+ reindexThreshold = lockManager.getSharedConfiguration().getIntProperty("org.apache.manifoldcf.db.postgres.reindex."+tableName,250000);
reindexThresholds.put(tableName,new Integer(reindexThreshold));
}
else
@@ -1477,7 +1478,7 @@ public class DBInterfacePostgreSQL exten
if (threshold == null)
{
// Look for this parameter; if we don't find it, use a default value.
- analyzeThreshold = ManifoldCF.getIntProperty("org.apache.manifoldcf.db.postgres.analyze."+tableName,2000);
+ analyzeThreshold = lockManager.getSharedConfiguration().getIntProperty("org.apache.manifoldcf.db.postgres.analyze."+tableName,2000);
analyzeThresholds.put(tableName,new Integer(analyzeThreshold));
}
else
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/database/Database.java Sat Sep 28 13:18:40 2013
@@ -38,11 +38,11 @@ public abstract class Database
{
public static final String _rcsid = "@(#)$Id: Database.java 988245 2010-08-23 18:39:35Z kwright $";
- protected ICacheManager cacheManager;
- protected IThreadContext context;
- protected String jdbcUrl;
- protected String jdbcDriverClass;
- protected String databaseName;
+ protected final ICacheManager cacheManager;
+ protected final IThreadContext context;
+ protected final String jdbcUrl;
+ protected final String jdbcDriverClass;
+ protected final String databaseName;
protected String userName;
protected String password;
protected TransactionHandle th = null;
@@ -52,7 +52,9 @@ public abstract class Database
protected int delayedTransactionDepth = 0;
protected Map<String,Modifications> modificationsSet = new HashMap<String,Modifications>();
- protected long maxQueryTime;
+ protected final long maxQueryTime;
+ protected final boolean debug;
+ protected final int maxDBConnections;
protected static Random random = new Random();
@@ -68,7 +70,10 @@ public abstract class Database
this.userName = userName;
this.password = password;
- this.maxQueryTime = ((long)ManifoldCF.getIntProperty(ManifoldCF.databaseQueryMaxTimeProperty,60)) * 1000L;
+ this.maxQueryTime = ((long)LockManagerFactory.getIntProperty(context, ManifoldCF.databaseQueryMaxTimeProperty,60)) * 1000L;
+ this.debug = LockManagerFactory.getBooleanProperty(context, ManifoldCF.databaseConnectionTrackingProperty, false);
+ this.maxDBConnections = LockManagerFactory.getIntProperty(context, ManifoldCF.databaseHandleMaxcountProperty, 50);
+
this.cacheManager = CacheManagerFactory.make(context);
}
@@ -247,7 +252,8 @@ public abstract class Database
// Get a semipermanent connection
if (connection == null)
{
- connection = ConnectionFactory.getConnection(jdbcUrl,jdbcDriverClass,databaseName,userName,password);
+ connection = ConnectionFactory.getConnection(jdbcUrl,jdbcDriverClass,databaseName,userName,password,
+ maxDBConnections,debug);
try
{
// Initialize the connection (for HSQLDB)
@@ -755,7 +761,8 @@ public abstract class Database
else
{
// Grab a connection
- WrappedConnection tempConnection = ConnectionFactory.getConnection(jdbcUrl,jdbcDriverClass,databaseName,userName,password);
+ WrappedConnection tempConnection = ConnectionFactory.getConnection(jdbcUrl,jdbcDriverClass,databaseName,userName,password,
+ maxDBConnections,debug);
try
{
// Initialize the connection (for HSQLDB)
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/DBInterfaceFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/DBInterfaceFactory.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/DBInterfaceFactory.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/DBInterfaceFactory.java Sat Sep 28 13:18:40 2013
@@ -40,9 +40,8 @@ public class DBInterfaceFactory
Object x = context.get(dbName);
if (x == null || !(x instanceof IDBInterface))
{
- String implementationClass = ManifoldCF.getProperty(ManifoldCF.databaseImplementation);
- if (implementationClass == null)
- implementationClass = "org.apache.manifoldcf.core.database.DBInterfacePostgreSQL";
+ String implementationClass = LockManagerFactory.getStringProperty(context, ManifoldCF.databaseImplementation,
+ "org.apache.manifoldcf.core.database.DBInterfacePostgreSQL");
try
{
Class c = Class.forName(implementationClass);
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ILockManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ILockManager.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ILockManager.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/ILockManager.java Sat Sep 28 13:18:40 2013
@@ -19,13 +19,21 @@
package org.apache.manifoldcf.core.interfaces;
-/** The lock manager manages locks across all threads and JVMs and cluster members. It also
-* manages shared data, which is not necessarily atomic and should be protected by locks.
+/** The lock manager manages locks and shared data across all threads and JVMs and cluster members. It also
+* manages transient shared data, which is not necessarily atomic and should be protected by locks.
*/
public interface ILockManager
{
public static final String _rcsid = "@(#)$Id: ILockManager.java 988245 2010-08-23 18:39:35Z kwright $";
+ /** Get the current shared configuration. This configuration is available in common among all nodes,
+ * and thus must not be accessed through here for the purpose of finding configuration data that is specific to any one
+ * specific node.
+ *@param configurationData is the globally-shared configuration information.
+ */
+ public ManifoldCFConfiguration getSharedConfiguration()
+ throws ManifoldCFException;
+
/** Raise a flag. Use this method to assert a condition, or send a global signal. The flag will be reset when the
* entire system is restarted.
*@param flagName is the name of the flag to set.
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/LockManagerFactory.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/LockManagerFactory.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/LockManagerFactory.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/interfaces/LockManagerFactory.java Sat Sep 28 13:18:40 2013
@@ -40,9 +40,8 @@ public class LockManagerFactory
Object x = context.get(lockManager);
if (x == null || !(x instanceof ILockManager))
{
- String implementationClass = ManifoldCF.getProperty(ManifoldCF.lockManagerImplementation);
- if (implementationClass == null)
- implementationClass = "org.apache.manifoldcf.core.lockmanager.LockManager";
+ String implementationClass = ManifoldCF.getStringProperty(ManifoldCF.lockManagerImplementation,
+ "org.apache.manifoldcf.core.lockmanager.LockManager");
try
{
Class c = Class.forName(implementationClass);
@@ -75,5 +74,35 @@ public class LockManagerFactory
return (ILockManager)x;
}
+ public static String getProperty(IThreadContext tc, String s)
+ throws ManifoldCFException
+ {
+ return make(tc).getSharedConfiguration().getProperty(s);
+ }
+
+ public static String getStringProperty(IThreadContext tc, String s, String defaultValue)
+ throws ManifoldCFException
+ {
+ return make(tc).getSharedConfiguration().getStringProperty(s, defaultValue);
+ }
+
+ public static int getIntProperty(IThreadContext tc, String s, int defaultValue)
+ throws ManifoldCFException
+ {
+ return make(tc).getSharedConfiguration().getIntProperty(s, defaultValue);
+ }
+
+ public static double getDoubleProperty(IThreadContext tc, String s, double defaultValue)
+ throws ManifoldCFException
+ {
+ return make(tc).getSharedConfiguration().getDoubleProperty(s, defaultValue);
+ }
+
+ public static boolean getBooleanProperty(IThreadContext tc, String s, boolean defaultValue)
+ throws ManifoldCFException
+ {
+ return make(tc).getSharedConfiguration().getBooleanProperty(s, defaultValue);
+ }
+
}
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/jdbcpool/ConnectionPoolManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/jdbcpool/ConnectionPoolManager.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/jdbcpool/ConnectionPoolManager.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/jdbcpool/ConnectionPoolManager.java Sat Sep 28 13:18:40 2013
@@ -24,6 +24,7 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.core.interfaces.LockManagerFactory;
import org.apache.manifoldcf.core.system.ManifoldCF;
/** An instance of this class manages a number of (independent) connection pools.
@@ -37,10 +38,10 @@ public class ConnectionPoolManager
protected volatile AtomicBoolean shuttingDown = new AtomicBoolean(false);
protected final boolean debug;
- public ConnectionPoolManager(int count)
+ public ConnectionPoolManager(int count, boolean debug)
throws ManifoldCFException
{
- debug = ManifoldCF.getBooleanProperty(ManifoldCF.databaseConnectionTrackingProperty, false);
+ this.debug = debug;
poolMap = new HashMap<String,ConnectionPool>(count);
connectionCloserThread = new ConnectionCloserThread();
connectionCloserThread.start();
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockManager.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockManager.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockManager.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockManager.java Sat Sep 28 13:18:40 2013
@@ -73,6 +73,18 @@ public class LockManager implements ILoc
/** Global flag information. This is used only when all of ManifoldCF is run within one process. */
protected static HashMap globalFlags = new HashMap();
+ /** Get the current shared configuration. This configuration is available in common among all nodes,
+ * and thus must not be accessed through here for the purpose of finding configuration data that is specific to any one
+ * specific node.
+ *@param configurationData is the globally-shared configuration information.
+ */
+ public ManifoldCFConfiguration getSharedConfiguration()
+ throws ManifoldCFException
+ {
+ // Local implementation vectors through to system property file, which is shared in this case
+ return ManifoldCF.getConfiguration();
+ }
+
/** Raise a flag. Use this method to assert a condition, or send a global signal. The flag will be reset when the
* entire system is restarted.
*@param flagName is the name of the flag to set.
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/Logging.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/Logging.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/Logging.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/Logging.java Sat Sep 28 13:18:40 2013
@@ -96,7 +96,8 @@ public class Logging
/** Reset all loggers
*/
- public static void setLogLevels()
+ public static void setLogLevels(IThreadContext threadContext)
+ throws ManifoldCFException
{
// System.out.println("Setting log levels @ " + new Date().toString());
Iterator it = loggerTable.entrySet().iterator();
@@ -109,7 +110,7 @@ public class Logging
String loggername = (String)e.getKey();
// logger level
- String level = ManifoldCF.getProperty(loggername);
+ String level = LockManagerFactory.getProperty(threadContext, loggername);
Level loglevel = null;
if (level != null && level.length() > 0)
Modified: manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCF.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCF.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCF.java (original)
+++ manifoldcf/trunk/framework/core/src/main/java/org/apache/manifoldcf/core/system/ManifoldCF.java Sat Sep 28 13:18:40 2013
@@ -28,9 +28,6 @@ public class ManifoldCF
public static final String _rcsid = "@(#)$Id: ManifoldCF.java 988245 2010-08-23 18:39:35Z kwright $";
// Configuration XML node names and attribute names
- public static final String NODE_PROPERTY = "property";
- public static final String ATTRIBUTE_NAME = "name";
- public static final String ATTRIBUTE_VALUE = "value";
public static final String NODE_LIBDIR = "libdir";
public static final String ATTRIBUTE_PATH = "path";
@@ -87,7 +84,6 @@ public class ManifoldCF
protected static String masterDatabaseUsername = null;
protected static String masterDatabasePassword = null;
protected static ManifoldCFConfiguration localConfiguration = null;
- protected static Map localProperties = null;
protected static long propertyFilelastMod = -1L;
protected static String propertyFilePath = null;
@@ -140,23 +136,31 @@ public class ManifoldCF
/** File to look for to block access to UI during database maintenance */
public static final String maintenanceFileSignalProperty = "org.apache.manifoldcf.database.maintenanceflag";
- /** Reset environment.
+ /** Reset environment, minting a thread context for convenience and backwards
+ * compatibility.
*/
+ @Deprecated
public static void resetEnvironment()
{
+ resetEnvironment(ThreadContextFactory.make());
+ }
+
+ /** Reset environment.
+ */
+ public static void resetEnvironment(IThreadContext threadContext)
+ {
synchronized (initializeFlagLock)
{
if (initializeLevel > 0)
{
// Clean up the system doing the same thing the shutdown thread would have if the process was killed
- cleanUpEnvironment();
+ cleanUpEnvironment(threadContext);
loginUserName = null;
loginPassword = null;
masterDatabaseName = null;
masterDatabaseUsername = null;
masterDatabasePassword = null;
localConfiguration = null;
- localProperties = null;
propertyFilelastMod = -1L;
propertyFilePath = null;
alreadyClosed = false;
@@ -166,11 +170,20 @@ public class ManifoldCF
}
}
- /** Initialize environment.
+ /** Initialize environment, minting a thread context for backwards compatibility.
*/
+ @Deprecated
public static void initializeEnvironment()
throws ManifoldCFException
{
+ initializeEnvironment(ThreadContextFactory.make());
+ }
+
+ /** Initialize environment.
+ */
+ public static void initializeEnvironment(IThreadContext threadContext)
+ throws ManifoldCFException
+ {
synchronized (initializeFlagLock)
{
if (initializeLevel == 0)
@@ -199,10 +212,10 @@ public class ManifoldCF
resourceLoader = new ManifoldCFResourceLoader(Thread.currentThread().getContextClassLoader());
// Read configuration!
- localConfiguration = new ManifoldCFConfiguration();
- localProperties = new HashMap();
+ localConfiguration = new OverrideableManifoldCFConfiguration();
checkProperties();
+ // Log file is always local
File logConfigFile = getFileProperty(logConfigFileProperty);
if (logConfigFile == null)
{
@@ -216,24 +229,14 @@ public class ManifoldCF
// Set up local loggers
Logging.initializeLoggers();
- Logging.setLogLevels();
+ Logging.setLogLevels(threadContext);
+
+ loginUserName = LockManagerFactory.getStringProperty(threadContext,loginUserNameProperty,"admin");
+ loginPassword = LockManagerFactory.getStringProperty(threadContext,loginPasswordProperty,"admin");
- loginUserName = getProperty(loginUserNameProperty);
- if (loginUserName == null)
- loginUserName = "admin";
- loginPassword = getProperty(loginPasswordProperty);
- if (loginPassword == null)
- loginPassword = "admin";
-
- masterDatabaseName = getProperty(masterDatabaseNameProperty);
- if (masterDatabaseName == null)
- masterDatabaseName = "dbname";
- masterDatabaseUsername = getProperty(masterDatabaseUsernameProperty);
- if (masterDatabaseUsername == null)
- masterDatabaseUsername = "manifoldcf";
- masterDatabasePassword = getProperty(masterDatabasePasswordProperty);
- if (masterDatabasePassword == null)
- masterDatabasePassword = "local_pg_passwd";
+ masterDatabaseName = LockManagerFactory.getStringProperty(threadContext,masterDatabaseNameProperty,"dbname");
+ masterDatabaseUsername = LockManagerFactory.getStringProperty(threadContext,masterDatabaseUsernameProperty,"manifoldcf");
+ masterDatabasePassword = LockManagerFactory.getStringProperty(threadContext,masterDatabasePasswordProperty,"local_pg_passwd");
// Register the file tracker for cleanup on shutdown
tracker = new FileTrack();
@@ -242,8 +245,7 @@ public class ManifoldCF
addShutdownHook(new DatabaseShutdown());
// Open the database. Done once per JVM.
- IThreadContext threadcontext = ThreadContextFactory.make();
- DBInterfaceFactory.make(threadcontext,masterDatabaseName,masterDatabaseUsername,masterDatabasePassword).openDatabase();
+ DBInterfaceFactory.make(threadContext,masterDatabaseName,masterDatabaseUsername,masterDatabasePassword).openDatabase();
}
catch (ManifoldCFException e)
{
@@ -254,7 +256,34 @@ public class ManifoldCF
}
}
+
+ /** For local properties (not shared!!), this class allows them to be overridden directly from the command line.
+ */
+ protected static class OverrideableManifoldCFConfiguration extends ManifoldCFConfiguration
+ {
+ public OverrideableManifoldCFConfiguration()
+ {
+ super();
+ }
+
+ @Override
+ public String getProperty(String s)
+ {
+ String rval = System.getProperty(s);
+ if (rval == null)
+ rval = super.getProperty(s);
+ return rval;
+ }
+
+ }
+ /** Get current properties. Makes no attempt to reread or interpret them.
+ */
+ public static final ManifoldCFConfiguration getConfiguration()
+ {
+ return localConfiguration;
+ }
+
/** Reloads properties as needed.
*/
public static final void checkProperties()
@@ -288,23 +317,13 @@ public class ManifoldCF
throw new ManifoldCFException("Could not read configuration file '"+f.toString()+"'",e);
}
- // For convenience, post-process all "property" nodes so that we have a semblance of the earlier name/value pairs available, by default.
- // e.g. <property name= value=/>
- localProperties.clear();
+ // For convenience, post-process all "lib" nodes.
ArrayList libDirs = new ArrayList();
int i = 0;
while (i < localConfiguration.getChildCount())
{
ConfigurationNode cn = localConfiguration.findChild(i++);
- if (cn.getType().equals(NODE_PROPERTY))
- {
- String name = cn.getAttributeValue(ATTRIBUTE_NAME);
- String value = cn.getAttributeValue(ATTRIBUTE_VALUE);
- if (name == null)
- throw new ManifoldCFException("Node type '"+NODE_PROPERTY+"' requires a '"+ATTRIBUTE_NAME+"' attribute");
- localProperties.put(name,value);
- }
- else if (cn.getType().equals(NODE_LIBDIR))
+ if (cn.getType().equals(NODE_LIBDIR))
{
String path = cn.getAttributeValue(ATTRIBUTE_PATH);
if (path == null)
@@ -334,10 +353,7 @@ public class ManifoldCF
*/
public static String getProperty(String s)
{
- String rval = System.getProperty(s);
- if (rval == null)
- rval = (String)localProperties.get(s);
- return rval;
+ return localConfiguration.getProperty(s);
}
/** Read a File property, either from the system properties, or from the local configuration file.
@@ -350,38 +366,39 @@ public class ManifoldCF
return null;
return resolvePath(value);
}
-
+
+ /** Read a (string) property, either from the system properties, or from the local configuration file.
+ *@param s is the property name.
+ *@param defaultValue is the default value for the property.
+ *@return the property value, as a string.
+ */
+ public static String getStringProperty(String s, String defaultValue)
+ {
+ return localConfiguration.getStringProperty(s, defaultValue);
+ }
+
/** Read a boolean property
*/
public static boolean getBooleanProperty(String s, boolean defaultValue)
throws ManifoldCFException
{
- String value = getProperty(s);
- if (value == null)
- return defaultValue;
- if (value.equals("true") || value.equals("yes"))
- return true;
- if (value.equals("false") || value.equals("no"))
- return false;
- throw new ManifoldCFException("Illegal property value for boolean property '"+s+"': '"+value+"'");
+ return localConfiguration.getBooleanProperty(s, defaultValue);
}
- /** Read an integer propert, either from the system properties, or from the local configuration file.
+ /** Read an integer property, either from the system properties, or from the local configuration file.
*/
public static int getIntProperty(String s, int defaultValue)
throws ManifoldCFException
{
- String value = getProperty(s);
- if (value == null)
- return defaultValue;
- try
- {
- return Integer.parseInt(value);
- }
- catch (NumberFormatException e)
- {
- throw new ManifoldCFException("Illegal property value for integer property '"+s+"': '"+value+"': "+e.getMessage(),e,ManifoldCFException.SETUP_ERROR);
- }
+ return localConfiguration.getIntProperty(s, defaultValue);
+ }
+
+ /** Read a float property, either from the system properties, or from the local configuration file.
+ */
+ public static double getDoubleProperty(String s, double defaultValue)
+ throws ManifoldCFException
+ {
+ return localConfiguration.getDoubleProperty(s, defaultValue);
}
/** Attempt to make sure a path is a folder
@@ -806,6 +823,7 @@ public class ManifoldCF
*/
public static boolean checkMaintenanceUnderway()
{
+ // File check is always local; this whole bit of logic needs to be rethought though.
String fileToCheck = getProperty(maintenanceFileSignalProperty);
if (fileToCheck != null && fileToCheck.length() > 0)
{
@@ -820,6 +838,7 @@ public class ManifoldCF
public static void noteConfigurationChange()
throws ManifoldCFException
{
+ // Always a local file. This needs to be rethought how it should operate in a clustered world.
String configChangeSignalCommand = getProperty(configSignalCommandProperty);
if (configChangeSignalCommand == null || configChangeSignalCommand.length() == 0)
return;
@@ -1229,9 +1248,16 @@ public class ManifoldCF
return resourceLoader.findClass(cname);
}
- /** Perform system shutdown, using the registered shutdown hooks. */
+ /** Perform system shutdown, minting thread context for backwards compatibility */
+ @Deprecated
public static void cleanUpEnvironment()
{
+ cleanUpEnvironment(ThreadContextFactory.make());
+ }
+
+ /** Perform system shutdown, using the registered shutdown hooks. */
+ public static void cleanUpEnvironment(IThreadContext threadContext)
+ {
synchronized (initializeFlagLock)
{
initializeLevel--;
@@ -1402,7 +1428,7 @@ public class ManifoldCF
public void run()
{
// This thread is run at shutdown time.
- cleanUpEnvironment();
+ cleanUpEnvironment(ThreadContextFactory.make());
}
}
Modified: manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/Base.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/Base.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/Base.java (original)
+++ manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/Base.java Sat Sep 28 13:18:40 2013
@@ -184,7 +184,7 @@ public class Base
writeConnectorsXML(connectorsXMLContents);
writeFile(connectorFile,connectorsXMLContents.toString());
- ManifoldCF.initializeEnvironment();
+ ManifoldCF.initializeEnvironment(ThreadContextFactory.make());
}
protected void localSetUp()
@@ -223,9 +223,10 @@ public class Base
loggingFile.delete();
connectorFile.delete();
- ManifoldCF.cleanUpEnvironment();
+ IThreadContext threadContext = ThreadContextFactory.make();
+ ManifoldCF.cleanUpEnvironment(threadContext);
// Just in case we're not synchronized...
- ManifoldCF.resetEnvironment();
+ ManifoldCF.resetEnvironment(threadContext);
}
}
Modified: manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/UILockSpinner.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/UILockSpinner.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/UILockSpinner.java (original)
+++ manifoldcf/trunk/framework/core/src/test/java/org/apache/manifoldcf/core/tests/UILockSpinner.java Sat Sep 28 13:18:40 2013
@@ -28,11 +28,10 @@ public class UILockSpinner
public static void main(String[] argv)
throws Exception
{
- ManifoldCF.initializeEnvironment();
-
+ IThreadContext threadContext = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(threadContext);
// Create a thread context object.
- IThreadContext threadContext = ThreadContextFactory.make();
ILockManager lockManager = LockManagerFactory.make(threadContext);
System.out.println("Starting test");
Modified: manifoldcf/trunk/framework/crawler-ui/src/main/java/org/apache/manifoldcf/crawlerui/ServletListener.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/crawler-ui/src/main/java/org/apache/manifoldcf/crawlerui/ServletListener.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/crawler-ui/src/main/java/org/apache/manifoldcf/crawlerui/ServletListener.java (original)
+++ manifoldcf/trunk/framework/crawler-ui/src/main/java/org/apache/manifoldcf/crawlerui/ServletListener.java Sat Sep 28 13:18:40 2013
@@ -33,7 +33,7 @@ public class ServletListener implements
{
try
{
- ManifoldCF.initializeEnvironment();
+ ManifoldCF.initializeEnvironment(ThreadContextFactory.make());
}
catch (ManifoldCFException e)
{
@@ -43,7 +43,7 @@ public class ServletListener implements
public void contextDestroyed(ServletContextEvent sce)
{
- ManifoldCF.cleanUpEnvironment();
+ ManifoldCF.cleanUpEnvironment(ThreadContextFactory.make());
}
}
Modified: manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFCombinedJettyRunner.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFCombinedJettyRunner.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFCombinedJettyRunner.java (original)
+++ manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFCombinedJettyRunner.java Sat Sep 28 13:18:40 2013
@@ -133,8 +133,8 @@ public class ManifoldCFCombinedJettyRunn
System.setProperty(ManifoldCF.lcfConfigFileProperty,"./properties.xml");
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
// Grab the parameters which locate the wars and describe how we work with Jetty
File combinedWarPath = ManifoldCF.getFileProperty(combinedWarPathProperty);
Modified: manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFJettyRunner.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFJettyRunner.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFJettyRunner.java (original)
+++ manifoldcf/trunk/framework/jetty-runner/src/main/java/org/apache/manifoldcf/jettyrunner/ManifoldCFJettyRunner.java Sat Sep 28 13:18:40 2013
@@ -177,10 +177,10 @@ public class ManifoldCFJettyRunner
System.setProperty(ManifoldCF.lcfConfigFileProperty,"./properties.xml");
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
- // Grab the parameters which locate the wars and describe how we work with Jetty
+ // Grab the parameters which locate the wars and describe how we work with Jetty. These are not shared.
File crawlerWarPath = ManifoldCF.getFileProperty(crawlerUIWarPathProperty);
File authorityserviceWarPath = ManifoldCF.getFileProperty(authorityServiceWarPathProperty);
File apiWarPath = ManifoldCF.getFileProperty(apiServiceWarPathProperty);
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseAuthoritiesInitializationCommand.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseAuthoritiesInitializationCommand.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseAuthoritiesInitializationCommand.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseAuthoritiesInitializationCommand.java Sat Sep 28 13:18:40 2013
@@ -34,8 +34,8 @@ public abstract class BaseAuthoritiesIni
{
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IAuthorityConnectorManager mgr = AuthorityConnectorManagerFactory.make(tc);
doExecute(mgr);
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseMappersInitializationCommand.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseMappersInitializationCommand.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseMappersInitializationCommand.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/BaseMappersInitializationCommand.java Sat Sep 28 13:18:40 2013
@@ -34,8 +34,8 @@ public abstract class BaseMappersInitial
{
public void execute() throws ManifoldCFException
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IMappingConnectorManager mgr = MappingConnectorManagerFactory.make(tc);
doExecute(mgr);
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/ChangeAuthSpec.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/ChangeAuthSpec.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/ChangeAuthSpec.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/ChangeAuthSpec.java Sat Sep 28 13:18:40 2013
@@ -48,8 +48,8 @@ public class ChangeAuthSpec
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
IAuthorityConnectionManager connManager = AuthorityConnectionManagerFactory.make(tc);
IAuthorityConnection conn = connManager.load(connectionName);
if (conn == null)
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckAll.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckAll.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckAll.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckAll.java Sat Sep 28 13:18:40 2013
@@ -44,8 +44,8 @@ public class CheckAll
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
// Now, get a list of the authority connections
IAuthorityConnectionManager mgr = AuthorityConnectionManagerFactory.make(tc);
IAuthorityConnection[] connections = mgr.getAllConnections();
Modified: manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckConfigured.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckConfigured.java?rev=1527183&r1=1527182&r2=1527183&view=diff
==============================================================================
--- manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckConfigured.java (original)
+++ manifoldcf/trunk/framework/pull-agent/src/main/java/org/apache/manifoldcf/authorities/CheckConfigured.java Sat Sep 28 13:18:40 2013
@@ -44,8 +44,8 @@ public class CheckConfigured
try
{
- ManifoldCF.initializeEnvironment();
IThreadContext tc = ThreadContextFactory.make();
+ ManifoldCF.initializeEnvironment(tc);
// Now, get a list of the authority connections
IAuthorityConnectionManager mgr = AuthorityConnectionManagerFactory.make(tc);
if (mgr.getAllConnections().length > 0)