CAMEL-10975: camel-catalog-maven - Allow to configure temp folder

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fe0db8a4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fe0db8a4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fe0db8a4

Branch: refs/heads/master
Commit: fe0db8a46c45fe0af6a1558d8d7e58248f1bf4b1
Parents: 2702714
Author: Claus Ibsen <davscl...@apache.org>
Authored: Thu Mar 9 11:32:45 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Thu Mar 9 11:41:11 2017 +0100

----------------------------------------------------------------------
 .../catalog/maven/ConnectorArtifactHelper.java    |  8 ++++----
 .../maven/DefaultMavenArtifactProvider.java       | 18 +++++++++++++++---
 .../catalog/maven/MavenArtifactProvider.java      | 15 ++++++++++++---
 .../catalog/maven/MavenArtifactProviderTest.java  |  2 ++
 .../catalog/maven/MavenVersionManagerTest.java    |  2 ++
 .../camel/catalog/rest/CamelCatalogRest.java      |  7 +++++++
 .../catalog/rest/CamelConnectorCatalogRest.java   |  7 +++++++
 7 files changed, 49 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/ConnectorArtifactHelper.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/ConnectorArtifactHelper.java
 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/ConnectorArtifactHelper.java
index 98aeab0..6fcb1bc 100644
--- 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/ConnectorArtifactHelper.java
+++ 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/ConnectorArtifactHelper.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.
@@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.catalog.CatalogHelper.loadText;
 
-public class ConnectorArtifactHelper {
+public final class ConnectorArtifactHelper {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(ComponentArtifactHelper.class);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
index 6fa68d6..3a7c2a2 100644
--- 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
+++ 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/DefaultMavenArtifactProvider.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.
@@ -45,6 +45,13 @@ public class DefaultMavenArtifactProvider implements 
MavenArtifactProvider {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(DefaultMavenArtifactProvider.class);
 
+    private String cacheDirectory;
+
+    @Override
+    public void setCacheDirectory(String directory) {
+        this.cacheDirectory = directory;
+    }
+
     public void addMavenRepository(String name, String url) {
         Map<String, Object> repo = new HashMap<>();
         repo.put("name", name);
@@ -58,6 +65,11 @@ public class DefaultMavenArtifactProvider implements 
MavenArtifactProvider {
         final Set<String> names = new LinkedHashSet<>();
 
         try {
+            if (cacheDirectory != null) {
+                LOG.debug("Using cache directory: {}", cacheDirectory);
+                System.setProperty("grape.root", cacheDirectory);
+            }
+
             Grape.setEnableAutoDownload(true);
 
             final ClassLoader classLoader = new GroovyClassLoader();

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenArtifactProvider.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenArtifactProvider.java
 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenArtifactProvider.java
index 309a463..8a96808 100644
--- 
a/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenArtifactProvider.java
+++ 
b/platforms/camel-catalog-maven/src/main/java/org/apache/camel/catalog/maven/MavenArtifactProvider.java
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ *      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.
@@ -27,6 +27,15 @@ import 
org.apache.camel.catalog.connector.CamelConnectorCatalog;
 public interface MavenArtifactProvider {
 
     /**
+     * Configures the directory for the download cache.
+     * <p/>
+     * The default folder is <tt>USER_HOME/.groovy/grape</tt>
+     *
+     * @param directory the directory.
+     */
+    void setCacheDirectory(String directory);
+
+    /**
      * To add a 3rd party Maven repository.
      *
      * @param name the repository name

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenArtifactProviderTest.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenArtifactProviderTest.java
 
b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenArtifactProviderTest.java
index 84b5e0b..2fde0ed 100644
--- 
a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenArtifactProviderTest.java
+++ 
b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenArtifactProviderTest.java
@@ -35,6 +35,7 @@ public class MavenArtifactProviderTest extends TestCase {
     public void testAddComponent() {
         CamelCatalog camelCatalog = new DefaultCamelCatalog();
         MavenArtifactProvider provider = new DefaultMavenArtifactProvider();
+        provider.setCacheDirectory("target/cache");
 
         int before = camelCatalog.findComponentNames().size();
 
@@ -51,6 +52,7 @@ public class MavenArtifactProviderTest extends TestCase {
         CamelCatalog camelCatalog = new DefaultCamelCatalog();
         CamelConnectorCatalog camelConnectorCatalog = new 
DefaultCamelConnectorCatalog();
         MavenArtifactProvider provider = new DefaultMavenArtifactProvider();
+        provider.setCacheDirectory("target/cache");
 
         int before = camelCatalog.findComponentNames().size();
         List<ConnectorDto> list = camelConnectorCatalog.findConnector("foo", 
false);

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
 
b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
index 4b8abf9..785acbd 100644
--- 
a/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
+++ 
b/platforms/camel-catalog-maven/src/test/java/org/apache/camel/catalog/maven/MavenVersionManagerTest.java
@@ -24,8 +24,10 @@ import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.CatalogHelper;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.catalog.springboot.SpringBootRuntimeProvider;
+import org.junit.Ignore;
 import org.junit.Test;
 
+@Ignore("Cannot run on CI servers so run manually")
 public class MavenVersionManagerTest extends TestCase {
 
     private static final String COMPONENTS_CATALOG = 
"org/apache/camel/catalog/components.properties";

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelCatalogRest.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelCatalogRest.java
 
b/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelCatalogRest.java
index e81d795..24fe206 100644
--- 
a/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelCatalogRest.java
+++ 
b/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelCatalogRest.java
@@ -289,6 +289,13 @@ public class CamelCatalogRest {
     }
 
     @POST
+    @Path("/mavenCacheDirectory/{name}")
+    @ApiOperation(value = "Configures the Maven cache directory to use when 
downloading artifacts")
+    public void mavenCacheDirectory(@ApiParam("The name of the cache 
directory") @PathParam("name") String name) {
+        maven.setCacheDirectory(name);
+    }
+
+    @POST
     @Path("/addMavenRepository/{name}/{url}")
     @ApiOperation(value = "Adds a third party Maven repository to use for 
downloading Maven artifacts")
     public void addMavenRepository(@ApiParam("The name of the Maven 
repository") @PathParam("name") String name,

http://git-wip-us.apache.org/repos/asf/camel/blob/fe0db8a4/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelConnectorCatalogRest.java
----------------------------------------------------------------------
diff --git 
a/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelConnectorCatalogRest.java
 
b/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelConnectorCatalogRest.java
index e87124c..364bbf5 100644
--- 
a/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelConnectorCatalogRest.java
+++ 
b/platforms/camel-catalog-rest/src/main/java/org/apache/camel/catalog/rest/CamelConnectorCatalogRest.java
@@ -102,6 +102,13 @@ public class CamelConnectorCatalogRest {
     }
 
     @POST
+    @Path("/mavenCacheDirectory/{name}")
+    @ApiOperation(value = "Configures the Maven cache directory to use when 
downloading artifacts")
+    public void mavenCacheDirectory(@ApiParam("The name of the cache 
directory") @PathParam("name") String name) {
+        maven.setCacheDirectory(name);
+    }
+
+    @POST
     @Path("/addMavenRepository/{name}/{url}")
     @ApiOperation(value = "Adds a third party Maven repository to use for 
downloading Maven artifacts")
     public void addMavenRepository(@ApiParam("The name of the Maven 
repository") @PathParam("name") String name,

Reply via email to