You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2014/12/29 15:13:50 UTC
svn commit: r1648347 - in
/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration:
ConfigAdminSupport.java ConfigManager.java
Author: cziegeler
Date: Mon Dec 29 14:13:50 2014
New Revision: 1648347
URL: http://svn.apache.org/r1648347
Log:
FELIX-4203 : ConfigAdmin plugin does not return json
Modified:
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigAdminSupport.java
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigManager.java
Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigAdminSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigAdminSupport.java?rev=1648347&r1=1648346&r2=1648347&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigAdminSupport.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigAdminSupport.java Mon Dec 29 14:13:50 2014
@@ -31,12 +31,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.Vector;
-import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
@@ -61,7 +61,7 @@ import org.osgi.service.metatype.ObjectC
class ConfigAdminSupport
{
-
+
private static final String PROPERTY_FACTORYCONFIG_NAMEHINT = "webconsole.configurationFactory.nameHint";
private static final Set CONFIG_PROPERTIES_HIDE = new HashSet();
static {
@@ -200,10 +200,10 @@ class ConfigAdminSupport
String paramName = "action".equals(propName) //$NON-NLS-1$
|| ConfigManager.ACTION_DELETE.equals(propName)
|| ConfigManager.ACTION_APPLY.equals(propName)
- || ConfigManager.PROPERTY_LIST.equals(propName)
+ || ConfigManager.PROPERTY_LIST.equals(propName)
? '$' + propName : propName;
propsToKeep.add(propName);
-
+
PropertyDescriptor ad = (PropertyDescriptor) adMap.get( propName );
// try to derive from current value
@@ -593,7 +593,7 @@ class ConfigAdminSupport
configManager.log("listConfigurations: Unexpected problem encountered", e);
}
}
-
+
/**
* Builds a "name hint" for factory configuration based on other property
* values of the config and a "name hint template" defined as hidden
@@ -845,4 +845,9 @@ class ConfigAdminSupport
}
}
+
+ public Configuration[] listConfigurations(String filter) throws IOException, InvalidSyntaxException
+ {
+ return this.service.listConfigurations(filter);
+ }
}
Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigManager.java?rev=1648347&r1=1648346&r2=1648347&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigManager.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/configuration/ConfigManager.java Mon Dec 29 14:13:50 2014
@@ -19,9 +19,7 @@ package org.apache.felix.webconsole.inte
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Iterator;
import java.util.Locale;
-import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -33,6 +31,7 @@ import org.apache.felix.webconsole.WebCo
import org.apache.felix.webconsole.internal.OsgiManagerPlugin;
import org.json.JSONException;
import org.json.JSONObject;
+import org.osgi.framework.Constants;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.cm.Configuration;
@@ -273,28 +272,58 @@ public class ConfigManager extends Simpl
final ConfigAdminSupport ca = this.getConfigurationAdminSupport();
if ( ca != null )
{
+ // create filter
+ final StringBuffer sb = new StringBuffer();
+ if ( pid != null && pidFilter != null)
+ {
+ sb.append("(&");
+ }
+ if ( pid != null )
+ {
+ sb.append('(');
+ sb.append(Constants.SERVICE_PID);
+ sb.append('=');
+ sb.append(pid);
+ sb.append(')');
+ }
+ if ( pidFilter != null )
+ {
+ sb.append(pidFilter);
+ }
+ if ( pid != null && pidFilter != null)
+ {
+ sb.append(')');
+ }
+ final String filter = sb.toString();
try
{
- final Map services = ca.getServices( pid, pidFilter, locale, false );
+ // we use listConfigurations to not create configuration
+ // objects persistently without the user providing actual
+ // configuration
+ final Configuration[] configs = ca.listConfigurations( filter );
boolean printComma = false;
- for ( Iterator spi = services.keySet().iterator(); spi.hasNext(); )
+ for(int i=0; i<configs.length; i++)
{
- final String servicePid = ( String ) spi.next();
- final Configuration config = ca.getConfiguration( servicePid );
+ final Configuration config = configs[i];
if ( config != null )
{
if ( printComma )
{
pw.print( ',' );
}
- ca.printConfigurationJson( pw, servicePid, config, pidFilter, locale );
+ ca.printConfigurationJson( pw, config.getPid(), config, null, locale );
printComma = true;
}
}
}
- catch ( InvalidSyntaxException e )
+ catch ( final InvalidSyntaxException ise )
+ {
+ // should print message
+ // however this should not happen as we checked the filter before
+ }
+ catch ( final IOException ioe )
{
- // this should not happened as we checked the filter before
+ // should print message
}
}
pw.write( "]" ); //$NON-NLS-1$