aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Becker2012-09-04 06:03:37 (EDT)
committerThomas Becker2012-09-04 06:03:37 (EDT)
commit694a07dac6975f52bb44e78c4b6c8b3b33028c5d (patch)
treea30a87959e8c2a7f86d8779c454e2de5fa8b775b
parentd18fcc05e3046bf081c339f5435fa42130e88748 (diff)
downloadorg.eclipse.jetty.project-694a07dac6975f52bb44e78c4b6c8b3b33028c5d.zip
org.eclipse.jetty.project-694a07dac6975f52bb44e78c4b6c8b3b33028c5d.tar.gz
org.eclipse.jetty.project-694a07dac6975f52bb44e78c4b6c8b3b33028c5d.tar.bz2
jetty-9 jetty-plugins now uses zip instead of jar files. Local maven repository is now being read and found located by settings.xml or default location. small improvements
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/DefaultPluginManager.java (renamed from jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/PluginManagerImpl.java)35
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/HttpMavenService.java (renamed from jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceImpl.java)95
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/Main.java64
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/MavenService.java8
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/PluginManager.java4
-rw-r--r--jetty-plugins/src/main/java/org/eclipse/jetty/plugins/util/MavenUtils.java168
-rw-r--r--jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceIntegrationTest.java (renamed from jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceTest.java)11
-rw-r--r--jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceTest.java57
-rw-r--r--jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java (renamed from jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/PluginManagerTest.java)45
-rw-r--r--jetty-plugins/src/test/java/org/eclipse/jetty/plugins/util/MavenUtilsTest.java40
-rw-r--r--jetty-plugins/src/test/resources/example-plugin.jarbin629 -> 0 bytes
-rw-r--r--jetty-plugins/src/test/resources/example-plugin.zipbin0 -> 484 bytes
-rw-r--r--jetty-plugins/src/test/resources/jetty-jmx-7.6.0.v20120127-plugin.jarbin22170 -> 0 bytes
-rw-r--r--jetty-plugins/src/test/resources/jetty-jmx-version-plugin.zipbin0 -> 21982 bytes
-rw-r--r--jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-anotherplugin/version/jetty-anotherplugin-version-plugin.zip0
-rw-r--r--jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-plugin/version/jetty-plugin-version-plugin.zip0
-rw-r--r--jetty-util/pom.xml200
-rw-r--r--jetty-util/src/main/assembly/plugin.xml23
18 files changed, 547 insertions, 203 deletions
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/PluginManagerImpl.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/DefaultPluginManager.java
index 41c3341..bcf0ac0 100644
--- a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/PluginManagerImpl.java
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/DefaultPluginManager.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.plugins.impl;
+package org.eclipse.jetty.plugins;
import java.io.File;
import java.io.FileOutputStream;
@@ -25,27 +25,26 @@ import java.io.InputStream;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
-import org.eclipse.jetty.plugins.MavenService;
-import org.eclipse.jetty.plugins.PluginManager;
import org.eclipse.jetty.plugins.model.Plugin;
-public class PluginManagerImpl implements PluginManager
+public class DefaultPluginManager implements PluginManager
{
private String _jettyHome;
private MavenService _mavenService;
private static List<String> excludes = Arrays.asList("META-INF");
- public PluginManagerImpl(MavenService mavenService, String jettyHome)
+ public DefaultPluginManager(MavenService mavenService, String jettyHome)
{
this._mavenService = mavenService;
this._jettyHome = jettyHome;
}
- public List<String> listAvailablePlugins()
+ public Set<String> listAvailablePlugins()
{
return _mavenService.listAvailablePlugins();
}
@@ -61,7 +60,7 @@ public class PluginManagerImpl implements PluginManager
{
try
{
- JarFile pluginJar = new JarFile(plugin.getPluginJar());
+ ZipFile pluginJar = new ZipFile(plugin.getPluginJar());
extractJar(pluginJar);
}
catch (IOException e)
@@ -70,24 +69,24 @@ public class PluginManagerImpl implements PluginManager
}
}
- private void extractJar(JarFile file)
+ private void extractJar(ZipFile file)
{
- Enumeration<JarEntry> entries = file.entries();
+ Enumeration<? extends ZipEntry> entries = file.entries();
while (entries.hasMoreElements())
{
extractFileFromJar(file, entries.nextElement());
}
}
- private void extractFileFromJar(JarFile jarFile, JarEntry jarEntry)
+ private void extractFileFromJar(ZipFile zipFile, ZipEntry zipEntry)
{
for (String exclude : excludes)
- if (jarEntry.getName().startsWith(exclude))
+ if (zipEntry.getName().startsWith(exclude))
return;
- System.out.println("Extracting: " + jarEntry.getName());
- File f = new File(_jettyHome + File.separator + jarEntry.getName());
- if (jarEntry.isDirectory())
+ System.out.println("Extracting: " + zipEntry.getName());
+ File f = new File(_jettyHome + File.separator + zipEntry.getName());
+ if (zipEntry.isDirectory())
{
// if its a directory, create it
f.mkdir(); // TODO: check the result: what if the directory cannot be created ?
@@ -95,7 +94,7 @@ public class PluginManagerImpl implements PluginManager
}
- try (InputStream is = jarFile.getInputStream(jarEntry);
+ try (InputStream is = zipFile.getInputStream(zipEntry);
FileOutputStream fos = new FileOutputStream(f))
{
while (is.available() > 0)
@@ -105,7 +104,7 @@ public class PluginManagerImpl implements PluginManager
}
catch (IOException e)
{
- throw new IllegalStateException("Could not extract plugin jar", e);
+ throw new IllegalStateException("Could not extract plugin zip", e);
}
}
}
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceImpl.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/HttpMavenService.java
index f102537..d39a1b4 100644
--- a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceImpl.java
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/HttpMavenService.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.plugins.impl;
+package org.eclipse.jetty.plugins;
import java.io.File;
import java.io.FileOutputStream;
@@ -26,26 +26,67 @@ import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
-import org.eclipse.jetty.plugins.MavenService;
import org.eclipse.jetty.plugins.model.Plugin;
+import org.eclipse.jetty.plugins.util.MavenUtils;
import org.eclipse.jetty.plugins.util.RepositoryParser;
import org.eclipse.jetty.plugins.util.StreamUtils;
-public class HttpMavenServiceImpl implements MavenService
+public class HttpMavenService implements MavenService
{
private static final String REPOSITORY_URL = "http://repo2.maven.org/maven2/";
+ // autodetect...without maven deps
private static final String GROUP_ID = "org/eclipse/jetty";
- private static final String VERSION = "7.6.0.v20120127"; // TODO: should be automatically set
+ private static final String VERSION = "9.0.0-SNAPSHOT"; // TODO: should be automatically set
+ private boolean _searchRemoteRepository = true;
+ private boolean _searchLocalRepository = false;
+ private String _localRepository = MavenUtils.getLocalRepositoryLocation();
private String _repositoryUrl = REPOSITORY_URL;
private String _groupId = GROUP_ID;
private String _version = VERSION;
- public List<String> listAvailablePlugins()
+ public Set<String> listAvailablePlugins()
{
- List<String> availablePlugins = new ArrayList<>();
+ System.out.println("Using local repo: " + _searchLocalRepository + " remote repo: " + _searchRemoteRepository);
+ Set<String> availablePlugins = new HashSet<>();
+ if(_searchRemoteRepository)
+ availablePlugins.addAll(getListOfRemotePlugins());
+
+ if(_searchLocalRepository)
+ availablePlugins.addAll(getListOfLocalPlugins());
+
+ return availablePlugins;
+ }
+
+ private Set<String> getListOfLocalPlugins()
+ {
+ Set<String> availablePlugins = new HashSet<>();
+ File localMavenRepository = new File(_localRepository + _groupId);
+ if(!localMavenRepository.exists())
+ {
+ System.out.println("Can't find local repo: " + localMavenRepository);
+ return availablePlugins;
+ }
+
+ System.out.println("Using local repository: " + localMavenRepository);
+ String[] localMavenModuleList = localMavenRepository.list();
+
+ for (String potentialPlugin : localMavenModuleList)
+ {
+ File pluginFile = new File(_localRepository + getPluginPath(potentialPlugin));
+ if(pluginFile.exists())
+ availablePlugins.add(potentialPlugin);
+ }
+
+ return availablePlugins;
+ }
+
+ private Set<String> getListOfRemotePlugins()
+ {
+ Set<String> availablePlugins = new HashSet<>();
String moduleListing = fetchDirectoryListingOfJettyModules();
List<String> modules = RepositoryParser
@@ -59,7 +100,6 @@ public class HttpMavenServiceImpl implements MavenService
availablePlugins.add(module);
}
}
-
return availablePlugins;
}
@@ -82,7 +122,7 @@ public class HttpMavenServiceImpl implements MavenService
{
try
{
- URL configJar = new URL(getModuleDirectory(module));
+ URL configJar = new URL(getRemoteModuleDirectory(module));
URLConnection connection = configJar.openConnection();
InputStream inputStream = connection.getInputStream();
return StreamUtils.inputStreamToString(inputStream);
@@ -104,19 +144,29 @@ public class HttpMavenServiceImpl implements MavenService
public Plugin getPlugin(String pluginName)
{
- File configJar = getFile(getModulePrefix(pluginName) + "-plugin.jar");
+ File configJar = getFile(getRemotePluginLocation(pluginName));
return new Plugin(pluginName, configJar);
}
- private String getModuleDirectory(String pluginName)
+ private String getRemoteModuleDirectory(String pluginName)
{
- return _repositoryUrl + _groupId + "/" + pluginName + "/" + _version
- + "/";
+ return _repositoryUrl + getModulePath(pluginName);
}
- private String getModulePrefix(String pluginName)
+ private String getRemotePluginLocation(String pluginName)
{
- return getModuleDirectory(pluginName) + pluginName + "-" + _version;
+ return _repositoryUrl + getPluginPath(pluginName);
+ }
+
+ private String getPluginPath(String pluginName)
+ {
+ return getModulePath(pluginName) + pluginName + "-" + _version + "-plugin.zip";
+ }
+
+ private String getModulePath(String pluginName)
+ {
+ return _groupId + "/" + pluginName + "/" + _version
+ + "/";
}
private File getFile(String urlString)
@@ -149,6 +199,11 @@ public class HttpMavenServiceImpl implements MavenService
this._groupId = groupId.replace(".", "/");
}
+ public void setLocalRepository(String localRepository)
+ {
+ this._localRepository = localRepository;
+ }
+
public void setRepositoryUrl(String repositoryUrl)
{
this._repositoryUrl = repositoryUrl;
@@ -158,4 +213,14 @@ public class HttpMavenServiceImpl implements MavenService
{
this._version = version;
}
+
+ public void setSearchRemoteRepository(boolean searchRemoteRepository)
+ {
+ this._searchRemoteRepository = searchRemoteRepository;
+ }
+
+ public void setSearchLocalRepository(boolean searchLocalRepository)
+ {
+ this._searchLocalRepository = searchLocalRepository;
+ }
}
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/Main.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/Main.java
index 6278d31..6367715 100644
--- a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/Main.java
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/Main.java
@@ -18,17 +18,14 @@
package org.eclipse.jetty.plugins;
-import java.util.List;
import java.util.Map;
-
-import org.eclipse.jetty.plugins.impl.HttpMavenServiceImpl;
-import org.eclipse.jetty.plugins.impl.PluginManagerImpl;
+import java.util.Set;
public class Main
{
private static final String JETTY_HOME = "JETTY_HOME";
- private MavenService _mavenService = new HttpMavenServiceImpl();
+ private MavenService _mavenService = new HttpMavenService();
private PluginManager _pluginManager;
private String _jettyHome;
private String _installPlugin;
@@ -36,6 +33,8 @@ public class Main
private String _repositoryUrl;
private String _groupId;
private String _version;
+ private boolean _searchRemoteRepository = true;
+ private boolean _searchLocalRepository = false;
public static void main(String[] args)
{
@@ -49,41 +48,32 @@ public class Main
parseCommandline(args);
configureMavenService();
- _pluginManager = new PluginManagerImpl(_mavenService, _jettyHome);
+ _pluginManager = new DefaultPluginManager(_mavenService, _jettyHome);
if (_listPlugins)
- {
listPlugins();
- }
else if (_installPlugin != null)
- {
installPlugin();
- }
}
private void configureMavenService()
{
if (_repositoryUrl != null)
- {
_mavenService.setRepositoryUrl(_repositoryUrl);
- }
if (_groupId != null)
- {
_mavenService.setGroupId(_groupId);
- }
if (_version != null)
- {
_mavenService.setVersion(_version);
- }
+
+ _mavenService.setSearchLocalRepository(_searchLocalRepository);
+ _mavenService.setSearchRemoteRepository(_searchRemoteRepository);
}
private void listPlugins()
{
- List<String> availablePlugins = _pluginManager.listAvailablePlugins();
+ Set<String> availablePlugins = _pluginManager.listAvailablePlugins();
for (String pluginName : availablePlugins)
- {
System.out.println(pluginName);
- }
}
private void installPlugin()
@@ -97,9 +87,7 @@ public class Main
{
Map<String, String> env = System.getenv();
if (env.containsKey(JETTY_HOME))
- {
_jettyHome = env.get(JETTY_HOME);
- }
}
private void parseCommandline(String[] args)
@@ -110,40 +98,36 @@ public class Main
i++;
if (arg.startsWith("--jettyHome="))
- {
_jettyHome = arg.substring(12);
- }
if (arg.startsWith("--repositoryUrl="))
- {
_repositoryUrl = arg.substring(16);
- }
if (arg.startsWith("--groupId="))
- {
_groupId = arg.substring(10);
- }
if (arg.startsWith("--version="))
- {
_version = arg.substring(10);
- }
+ if (arg.startsWith("--useLocalRepo="))
+ _searchLocalRepository = new Boolean(arg.substring(15));
+ if (arg.startsWith("--useRemoteRepo="))
+ _searchRemoteRepository = new Boolean(arg.substring(15));
if (arg.startsWith("install"))
- {
_installPlugin = args[i];
- }
if ("list".equals(arg))
- {
_listPlugins = true;
- }
}
- // TODO: Usage instead of throwing exceptions
if (_jettyHome == null && _installPlugin != null)
- throw new IllegalArgumentException(
- "No --jettyHome commandline option specified and no \"JETTY_HOME\" environment variable found!");
+ printUsage("No --jettyHome commandline option specified and no \"JETTY_HOME\" environment variable found!");
if (_installPlugin == null && !_listPlugins)
- throw new IllegalArgumentException(
- "Neither install <pluginname> nor list commandline option specified. Nothing to do for me!");
+ printUsage("Neither install <pluginname> nor list commandline option specified. Nothing to do for me!");
if (_installPlugin != null && _listPlugins)
- throw new IllegalArgumentException(
- "Please specify either install <pluginname> or list commandline options, but not both at the same time!");
+ printUsage("Please specify either install <pluginname> or list commandline options, " +
+ "but not both at the same time!");
+ }
+
+ private void printUsage(String errorMessage)
+ {
+ System.out.println(errorMessage);
+
+ //TODO: print usage
}
}
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/MavenService.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/MavenService.java
index 7505fa8..08b55a9 100644
--- a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/MavenService.java
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/MavenService.java
@@ -18,13 +18,13 @@
package org.eclipse.jetty.plugins;
-import java.util.List;
+import java.util.Set;
import org.eclipse.jetty.plugins.model.Plugin;
public interface MavenService
{
- public List<String> listAvailablePlugins();
+ public Set<String> listAvailablePlugins();
public Plugin getPlugin(String pluginName);
@@ -33,4 +33,8 @@ public interface MavenService
public void setRepositoryUrl(String repositoryUrl);
public void setVersion(String version);
+
+ public void setSearchLocalRepository(boolean searchLocalRepository);
+
+ public void setSearchRemoteRepository(boolean searchRemoteRepository);
}
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/PluginManager.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/PluginManager.java
index 1e2266a..36c721c 100644
--- a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/PluginManager.java
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/PluginManager.java
@@ -18,11 +18,11 @@
package org.eclipse.jetty.plugins;
-import java.util.List;
+import java.util.Set;
public interface PluginManager
{
- public List<String> listAvailablePlugins();
+ public Set<String> listAvailablePlugins();
public void installPlugin(String pluginName);
}
diff --git a/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/util/MavenUtils.java b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/util/MavenUtils.java
new file mode 100644
index 0000000..3e153ce
--- /dev/null
+++ b/jetty-plugins/src/main/java/org/eclipse/jetty/plugins/util/MavenUtils.java
@@ -0,0 +1,168 @@
+//========================================================================
+//Copyright 2012 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//All rights reserved. This program and the accompanying materials
+//are made available under the terms of the Eclipse Public License v1.0
+//and Apache License v2.0 which accompanies this distribution.
+//The Eclipse Public License is available at
+//http://www.eclipse.org/legal/epl-v10.html
+//The Apache License v2.0 is available at
+//http://www.opensource.org/licenses/apache2.0.php
+//You may elect to redistribute this code under either of these licenses.
+//========================================================================
+package org.eclipse.jetty.plugins.util;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+public class MavenUtils
+{
+ private final static String DEFAULT_REPOSITORY_LOCATION = System.getProperty("user.home") + "/.m2/repository";
+
+ /**
+ * Looks for maven's settings.xml in $M2_HOME/conf/settings.xml
+ *
+ * @return a file representing the global settings.xml
+ */
+ static File findGlobalSettingsXml()
+ {
+ String m2Home = System.getenv("M2_HOME");
+ File settingsXml = new File(m2Home + "/conf/settings.xml");
+ return settingsXml;
+ }
+
+ /**
+ * Looks for maven's settings.xml in ${user.home}/.m2/settings.xml
+ *
+ * @return a file representing the user's settings.xml
+ */
+ static File findUserSettingsXml()
+ {
+ String userHome = System.getProperty("user.home");
+ File settingsXml = new File(userHome + "/.m2/settings.xml");
+ return settingsXml;
+ }
+
+ /**
+ * Read the local repository location from settings.xml. A setting in the user's settings.xml will override the
+ * global one.
+ *
+ * @return location of the local maven repo
+ */
+ public static String getLocalRepositoryLocation()
+ {
+ String repositoryLocation = DEFAULT_REPOSITORY_LOCATION;
+ try
+ {
+ // find the global setting
+ String tempRepositoryLocation = parseSettingsXml(findGlobalSettingsXml());
+ if (tempRepositoryLocation != null)
+ repositoryLocation = tempRepositoryLocation;
+
+ // override with user settings.xml
+ tempRepositoryLocation = parseSettingsXml(findUserSettingsXml());
+ if (tempRepositoryLocation != null)
+ repositoryLocation = tempRepositoryLocation;
+ }
+ catch (IOException | SAXException e)
+ {
+ throw new IllegalStateException(e);
+ }
+ return repositoryLocation;
+ }
+
+ private static String parseSettingsXml(File settingsXml) throws IOException, SAXException
+ {
+ if(!settingsXml.exists())
+ return null;
+
+ // readability is more important than efficiency here, so we just recreate those objects
+ XMLReader reader = XMLReaderFactory.createXMLReader();
+ SettingsXmlContentHandler settingsXmlContentHandler = new SettingsXmlContentHandler();
+ reader.setContentHandler(settingsXmlContentHandler);
+
+ InputSource source = new InputSource(new FileReader(settingsXml));
+ reader.parse(source);
+ return settingsXmlContentHandler.getRepositoryLocation();
+ }
+
+ private static class SettingsXmlContentHandler implements ContentHandler
+ {
+ private String repositoryLocation;
+ private String currentValue;
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException
+ {
+ currentValue = new String(ch, start, length);
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException
+ {
+ if (localName.equals("localRepository"))
+ {
+ repositoryLocation = currentValue;
+ }
+ }
+
+ public String getRepositoryLocation()
+ {
+ return repositoryLocation;
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator)
+ {
+ }
+
+ @Override
+ public void startDocument() throws SAXException
+ {
+ }
+
+ @Override
+ public void endDocument() throws SAXException
+ {
+ }
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri) throws SAXException
+ {
+ }
+
+ @Override
+ public void endPrefixMapping(String prefix) throws SAXException
+ {
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException
+ {
+ }
+
+ @Override
+ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
+ {
+ }
+
+ @Override
+ public void processingInstruction(String target, String data) throws SAXException
+ {
+ }
+
+ @Override
+ public void skippedEntity(String name) throws SAXException
+ {
+ }
+ }
+}
diff --git a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceTest.java b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceIntegrationTest.java
index 443ed7c..01c6ba3e 100644
--- a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/HttpMavenServiceTest.java
+++ b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceIntegrationTest.java
@@ -16,13 +16,12 @@
// ========================================================================
//
-package org.eclipse.jetty.plugins.impl;
+package org.eclipse.jetty.plugins;
import java.io.File;
import java.io.IOException;
-import java.util.List;
+import java.util.Set;
-import org.eclipse.jetty.plugins.MavenService;
import org.eclipse.jetty.plugins.model.Plugin;
import org.junit.Before;
import org.junit.Ignore;
@@ -42,9 +41,9 @@ import static org.junit.Assert.assertThat;
* <p/>
* However this tests should be disabled for the general build and ci.
*/
-public class HttpMavenServiceTest
+public class HttpMavenServiceIntegrationTest
{
- private MavenService _mavenService = new HttpMavenServiceImpl();
+ private HttpMavenService _mavenService = new HttpMavenService();
private static final String JETTY_JMX_PLUGIN_NAME = "jetty-jmx";
private static final String PRIVATE_NEXUS_REPOSITORY_URL = "http://gravity-design.de:8080/nexus/content/repositories/releases/";
@@ -60,7 +59,7 @@ public class HttpMavenServiceTest
@Ignore("requires online repo")
public void testListAvailablePlugins()
{
- List<String> pluginNames = _mavenService.listAvailablePlugins();
+ Set<String> pluginNames = _mavenService.listAvailablePlugins();
assertThat(pluginNames.size(), is(2));
}
diff --git a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceTest.java b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceTest.java
new file mode 100644
index 0000000..e2b0d22
--- /dev/null
+++ b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/HttpMavenServiceTest.java
@@ -0,0 +1,57 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.plugins;
+
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ */
+public class HttpMavenServiceTest
+{
+ private HttpMavenService _mavenService = new HttpMavenService();
+
+ private static final String JETTY_JMX_PLUGIN_NAME = "jetty-jmx";
+ private static final String MAVEN_CENTRAL_URL = "http://repo2.maven.org/maven2/";
+
+ @Before
+ public void setUp() throws Exception
+ {
+ _mavenService.setLocalRepository(this.getClass().getClassLoader().getResource("maven_repo").getFile() + "/");
+ _mavenService.setRepositoryUrl(MAVEN_CENTRAL_URL);
+ _mavenService.setVersion("version");
+ _mavenService.setSearchRemoteRepository(false);
+ _mavenService.setSearchLocalRepository(true);
+ }
+
+ @Test
+ public void testListAvailablePlugins()
+ {
+ Set<String> pluginNames = _mavenService.listAvailablePlugins();
+ assertThat(pluginNames.size(), is(2));
+ assertThat("plugin jetty-plugin found", pluginNames.contains("jetty-plugin"), is(true));
+ assertThat("plugin jetty-anotherplugin found", pluginNames.contains("jetty-anotherplugin"), is(true));
+ }
+
+}
diff --git a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/PluginManagerTest.java b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java
index d2f38a0..4e567ff 100644
--- a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/impl/PluginManagerTest.java
+++ b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/PluginManagerTest.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.plugins.impl;
+package org.eclipse.jetty.plugins;
import java.io.File;
import java.io.FileInputStream;
@@ -24,11 +24,10 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
import junit.framework.Assert;
-import org.eclipse.jetty.plugins.MavenService;
import org.eclipse.jetty.plugins.model.Plugin;
import org.junit.Before;
import org.junit.Test;
@@ -46,8 +45,8 @@ public class PluginManagerTest
{
@Mock
private MavenService _mavenService;
- private PluginManagerImpl _pluginManager;
- private List<String> availablePlugins = createAvailablePluginsTestData();
+ private DefaultPluginManager _Default_pluginManager;
+ private Set<String> availablePlugins = createAvailablePluginsTestData();
private ClassLoader _classLoader = this.getClass().getClassLoader();
private String _tmpDir;
private File _javaTmpDir = new File(System.getProperty("java.io.tmpdir"));
@@ -57,14 +56,14 @@ public class PluginManagerTest
{
URL resource = this.getClass().getResource("/jetty_home");
_tmpDir = resource.getFile();
- _pluginManager = new PluginManagerImpl(_mavenService, _tmpDir);
+ _Default_pluginManager = new DefaultPluginManager(_mavenService, _tmpDir);
}
@Test
public void testListAvailablePlugins()
{
when(_mavenService.listAvailablePlugins()).thenReturn(availablePlugins);
- List<String> availablePlugins = _pluginManager.listAvailablePlugins();
+ Set<String> availablePlugins = _Default_pluginManager.listAvailablePlugins();
assertThat("jetty-jmx not found",
availablePlugins.contains("jetty-jmx"), is(true));
assertThat("jetty-jta not found",
@@ -74,16 +73,16 @@ public class PluginManagerTest
@Test
public void testInstallPluginJar()
{
- String pluginName = "jetty-plugin-with-plugin-jar";
- URL resource = _classLoader.getResource("example-plugin.jar");
+ String pluginName = "jetty-plugin-with-plugin-zip";
+ URL resource = _classLoader.getResource("example-plugin.zip");
Assert.assertNotNull(resource);
- String pluginJar = resource.getFile();
- File pluginJarFile = new File(pluginJar);
- Plugin plugin = createTestPlugin(pluginName, pluginJarFile);
+ String pluginZip = resource.getFile();
+ File pluginZipFile = new File(pluginZip);
+ Plugin plugin = createTestPlugin(pluginName, pluginZipFile);
when(_mavenService.getPlugin(pluginName)).thenReturn(plugin);
- _pluginManager.installPlugin(pluginName);
+ _Default_pluginManager.installPlugin(pluginName);
File someJar = new File(_tmpDir + File.separator + "lib" + File.separator + "somejar.jar");
assertThat("someJar.jar does not exist", someJar.exists(), is(true));
@@ -97,30 +96,30 @@ public class PluginManagerTest
public void testInstallPlugins() throws IOException
{
String pluginName = "jetty-jmx";
- URL resource = _classLoader.getResource("jetty-jmx-7.6.0.v20120127-plugin.jar");
+ URL resource = _classLoader.getResource("jetty-jmx-version-plugin.zip");
Assert.assertNotNull(resource);
- String jmxPluginConfigJar = resource.getFile();
- File jmxPluginConfigJarFile = new File(jmxPluginConfigJar);
+ String jmxPluginZip = resource.getFile();
+ File jmxPluginZipFile = new File(jmxPluginZip);
// Need to copy it to a temp file since the implementation will move the
// file and we need to keep the test files where they are.
- File jmxPluginConfigTempCopy = copyToTempFile(jmxPluginConfigJarFile);
+ File jmxPluginConfigTempCopy = copyToTempFile(jmxPluginZipFile);
Plugin plugin = new Plugin(pluginName, jmxPluginConfigTempCopy);
when(_mavenService.getPlugin(pluginName)).thenReturn(plugin);
- _pluginManager.installPlugin(pluginName);
+ _Default_pluginManager.installPlugin(pluginName);
File metaInf = new File(_tmpDir + File.separator + "META-INF");
File jettyXmlConfigFile = new File(_tmpDir + File.separator + "start.d"
+ File.separator + "20-jetty-jmx.xml");
File jettyJmxJarFile = new File(_tmpDir + File.separator + "lib"
- + File.separator + "jetty-jmx-7.6.0.v20120127.jar");
+ + File.separator + "jetty-jmx-version.jar");
assertThat("META-INF should be skipped", metaInf.exists(), not(true));
assertThat("20-jetty-jmx.xml does not exist",
jettyXmlConfigFile.exists(), is(true));
- assertThat("jetty-jmx-7.6.0.v20120127.jar does not exist",
+ assertThat("jetty-jmx-version.jar does not exist",
jettyJmxJarFile.exists(), is(true));
}
@@ -135,9 +134,9 @@ public class PluginManagerTest
return destFile;
}
- private List<String> createAvailablePluginsTestData()
+ private Set<String> createAvailablePluginsTestData()
{
- List<String> availablePlugins = new ArrayList<>();
+ Set<String> availablePlugins = new HashSet<>();
availablePlugins.add("jetty-jmx");
availablePlugins.add("jetty-jta");
return availablePlugins;
diff --git a/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/util/MavenUtilsTest.java b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/util/MavenUtilsTest.java
new file mode 100644
index 0000000..cdc5316
--- /dev/null
+++ b/jetty-plugins/src/test/java/org/eclipse/jetty/plugins/util/MavenUtilsTest.java
@@ -0,0 +1,40 @@
+//========================================================================
+//Copyright 2012 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//All rights reserved. This program and the accompanying materials
+//are made available under the terms of the Eclipse Public License v1.0
+//and Apache License v2.0 which accompanies this distribution.
+//The Eclipse Public License is available at
+//http://www.eclipse.org/legal/epl-v10.html
+//The Apache License v2.0 is available at
+//http://www.opensource.org/licenses/apache2.0.php
+//You may elect to redistribute this code under either of these licenses.
+//========================================================================
+package org.eclipse.jetty.plugins.util;
+
+import java.io.File;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class MavenUtilsTest
+{
+ @Test
+ @Ignore("Very environment specific, so disabled in commit. Enable if working on the code.")
+ public void testFindUserSettingsXml()
+ {
+ File settingsXml = MavenUtils.findUserSettingsXml();
+ assertThat("settings.xml is found", settingsXml.exists(), is(true));
+ }
+
+ @Test
+ @Ignore("Very environment specific, so disabled in commit. Enable if working on the code.")
+ public void testGetLocalRepositoryLocation()
+ {
+ String repositoryLocation = MavenUtils.getLocalRepositoryLocation();
+ assertThat("maven repository exists", new File(repositoryLocation).exists(), is(true));
+ }
+}
diff --git a/jetty-plugins/src/test/resources/example-plugin.jar b/jetty-plugins/src/test/resources/example-plugin.jar
deleted file mode 100644
index 31cd1e0..0000000
--- a/jetty-plugins/src/test/resources/example-plugin.jar
+++ /dev/null
Binary files differ
diff --git a/jetty-plugins/src/test/resources/example-plugin.zip b/jetty-plugins/src/test/resources/example-plugin.zip
new file mode 100644
index 0000000..c152b1f
--- /dev/null
+++ b/jetty-plugins/src/test/resources/example-plugin.zip
Binary files differ
diff --git a/jetty-plugins/src/test/resources/jetty-jmx-7.6.0.v20120127-plugin.jar b/jetty-plugins/src/test/resources/jetty-jmx-7.6.0.v20120127-plugin.jar
deleted file mode 100644
index ed99c27..0000000
--- a/jetty-plugins/src/test/resources/jetty-jmx-7.6.0.v20120127-plugin.jar
+++ /dev/null
Binary files differ
diff --git a/jetty-plugins/src/test/resources/jetty-jmx-version-plugin.zip b/jetty-plugins/src/test/resources/jetty-jmx-version-plugin.zip
new file mode 100644
index 0000000..f680dd0
--- /dev/null
+++ b/jetty-plugins/src/test/resources/jetty-jmx-version-plugin.zip
Binary files differ
diff --git a/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-anotherplugin/version/jetty-anotherplugin-version-plugin.zip b/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-anotherplugin/version/jetty-anotherplugin-version-plugin.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-anotherplugin/version/jetty-anotherplugin-version-plugin.zip
diff --git a/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-plugin/version/jetty-plugin-version-plugin.zip b/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-plugin/version/jetty-plugin-version-plugin.zip
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jetty-plugins/src/test/resources/maven_repo/org/eclipse/jetty/jetty-plugin/version/jetty-plugin-version-plugin.zip
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 4099da9..0a3735f 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -1,100 +1,106 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <parent>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-project</artifactId>
- <version>9.0.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>jetty-util</artifactId>
- <name>Jetty :: Utilities</name>
- <description>Utility classes for Jetty</description>
- <properties>
- <bundle-symbolic-name>${project.groupId}.util</bundle-symbolic-name>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <executions>
- <execution>
- <goals>
- <goal>manifest</goal>
- </goals>
- <configuration>
- <instructions>
- <Import-Package>javax.servlet.*;version="2.6.0",org.slf4j;version="[1.5,2.0)";resolution:=optional,org.slf4j.impl;version="[1.5,2.0)";resolution:=optional,*</Import-Package>
- </instructions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-project</artifactId>
+ <version>9.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>jetty-util</artifactId>
+ <name>Jetty :: Utilities</name>
+ <description>Utility classes for Jetty</description>
+ <properties>
+ <bundle-symbolic-name>${project.groupId}.util</bundle-symbolic-name>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ <configuration>
+ <instructions>
+ <Import-Package>
+ javax.servlet.*;version="2.6.0",org.slf4j;version="[1.5,2.0)";resolution:=optional,org.slf4j.impl;version="[1.5,2.0)";resolution:=optional,*
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <!--
+ Required for OSGI
+ -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>config</descriptorRef>
+ </descriptorRefs>
+ <descriptors>
+ <descriptor>src/main/assembly/plugin.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <configuration>
+ <onlyAnalyze>org.eclipse.jetty.util.*</onlyAnalyze>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.jetty.orbit</groupId>
+ <artifactId>javax.servlet</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty.toolchain</groupId>
+ <artifactId>jetty-test-helper</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
<!--
- Required for OSGI
+ This dependency is used to test Slf4jLog.
+ Due to the introduction of src/test/resource/jetty-logging.properties (and the Log.static{} block)
+ the default Log implementation is still StdErrLog during testing.
-->
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-assembly-plugin</artifactId>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- <configuration>
- <descriptorRefs>
- <descriptorRef>config</descriptorRef>
- </descriptorRefs>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- <configuration>
- <onlyAnalyze>org.eclipse.jetty.util.*</onlyAnalyze>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.eclipse.jetty.orbit</groupId>
- <artifactId>javax.servlet</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty.toolchain</groupId>
- <artifactId>jetty-test-helper</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
- <!--
- This dependency is used to test Slf4jLog.
- Due to the introduction of src/test/resource/jetty-logging.properties (and the Log.static{} block)
- the default Log implementation is still StdErrLog during testing.
- -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-jdk14</artifactId>
- <version>${slf4j-version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-jdk14</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
diff --git a/jetty-util/src/main/assembly/plugin.xml b/jetty-util/src/main/assembly/plugin.xml
new file mode 100644
index 0000000..df75220
--- /dev/null
+++ b/jetty-util/src/main/assembly/plugin.xml
@@ -0,0 +1,23 @@
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+
+ <id>plugin</id>
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <fileSets>
+ <fileSet>
+ <directory>${project.build.directory}</directory>
+ <outputDirectory></outputDirectory>
+ <includes>
+ <include>${project.build.finalName}.jar</include>
+ </includes>
+ </fileSet>
+ </fileSets>
+
+</assembly>
+