package rules.inefficient_apis; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.google.common.collect.Maps; import java.util.HashMap; import java.util.Map; class InefficientApis extends Activity { // {fact rule=inefficient-apis@v1.0 defects=1} Map copyMapNonCompliant(Map parameterMap) { // Noncompliant: map will be rehashed after 75% of all keys have been added to the map. Map map = new HashMap(parameterMap.size()); for (Map.Entry entry : parameterMap.entrySet()) { map.put(entry.getKey(), entry.getValue()); } return map; } // {/fact} // {fact rule=inefficient-apis@v1.0 defects=0} Map copyMapCompliant(Map parameterMap) { // Compliant: map will not be rehashed because its expected size is provided. Map map = Maps.newHashMapWithExpectedSize(parameterMap.size()); for (Map.Entry entry : parameterMap.entrySet()) { map.put(entry.getKey(), entry.getValue()); } return map; } // {/fact} // {fact rule=inefficient-apis@v1.0 defects=1} public String getMessageNonCompliant(Bundle savedInstanceState) { Intent intent = getIntent(); // Noncompliant: using Serializable to pass data between different Android components. return (String) intent.getSerializableExtra("message"); } // {/fact} // {fact rule=inefficient-apis@v1.0 defects=0} public String getMessageCompliant(Bundle savedInstanceState) { Intent intent = getIntent(); // Compliant: using Parcelable to pass data between different Android components. return intent.getParcelableExtra("message"); } // {/fact} }