incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cziege...@apache.org
Subject svn commit: r734513 - /incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java
Date Wed, 14 Jan 2009 21:09:22 GMT
Author: cziegeler
Date: Wed Jan 14 13:09:21 2009
New Revision: 734513

URL: http://svn.apache.org/viewvc?rev=734513&view=rev
Log:
SLING-798 : Get available configurations from web console before creating configs

Modified:
    incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java

Modified: incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java?rev=734513&r1=734512&r2=734513&view=diff
==============================================================================
--- incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java
(original)
+++ incubator/sling/trunk/maven/maven-sling-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleInstallMojo.java
Wed Jan 14 13:09:21 2009
@@ -21,8 +21,10 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.jar.JarFile;
 import java.util.jar.Manifest;
 
@@ -32,6 +34,7 @@
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
 import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.FilePartSource;
@@ -41,6 +44,9 @@
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
+import org.apache.sling.commons.json.JSONArray;
+import org.apache.sling.commons.json.JSONException;
+import org.apache.sling.commons.json.JSONObject;
 import org.apache.sling.commons.osgi.ManifestHeader;
 import org.apache.sling.commons.osgi.ManifestHeader.Entry;
 
@@ -137,9 +143,9 @@
         getLog().info(
             "Installing Bundle " + bundleName + "(" + bundleFile + ") to "
                 + slingUrl);
-        configure(slingUrl, bundleFile);
+        post(slingUrl, bundleFile);
         if ( mountByFS ) {
-            post(slingUrl, bundleFile);
+            configure(slingUrl, bundleFile);
         }
     }
 
@@ -221,7 +227,7 @@
 
         // authentication stuff
         client.getParams().setAuthenticationPreemptive(true);
-        Credentials defaultcreds = new UsernamePasswordCredentials(user,
+        final Credentials defaultcreds = new UsernamePasswordCredentials(user,
                 password);
         client.getState().setCredentials(AuthScope.ANY, defaultcreds);
 
@@ -231,6 +237,13 @@
         if ( resources == null || resources.size() == 0 ) {
             throw new MojoExecutionException("No resources configured for this project.");
         }
+        // now get current configurations
+        final Map configs = this.getCurrentFileProviderConfigs(targetURL, client);
+        final Iterator configIter = configs.keySet().iterator();
+        while ( configIter.hasNext() ) {
+            final String key = configIter.next().toString();
+            getLog().info("Found " + key + " : " + configs.get(key));
+        }
         final Entry[] entries = header.getEntries();
         for(final Entry entry : entries) {
             final String path = entry.getValue();
@@ -292,6 +305,51 @@
     }
 
     /**
+     * Return all file provider configs for this project
+     * @param targetURL The targetURL of the webconsole
+     * @param client The http client
+     * @return A map (may be empty) with the pids as keys and the path as value
+     * @throws MojoExecutionException
+     */
+    protected Map getCurrentFileProviderConfigs(final String targetURL, final HttpClient
client)
+    throws MojoExecutionException {
+        getLog().debug("Getting current file provider configurations.");
+        final Map result = new HashMap();
+        final String getUrl = targetURL  + "/configMgr/(service.factoryPid=" + FS_FACTORY
+ ").json";
+        final GetMethod get = new GetMethod(getUrl);
+
+        try {
+            final int status = client.executeMethod(get);
+            if ( status == 200 )
+            {
+                final String jsonText = get.getResponseBodyAsString();
+                try {
+                    JSONArray array = new JSONArray(jsonText);
+                    for(int i=0; i<array.length(); i++) {
+                        final JSONObject obj = array.getJSONObject(i);
+                        final String pid = obj.getString("pid");
+                        final String path = obj.getJSONObject("provider.file").getString("value");
+                        if ( path != null && path.startsWith(this.project.getBasedir().getAbsolutePath())
) {
+                            getLog().debug("Found configuration with pid: " + pid + ", path:
" + path);
+                            result.put(pid, path);
+                        }
+                    }
+                } catch (JSONException ex) {
+                    throw new MojoExecutionException("Reading configuration from " + getUrl
+                            + " failed, cause: " + ex.getMessage(), ex);
+                }
+            }
+        } catch (HttpException ex) {
+            throw new MojoExecutionException("Reading configuration from " + getUrl
+                    + " failed, cause: " + ex.getMessage(), ex);
+        } catch (IOException ex) {
+            throw new MojoExecutionException("Reading configuration from " + getUrl
+                    + " failed, cause: " + ex.getMessage(), ex);
+        }
+        return result;
+    }
+
+    /**
      * Get the manifest from the File.
      * @param bundleFile The bundle jar
      * @return The manifest.



Mime
View raw message