Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * 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
   *
   *      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.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.felix.webconsole.internal.configuration;
 
 
 import java.util.List;
 
The ConfigManagerBase is the base class for the ConfigurationAdmin support in the web console. It provides various helper methods mostly with respect to using the MetaTypeService to access configuration descriptions.
 
 {

    
Attribute type code for PASSWORD attributes as defined in Metatype Service Specification 1.2. Since we cannot yet refer to the 1.2 API package we just replicate the type code here. Once the API is available and can be referred to, we should use it.
 
     static final int ATTRIBUTE_TYPE_PASSWORD = 12;

    
Marker value of password fields used as dummy values and indicating unmodified values.
 
     static final String PASSWORD_PLACEHOLDER_VALUE = "unmodified"//$NON-NLS-1$
 
 
     static Bundle getBundlefinal BundleContext bundleContextfinal String bundleLocation )
     {
         if ( bundleLocation == null )
         {
             return null;
         }
 
         Bundle[] bundles = bundleContext.getBundles();
         for ( int i = 0; i < bundles.lengthi++ )
         {
             if ( bundleLocation.equalsbundles[i].getLocation() ) )
             {
                 return bundles[i];
             }
         }
 
         return null;
     }
 
 
     static void attributeToJsonfinal JSONWriter jsonfinal PropertyDescriptor adfinal Object propValue )
         throws JSONException
     {
         json.object();
 
         Object value;
         if ( propValue != null )
         {
             value = propValue;
         }
         else if ( ad.getDefaultValue() != null )
         {
             value = ad.getDefaultValue();
         }
         else if ( ad.getCardinality() == 0 )
         {
             value = ""//$NON-NLS-1$
         }
         else
         {
            value = new String[0];
        }
        json.key"name" ); //$NON-NLS-1$
        json.valuead.getName() );
        json.key"optional" ); //$NON-NLS-1$
        json.valuead.isOptional() );
        json.key"is_set" ); //$NON-NLS-1$
        json.valuepropValue != null );
        // attribute type - overwrite metatype provided type
        // if the property name contains "password" and the
        // type is string
        int propertyType = getAttributeTypead );
        json.key"type" ); //$NON-NLS-1$
        if ( ad.getOptionLabels() != null && ad.getOptionLabels().length > 0 )
        {
            json.object();
            json.key"labels" ); //$NON-NLS-1$
            json.value( Arrays.asListad.getOptionLabels() ) );
            json.key"values" ); //$NON-NLS-1$
            json.value( Arrays.asListad.getOptionValues() ) );
            json.endObject();
        }
        else
        {
            json.valuepropertyType );
        }
        // unless the property is of password type, send it
        final boolean isPassword = propertyType == ;
        if ( ad.getCardinality() == 0 )
        {
            // scalar
            if ( isPassword )
            {
                value = ;
            }
            else if ( value instanceof Vector )
            {
                value = ( ( Vector ) value ).get( 0 );
            }
            else if ( value.getClass().isArray() )
            {
                value = Array.getvalue, 0 );
            }
            json.key"value" ); //$NON-NLS-1$
            json.valuevalue );
        }
        else
        {
            value = new JSONArraytoListvalue ) );
            if ( isPassword )
            {
                JSONArray tmp = ( JSONArray ) value;
                for ( int tmpI = 0; tmpI < tmp.length(); tmpI++ )
                {
                    tmp.puttmpI );
                }
            }
            json.key"values" ); //$NON-NLS-1$
            json.valuevalue );
        }
        if ( ad.getDescription() != null )
        {
            json.key"description" ); //$NON-NLS-1$
            json.valuead.getDescription() + " (" + ad.getID() + ")" ); //$NON-NLS-1$ //$NON-NLS-2$
        }
        json.endObject();
    }
    private static boolean isPasswordPropertyString name )
    {
        return name == null ? false : name.toLowerCase().indexOf"password" ) != -1; //$NON-NLS-1$
    }
    private static List toListObject value )
    {
        if ( value instanceof Vector )
        {
            return ( Vector ) value;
        }
        else if ( value.getClass().isArray() )
        {
            if ( value.getClass().getComponentType().isPrimitive() )
            {
                final int len = Array.getLengthvalue );
                final Object[] tmp = new Object[len];
                for ( int j = 0; j < lenj++ )
                {
                    tmp[j] = Array.getvaluej );
                }
                value = tmp;
            }
            return Arrays.asList( ( Object[] ) value );
        }
        else
        {
            return Collections.singletonListvalue );
        }
    }
    static PropertyDescriptor createAttributeDefinitionfinal String idfinal Object value )
    {
        int attrType;
        int attrCardinality;
        Class type;
        if ( value == null )
        {
            attrCardinality = 0;
            type = String.class;
        }
        else if ( value instanceof Collection )
        {
            attrCardinality = .;
            Collection coll = ( Collection ) value;
            if ( coll.isEmpty() )
            {
                type = String.class;
            }
            else
            {
                type = coll.iterator().next().getClass();
            }
        }
        else if ( value.getClass().isArray() )
        {
            attrCardinality = .;
            type = value.getClass().getComponentType();
        }
        else
        {
            attrCardinality = 0;
            type = value.getClass();
        }
        if ( type == Boolean.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Byte.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Character.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Double.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Float.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Long.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Integer.class || type == . )
        {
            attrType = .;
        }
        else if ( type == Short.class || type == . )
        {
            attrType = .;
        }
        else
        {
            attrType = .;
        }
        return new PropertyDescriptoridattrTypeattrCardinality );
    }
    static int getAttributeTypefinal PropertyDescriptor ad )
    {
        if ( ad.getType() == . && isPasswordPropertyad.getID() ) )
        {
            return ;
        }
        return ad.getType();
    }


    

