FELIX-3282 Describe why an automatically generated property form is shown
FELIX-3283 Use generics
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1220680 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java
index e887583..d4711e2 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java
@@ -259,27 +259,31 @@
final PrintWriter pw = response.getWriter();
- try {
- pw.write("[");
- final SortedMap services = this.getServices(pid, pidFilter, locale, false);
- final Iterator i = services.keySet().iterator();
+ try
+ {
+ pw.write( "[" );
+ final Map<String, String> services = this.getServices( pid, pidFilter, locale, false );
boolean printColon = false;
- while ( i.hasNext() ) {
- final String servicePid = i.next().toString();
-
- final Configuration config = getConfiguration(ca, servicePid);
- if ( config != null ) {
- if ( printColon ) {
- pw.print(',');
+ for ( final String servicePid : services.keySet() )
+ {
+ final Configuration config = getConfiguration( ca, servicePid );
+ if ( config != null )
+ {
+ if ( printColon )
+ {
+ pw.print( ',' );
}
- this.printConfigurationJson(pw, servicePid, config, pidFilter, locale);
+ this.printConfigurationJson( pw, servicePid, config, pidFilter, locale );
printColon = true;
}
}
- pw.write("]");
- } catch (InvalidSyntaxException e) {
+ pw.write( "]" );
+ }
+ catch ( InvalidSyntaxException e )
+ {
// this should not happened as we checked the filter before
}
+
// nothing more to do
return;
}
@@ -410,15 +414,14 @@
{
try
{
- Map optionsFactory = getServices(ManagedServiceFactory.class.getName(),
+ Map<String, String> optionsFactory = getServices(ManagedServiceFactory.class.getName(),
pidFilter, locale, true);
addMetaTypeNames(optionsFactory, getFactoryPidObjectClasses(locale),
pidFilter, ConfigurationAdmin.SERVICE_FACTORYPID);
- for (Iterator i = optionsFactory.keySet().iterator(); i.hasNext();)
+ for ( String id : optionsFactory.keySet() )
{
- String id = (String) i.next();
- Object name = optionsFactory.get(id);
- json.append("fpids", new JSONObject().put("id", id).put("name", name));
+ Object name = optionsFactory.get( id );
+ json.append( "fpids", new JSONObject().put( "id", id ).put( "name", name ) );
}
}
catch (Exception e)
@@ -433,7 +436,7 @@
try
{
// start with ManagedService instances
- Map optionsPlain = getServices(ManagedService.class.getName(), pidFilter,
+ Map<String, String> optionsPlain = getServices(ManagedService.class.getName(), pidFilter,
locale, true);
// next are the MetaType informations without ManagedService
@@ -477,30 +480,29 @@
}
}
- for (Iterator i = optionsPlain.keySet().iterator(); i.hasNext();)
+ for ( String id : optionsPlain.keySet() )
{
- String id = (String) i.next();
- Object name = optionsPlain.get(id);
+ Object name = optionsPlain.get( id );
- final Configuration config = getConfiguration(ca, id);
- JSONObject data = new JSONObject().put("id", id).put("name", name);
- if (null != config)
+ final Configuration config = getConfiguration( ca, id );
+ JSONObject data = new JSONObject().put( "id", id ).put( "name", name );
+ if ( null != config )
{
final String fpid = config.getFactoryPid();
- if (null != fpid)
+ if ( null != fpid )
{
- data.put("fpid", fpid);
+ data.put( "fpid", fpid );
}
- final Bundle bundle = getBoundBundle(config);
- if (null != bundle)
+ final Bundle bundle = getBoundBundle( config );
+ if ( null != bundle )
{
- data.put("bundle", bundle.getBundleId());
- data.put("bundle_name", Util.getName(bundle, loc));
+ data.put( "bundle", bundle.getBundleId() );
+ data.put( "bundle_name", Util.getName( bundle, loc ) );
}
}
- json.append("pids", data);
+ json.append( "pids", data );
}
}
catch (Exception e)
@@ -527,11 +529,12 @@
return null;
}
- private SortedMap getServices( String serviceClass, String serviceFilter, String locale, boolean ocdRequired )
- throws InvalidSyntaxException
+
+ private SortedMap<String, String> getServices( String serviceClass, String serviceFilter, String locale,
+ boolean ocdRequired ) throws InvalidSyntaxException
{
// sorted map of options
- SortedMap optionsFactory = new TreeMap( String.CASE_INSENSITIVE_ORDER );
+ SortedMap<String, String> optionsFactory = new TreeMap<String, String>( String.CASE_INSENSITIVE_ORDER );
// find all ManagedServiceFactories to get the factoryPIDs
ServiceReference[] refs = this.getBundleContext().getServiceReferences( serviceClass, serviceFilter );
@@ -563,7 +566,7 @@
}
- private void addMetaTypeNames( final Map pidMap, final Map ocdCollection, final String filterSpec, final String type )
+ private void addMetaTypeNames( final Map<String, String> pidMap, final Map<String, ObjectClassDefinition> ocdCollection, final String filterSpec, final String type )
{
Filter filter = null;
if ( filterSpec != null )
@@ -578,18 +581,17 @@
}
}
- for ( Iterator oci = ocdCollection.entrySet().iterator(); oci.hasNext(); )
+ for ( Entry<String, ObjectClassDefinition> ociEntry : ocdCollection.entrySet() )
{
- final Entry ociEntry = (Entry) oci.next();
- final String pid = (String) ociEntry.getKey();
- final ObjectClassDefinition ocd = ( ObjectClassDefinition ) ociEntry.getValue();
+ final String pid = ociEntry.getKey();
+ final ObjectClassDefinition ocd = ociEntry.getValue();
if ( filter == null )
{
pidMap.put( pid, ocd.getName() );
}
else
{
- final Dictionary props = new Hashtable();
+ final Dictionary<String, String> props = new Hashtable<String, String>();
props.put( type, pid );
if ( filter.match( props ) )
{
@@ -597,7 +599,6 @@
}
}
}
-
}
@@ -624,6 +625,7 @@
}
+ @SuppressWarnings("unchecked")
private void configForm( JSONWriter json, String pid, Configuration config, String pidFilter, String locale )
throws JSONException
{
@@ -637,11 +639,11 @@
json.value( pidFilter );
}
- Dictionary props = null;
+ Dictionary<String, ?> props = null;
ObjectClassDefinition ocd;
if ( config != null )
{
- props = config.getProperties();
+ props = config.getProperties(); // unchecked
ocd = this.getObjectClassDefinition( config, locale );
}
else
@@ -651,7 +653,7 @@
if ( props == null )
{
- props = new Hashtable();
+ props = new Hashtable<String, Object>();
}
if ( ocd != null )
@@ -661,23 +663,23 @@
else
{
json.key( "title" ).value( pid );
- json.key( "description" )
- .value(
- "Please enter configuration properties for this configuration in the field below. This configuration has no associated description" );
+ json.key( "description" ).value(
+ "This form is automatically generated from existing properties because no property "
+ + "descriptors are available for this configuration. This may be cause by the absence "
+ + "of the OSGi Metatype Service or the absence of a MetaType descriptor for this configuration." );
json.key( "properties" ).object();
- for ( Enumeration pe = props.keys(); pe.hasMoreElements(); )
+ for ( Enumeration<String> pe = props.keys(); pe.hasMoreElements(); )
{
- Object key = pe.nextElement();
+ final String id = pe.nextElement();
// ignore well known special properties
- if ( !key.equals( Constants.SERVICE_PID ) && !key.equals( Constants.SERVICE_DESCRIPTION )
- && !key.equals( Constants.SERVICE_ID ) && !key.equals( Constants.SERVICE_VENDOR )
- && !key.equals( ConfigurationAdmin.SERVICE_BUNDLELOCATION )
- && !key.equals( ConfigurationAdmin.SERVICE_FACTORYPID ) )
+ if ( !id.equals( Constants.SERVICE_PID ) && !id.equals( Constants.SERVICE_DESCRIPTION )
+ && !id.equals( Constants.SERVICE_ID ) && !id.equals( Constants.SERVICE_VENDOR )
+ && !id.equals( ConfigurationAdmin.SERVICE_BUNDLELOCATION )
+ && !id.equals( ConfigurationAdmin.SERVICE_FACTORYPID ) )
{
- final String id = ( String ) key;
- final Object value = props.get( key );
+ final Object value = props.get( id );
final AttributeDefinition ad = getAttributeDefinition( id, value );
json.key( id );
attributeToJson( json, ad, value );
@@ -693,7 +695,7 @@
}
- private void mergeWithMetaType( Dictionary props, ObjectClassDefinition ocd, JSONWriter json ) throws JSONException
+ private void mergeWithMetaType( Dictionary<String, ?> props, ObjectClassDefinition ocd, JSONWriter json ) throws JSONException
{
json.key( "title" ).value( ocd.getName() );
@@ -743,7 +745,8 @@
}
else
{
- Dictionary headers = bundle.getHeaders( locale );
+ @SuppressWarnings("unchecked")
+ Dictionary<String, ?> headers = bundle.getHeaders( locale );
String name = ( String ) headers.get( Constants.BUNDLE_NAME );
if ( name == null )
{
@@ -812,18 +815,19 @@
{
config = getConfiguration( ca, pid, factoryPid );
- Dictionary props = config.getProperties();
+ @SuppressWarnings("unchecked")
+ Dictionary<String, Object> props = config.getProperties();
if ( props == null )
{
- props = new Hashtable();
+ props = new Hashtable<String, Object>();
}
- Map adMap = this.getAttributeDefinitionMap( config, null );
+ Map<String, AttributeDefinition> adMap = this.getAttributeDefinitionMap( config, null );
StringTokenizer propTokens = new StringTokenizer( propertyList, "," );
while ( propTokens.hasMoreTokens() )
{
String propName = propTokens.nextToken();
- AttributeDefinition ad = ( AttributeDefinition ) adMap.get( propName );
+ AttributeDefinition ad = adMap.get( propName );
// try to derive from current value
if (ad == null) {
@@ -862,7 +866,7 @@
else
{
// array or vector of any type
- Vector vec = new Vector();
+ Vector<Object> vec = new Vector<Object>();
String[] properties = request.getParameterValues( propName );
if ( properties != null )
@@ -984,7 +988,7 @@
}
else if ( value instanceof Vector )
{
- value = ( ( Vector ) value ).get( 0 );
+ value = ( ( Vector<?> ) value ).get( 0 );
}
else if ( value.getClass().isArray() )
{
@@ -1022,7 +1026,7 @@
{
int attrType;
int attrCardinality;
- Class type;
+ Class<?> type;
if ( value == null )
{
@@ -1032,7 +1036,7 @@
else if ( value instanceof Collection )
{
attrCardinality = Integer.MIN_VALUE;
- Collection coll = ( Collection ) value;
+ Collection<?> coll = ( Collection<?> ) value;
if ( coll.isEmpty() )
{
type = String.class;
@@ -1137,11 +1141,11 @@
}
- private static List toList( Object value )
+ private static List<?> toList( Object value )
{
if ( value instanceof Vector )
{
- return ( Vector ) value;
+ return ( Vector<?> ) value;
}
else if ( value.getClass().isArray() )
{
@@ -1164,9 +1168,9 @@
}
- private static void setPasswordProps( final Vector vec, final String[] properties, Object props )
+ private static void setPasswordProps( final Vector<Object> vec, final String[] properties, Object props )
{
- List propList = toList( props );
+ List<?> propList = toList( props );
for ( int i = 0; i < properties.length; i++ )
{
if ( PASSWORD_PLACEHOLDER_VALUE.equals( properties[i] ) )
@@ -1184,7 +1188,7 @@
}
- private static final Object toArray( int type, Vector values )
+ private static final Object toArray( int type, Vector<?> values )
{
int size = values.size();
@@ -1271,6 +1275,7 @@
}
+ @SuppressWarnings("rawtypes")
public Dictionary getProperties()
{
// dummy configuration has no properties
@@ -1284,7 +1289,7 @@
}
- public void update( Dictionary properties )
+ public void update( @SuppressWarnings("rawtypes") Dictionary properties )
{
// dummy configuration cannot be updated
}