From 7a46de1d39f8ce4a4799f7ed1e59b283e23a6fa7 Mon Sep 17 00:00:00 2001 From: Brian Rosenberger Date: Tue, 5 Feb 2013 13:56:47 +0000 Subject: [PATCH] Arbeitsstand Anfang Februar git-svn-id: https://brutex.net/svn/xservices/trunk@99 e7e49efb-446e-492e-b9ec-fcafc1997a86 --- .../util/cache/CacheExecutorService.java | 56 -------- .../xservices/util/cache/CacheServlet.java | 122 ------------------ .../util/cache/DaemonThreadFactory.java | 52 -------- 3 files changed, 230 deletions(-) delete mode 100644 src/java/net/brutex/xservices/util/cache/CacheExecutorService.java delete mode 100644 src/java/net/brutex/xservices/util/cache/CacheServlet.java delete mode 100644 src/java/net/brutex/xservices/util/cache/DaemonThreadFactory.java diff --git a/src/java/net/brutex/xservices/util/cache/CacheExecutorService.java b/src/java/net/brutex/xservices/util/cache/CacheExecutorService.java deleted file mode 100644 index eb185ef..0000000 --- a/src/java/net/brutex/xservices/util/cache/CacheExecutorService.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2012 Brian Rosenberger (Brutex Network) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.brutex.xservices.util.cache; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; - -/** - * @author Brian Rosenberger, bru(at)brutex.de - * @since 0.5.0-20120825 - */ -public class CacheExecutorService implements ServletContextListener { - static final String EXECUTOR_NAME = "CACHE_EXECUTOR"; - private ExecutorService executor; - - public void contextInitialized(ServletContextEvent arg0) { - ServletContext context = arg0.getServletContext(); - int nr_executors = 1; - ThreadFactory daemonFactory = new DaemonThreadFactory(); - try { - nr_executors = Integer.parseInt(context.getInitParameter("cache:thread-count")); - } catch (NumberFormatException ignore ) {} - - if(nr_executors <= 1) { - executor = Executors.newSingleThreadExecutor(daemonFactory); - } else { - executor = Executors.newFixedThreadPool(nr_executors,daemonFactory); - } - context.setAttribute(EXECUTOR_NAME, executor); - } - - public void contextDestroyed(ServletContextEvent arg0) { - ServletContext context = arg0.getServletContext(); - executor.shutdownNow(); // or process/wait until all pending jobs are done - } - -} diff --git a/src/java/net/brutex/xservices/util/cache/CacheServlet.java b/src/java/net/brutex/xservices/util/cache/CacheServlet.java deleted file mode 100644 index 1778888..0000000 --- a/src/java/net/brutex/xservices/util/cache/CacheServlet.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2012 Brian Rosenberger (Brutex Network) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.brutex.xservices.util.cache; - -import java.io.File; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.concurrent.ExecutorService; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.ws.rs.core.GenericEntity; -import javax.ws.rs.core.Response; - -import org.apache.log4j.Logger; - -import net.brutex.xservices.types.scm.ModuleType; -import net.brutex.xservices.ws.rs.CVSInfoImpl; - -/** - * Perform Caching actions on the CVS Info actions - * - * @author Brian Rosenberger, bru(at)brutex.de - * @since 0.5.0-200120825 - * - */ -public class CacheServlet extends HttpServlet { - - private final Logger logger = Logger.getLogger(CacheServlet.class); - List configfiles = new ArrayList();; - int cacheinterval; - - /* - * (non-Javadoc) - * - * @see javax.servlet.GenericServlet#init() - */ - @Override - public void init() throws ServletException { - super.init(); - ExecutorService executor = (ExecutorService) getServletContext() - .getAttribute(CacheExecutorService.EXECUTOR_NAME); - - Enumeration attributes = getServletContext() - .getInitParameterNames(); - while (attributes.hasMoreElements()) { - String name = attributes.nextElement(); - if (name.startsWith("cvs-config-")) { - String configfile = (String) getServletContext() - .getInitParameter(name); - logger.info("CVS configuration file: " + configfile); - this.configfiles.add(new File(configfile)); - } - } - cacheinterval = 15; - try { - cacheinterval = Integer.parseInt((String) getServletContext() - .getInitParameter("cvs-cache-interval")); - } catch (NumberFormatException e) { - logger.debug("Could not read parameter 'cvs-cache-interval' from web.xml. Using default value '"+cacheinterval+"' minutes"); - } - logger.info("CacheServlet set to " + cacheinterval + " minutes interval."); - - executor.submit(new Runnable() { - boolean isInterrupted = false; - - @Override - public void run() { - while (!isInterrupted) { - for (File configfile : configfiles) { - CVSInfoImpl instance = new CVSInfoImpl(); - logger.info("Caching modules from " + configfile.toURI().toString()); - Response response = instance.getModules(null, - configfile, true); - List list = (List) ((GenericEntity) response - .getEntity()).getEntity(); - if (list.size() == 0) - list.add(new ModuleType("", "", "", "")); - for (ModuleType t : list) { - try { - //Extra sleep - Thread.currentThread().sleep(5000); - } catch (InterruptedException e) { - isInterrupted = true; - break; - } - logger.info("Caching module '" + t.getName()+"'"); - instance.getRepositoryFiles(null, configfile, t.getName(), true, true); - - } - } - try { - logger.debug("Now sleeping for '"+cacheinterval+"' minutes"); - Thread.currentThread().sleep(cacheinterval * 60000); - logger.debug("Waking up after '"+cacheinterval+"' minutes of sleep"); - } catch (InterruptedException e) { - isInterrupted = true; - break; - } - } - - } - }); - - } - -} diff --git a/src/java/net/brutex/xservices/util/cache/DaemonThreadFactory.java b/src/java/net/brutex/xservices/util/cache/DaemonThreadFactory.java deleted file mode 100644 index 59d0c0e..0000000 --- a/src/java/net/brutex/xservices/util/cache/DaemonThreadFactory.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2012 Brian Rosenberger (Brutex Network) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.brutex.xservices.util.cache; - -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -public class DaemonThreadFactory implements ThreadFactory { - - private final ThreadFactory factory; - - /** - * Construct a ThreadFactory with setDeamon(true) using - * Executors.defaultThreadFactory() - */ - public DaemonThreadFactory() { - this(Executors.defaultThreadFactory()); - } - - /** - * Construct a ThreadFactory with setDeamon(true) wrapping the given factory - * - * @param thread - * factory to wrap - */ - public DaemonThreadFactory(ThreadFactory factory) { - if (factory == null) - throw new NullPointerException("factory cannot be null"); - this.factory = factory; - } - - public Thread newThread(Runnable r) { - final Thread t = factory.newThread(r); - t.setDaemon(true); - return t; - } - } -