Throws:
java.lang.NumberFormatException If the value cannot be converted to a number and type indicates a numeric type
    static final Object toTypeint typeString value )
    {
        switch ( type )
        {
            case .:
                return Boolean.valueOfvalue );
            case .:
                return Byte.valueOfvalue );
            case .:
                char c = ( value.length() > 0 ) ? value.charAt( 0 ) : 0;
                return new Characterc );
            case .:
                return Double.valueOfvalue );
            case .:
                return Float.valueOfvalue );
            case .:
                return Long.valueOfvalue );
            case .:
                return Integer.valueOfvalue );
            case .:
                return Short.valueOfvalue );
            default:
                // includes AttributeDefinition.STRING
                // includes ATTRIBUTE_TYPE_PASSWORD/AttributeDefinition.PASSWORD
                return value;
        }
    }
    static void setPasswordPropsfinal Vector vecfinal String[] propertiesObject props )
    {
        List propList = ( props == null ) ? new ArrayList() : toListprops );
        for ( int i = 0; i < properties.lengthi++ )
        {
            if ( .equalsproperties[i] ) )
            {
                if ( i < propList.size() && propList.geti ) != null )
                {
                    vec.addpropList.geti ) );
                }
            }
            else
            {
                vec.addproperties[i] );
            }
        }
    }
    static final Object toArrayint typeVector values )
    {
        int size = values.size();
        // short cut for string array
        if ( type == . || type ==  )
        {
            return values.toArraynew String[size] );
        }
        Object array;
        switch ( type )
        {
            case .:
                array = new boolean[size];
                break;
            case .:
                array = new byte[size];
                break;
            case .:
                array = new char[size];
                break;
            case .:
                array = new double[size];
                break;
            case .:
                array = new float[size];
                break;
            case .:
                array = new long[size];
                break;
            case .:
                array = new int[size];
                break;
            case .:
                array = new short[size];
                break;
            default:
                // unexpected, but assume string
                array = new String[size];
        }
        for ( int i = 0; i < sizei++ )
        {
            Array.setarrayivalues.geti ) );
        }
        return array;
    }
New to GrepCode? Check out our FAQ X