Merge pull request #6138 from owen-mc/java/model/apache-commons-collections

Model Apache commons collections MapUtils class and keyvalue package
This commit is contained in:
Owen Mansel-Chan
2021-06-25 15:53:03 +01:00
committed by GitHub
35 changed files with 1816 additions and 6 deletions

View File

@@ -0,0 +1,2 @@
lgtm,codescanning
* Added models for the package `keyvalue` and the classes `KeyValue` and `MapUtils` from Apache Commons Collections. This may lead to more results from any query using data-flow analysis where a relevant path uses one of these container types.

View File

@@ -2,9 +2,10 @@ Framework name,URL,Package prefixes
Java Standard Library,,java.*
Java extensions,,javax.*
Google Guava,https://guava.dev/,com.google.common.*
Apache Commons Collections,https://commons.apache.org/proper/commons-collections/,org.apache.commons.collections org.apache.commons.collections4
Apache Commons IO,https://commons.apache.org/proper/commons-io/,org.apache.commons.io
Apache Commons Lang,https://commons.apache.org/proper/commons-lang/,org.apache.commons.lang3
Apache Commons Text,https://commons.apache.org/proper/commons-text/,org.apache.commons.text
Apache HttpComponents,https://hc.apache.org/,org.apache.hc.core5.* org.apache.http
Android,,android.*
Spring,https://spring.io/,org.springframework.*
Spring,https://spring.io/,org.springframework.*
1 Framework name URL Package prefixes
2 Java Standard Library java.*
3 Java extensions javax.*
4 Google Guava https://guava.dev/ com.google.common.*
5 Apache Commons Collections https://commons.apache.org/proper/commons-collections/ org.apache.commons.collections org.apache.commons.collections4
6 Apache Commons IO https://commons.apache.org/proper/commons-io/ org.apache.commons.io
7 Apache Commons Lang https://commons.apache.org/proper/commons-lang/ org.apache.commons.lang3
8 Apache Commons Text https://commons.apache.org/proper/commons-text/ org.apache.commons.text
9 Apache HttpComponents https://hc.apache.org/ org.apache.hc.core5.* org.apache.http
10 Android android.*
11 Spring https://spring.io/ org.springframework.*

View File

@@ -78,6 +78,7 @@ private import FlowSummary
private module Frameworks {
private import internal.ContainerFlow
private import semmle.code.java.frameworks.ApacheHttp
private import semmle.code.java.frameworks.apache.Collections
private import semmle.code.java.frameworks.apache.Lang
private import semmle.code.java.frameworks.guava.Guava
private import semmle.code.java.frameworks.jackson.JacksonSerializability

View File

@@ -5,6 +5,7 @@
import java
import SSA
private import semmle.code.java.controlflow.internal.GuardsLogic
private import semmle.code.java.frameworks.apache.Collections
private import RangeUtils
private import IntegerGuards
@@ -144,11 +145,11 @@ predicate nullCheckMethod(Method m, boolean branch, boolean isnull) {
branch = false and
isnull = false
or
(
m.getDeclaringType().hasQualifiedName("org.apache.commons.collections4", "CollectionUtils") or
m.getDeclaringType().hasQualifiedName("org.apache.commons.collections", "CollectionUtils")
) and
m.hasName("isNotEmpty") and
m instanceof MethodApacheCollectionsIsEmpty and
branch = false and
isnull = false
or
m instanceof MethodApacheCollectionsIsNotEmpty and
branch = true and
isnull = false
or

View File

@@ -0,0 +1,264 @@
/** Definitions related to the Apache Commons Collections library. */
import java
private import semmle.code.java.dataflow.FlowSteps
private import semmle.code.java.dataflow.ExternalFlow
/**
* The method `isNotEmpty` in either `org.apache.commons.collections.CollectionUtils`
* or `org.apache.commons.collections4.CollectionUtils`.
*/
class MethodApacheCollectionsIsEmpty extends Method {
MethodApacheCollectionsIsEmpty() {
this.getDeclaringType()
.hasQualifiedName(["org.apache.commons.collections", "org.apache.commons.collections4"],
"CollectionUtils") and
this.hasName("isEmpty")
}
}
/**
* The method `isNotEmpty` in either `org.apache.commons.collections.CollectionUtils`
* or `org.apache.commons.collections4.CollectionUtils`.
*/
class MethodApacheCollectionsIsNotEmpty extends Method {
MethodApacheCollectionsIsNotEmpty() {
this.getDeclaringType()
.hasQualifiedName(["org.apache.commons.collections", "org.apache.commons.collections4"],
"CollectionUtils") and
this.hasName("isNotEmpty")
}
}
/**
* Value-propagating models for classes in the package `org.apache.commons.collections4`.
*/
private class ApacheCollectionsModel extends SummaryModelCsv {
override predicate row(string row) {
row =
[
"org.apache.commons.collections4;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value",
"org.apache.commons.collections4;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value",
"org.apache.commons.collections;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value",
"org.apache.commons.collections;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value"
]
}
}
/**
* Value-propagating models for classes in the package `org.apache.commons.collections4.keyvalue`.
*/
private class ApacheKeyValueModel extends SummaryModelCsv {
override predicate row(string row) {
row =
[
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;MapValue of Argument[-1];ReturnValue;value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;toString;;;MapKey of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;toString;;;MapValue of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections4.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapKey of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapValue of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value",
"org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;TiedMapEntry;true;TiedMapEntry;;;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;TiedMapEntry;true;TiedMapEntry;;;Argument[1];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;setKey;;;MapValue of Argument[-1];ReturnValue;value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;setKey;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;toString;;;MapKey of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections.keyvalue;AbstractKeyValue;true;toString;;;MapValue of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapKey of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapValue of Argument[-1];ReturnValue;taint",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value",
"org.apache.commons.collections.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;TiedMapEntry;true;TiedMapEntry;;;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;TiedMapEntry;true;TiedMapEntry;;;Argument[1];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value",
"org.apache.commons.collections.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value"
]
}
}
/**
* Value-propagating models for the class `org.apache.commons.collections4.MapUtils`.
*/
private class ApacheMapUtilsModel extends SummaryModelCsv {
override predicate row(string row) {
row =
[
"org.apache.commons.collections4;MapUtils;true;emptyIfNull;;;Argument[0];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;fixedSizeMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;fixedSizeMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;fixedSizeSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;fixedSizeSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getMap;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getObject;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getObject;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getString;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;getString;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;invertMap;;;MapKey of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;invertMap;;;MapValue of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;iterableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;iterableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;iterableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;iterableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;orderedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;orderedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;populateMap;(Map,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;populateMap;(MultiMap,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value",
// Note that when lambdas are supported we should have more models for populateMap
"org.apache.commons.collections4;MapUtils;true;predicatedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;predicatedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;predicatedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;predicatedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;safeAddToMap;;;Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;safeAddToMap;;;Argument[2];MapValue of Argument[0];value",
"org.apache.commons.collections4;MapUtils;true;synchronizedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;synchronizedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;synchronizedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;synchronizedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;toMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;toMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;transformedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;transformedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;transformedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;transformedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;unmodifiableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;unmodifiableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;unmodifiableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections4;MapUtils;true;unmodifiableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;emptyIfNull;;;Argument[0];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;fixedSizeMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;fixedSizeMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;fixedSizeSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;fixedSizeSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getMap;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getObject;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getObject;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getString;;;MapValue of Argument[0];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;getString;;;Argument[2];ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;invertMap;;;MapKey of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;invertMap;;;MapValue of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;iterableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;iterableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;iterableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;iterableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;lazyMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;lazyMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;lazySortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;lazySortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;multiValueMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;multiValueMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;orderedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;orderedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;populateMap;(Map,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;populateMap;(MultiMap,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value",
// Note that when lambdas are supported we should have more models for populateMap
"org.apache.commons.collections;MapUtils;true;predicatedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;predicatedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;predicatedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;predicatedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;safeAddToMap;;;Argument[1];MapKey of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;safeAddToMap;;;Argument[2];MapValue of Argument[0];value",
"org.apache.commons.collections;MapUtils;true;synchronizedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;synchronizedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;synchronizedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;synchronizedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;toMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;toMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;transformedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;transformedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;transformedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;transformedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;unmodifiableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;unmodifiableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;unmodifiableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value",
"org.apache.commons.collections;MapUtils;true;unmodifiableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
]
}
}

View File

@@ -0,0 +1,990 @@
package generatedtest;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.Vector;
import org.apache.commons.collections4.Factory;
import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.IterableSortedMap;
import org.apache.commons.collections4.KeyValue;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.OrderedMap;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.keyvalue.AbstractKeyValue;
import org.apache.commons.collections4.keyvalue.AbstractMapEntry;
import org.apache.commons.collections4.keyvalue.AbstractMapEntryDecorator;
import org.apache.commons.collections4.keyvalue.DefaultKeyValue;
import org.apache.commons.collections4.keyvalue.DefaultMapEntry;
import org.apache.commons.collections4.keyvalue.TiedMapEntry;
import org.apache.commons.collections4.keyvalue.UnmodifiableMapEntry;
import org.apache.commons.collections4.map.MultiValueMap;
//Test case generated by GenerateFlowTestCase.ql
public class Test {
static Object getMapKey(AbstractKeyValue container) { return container.getKey(); }
static Object getMapKeyFromEntry(Map.Entry container) { return container.getKey(); }
static Object getMapKey(AbstractMapEntryDecorator container) { return container.getKey(); }
static Object getMapKey(Map container) { return container.keySet().iterator().next(); }
static Object getMapValue(AbstractKeyValue container) { return container.getValue(); }
static Object getMapValueFromEntry(Map.Entry container) { return container.getValue(); }
static Object getMapValue(AbstractMapEntryDecorator container) { return container.getValue(); }
static Object getMapValue(Map container) { return container.get(null); }
Object[] newWithArrayElement(Object element) { return new Object[] {element}; }
Iterable<String> newWithElement(String element) { Vector<String> v = new Vector<String>(); v.add(element); return v; }
MyAbstractKeyValue newMAKVWithMapKey(Object element) { return new MyAbstractKeyValue(element,null); }
DefaultKeyValue newDKVWithMapKey(Object element) { return new DefaultKeyValue(element,null); }
MyAbstractMapEntry newMAMEWithMapKey(Object element) { return new MyAbstractMapEntry(element,null); }
MyAbstractMapEntryDecorator newMAMEDWithMapKey(Object element) { return new MyAbstractMapEntryDecorator(newMAMEWithMapKey(element)); }
ResourceBundle newRBWithMapKey(Object element) { return (ResourceBundle)null; }
SortedMap newTreeMapWithMapKey(Object element) { SortedMap m = new TreeMap(); m.put(element,null); return m; }
TiedMapEntry newTMEWithMapKey(Object element) { return new TiedMapEntry(newTreeMapWithMapKey(element),element); }
MyAbstractKeyValue newMAKVWithMapValue(Object element) { return new MyAbstractKeyValue(null,element); }
DefaultKeyValue newDKVWithMapValue(Object element) { return new DefaultKeyValue(null,element); }
MyAbstractMapEntry newMAMEWithMapValue(Object element) { return new MyAbstractMapEntry(null,element); }
MyAbstractMapEntryDecorator newMAMEDWithMapValue(Object element) { return new MyAbstractMapEntryDecorator(newMAMEWithMapValue(element)); }
ResourceBundle newRBWithMapValue(Object element) { return (ResourceBundle)null; }
SortedMap newTreeMapWithMapValue(Object element) { SortedMap m = new TreeMap(); m.put(null,element); return m; }
TiedMapEntry newTMEWithMapValue(Object element) { return new TiedMapEntry(newTreeMapWithMapValue(element),null); }
UnmodifiableMapEntry newUMEWithMapValue(Object element) { return new UnmodifiableMapEntry(null,element); }
Object source() { return null; }
void sink(Object o) { }
class MyAbstractKeyValue<K, V> extends AbstractKeyValue<K, V> {
MyAbstractKeyValue(K key, V value) {
super(key, value);
}
K mySetKey(final K key) {
return super.setKey(key);
}
V mySetValue(final V value) {
return super.setValue(value);
}
}
class MyAbstractMapEntry<K, V> extends AbstractMapEntry<K, V> {
MyAbstractMapEntry(final K key, final V value) {
super(key, value);
}
@Override
public K getKey() { return null; }
@Override
public V getValue() { return null; }
}
class MyAbstractMapEntryDecorator<K, V> extends AbstractMapEntryDecorator<K, V> {
MyAbstractMapEntryDecorator(final Map.Entry<K, V> entry) {
super(entry);
}
Map.Entry<K, V> myGetMapEntry() {
return super.getMapEntry();
}
}
public void test() {
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[0];MapKey of Argument[-1];value"
AbstractKeyValue out = null;
Object in = source();
out = new MyAbstractKeyValue(in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;AbstractKeyValue;;;Argument[1];MapValue of Argument[-1];value"
AbstractKeyValue out = null;
Object in = source();
out = new MyAbstractKeyValue(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;Argument[0];MapKey of Argument[-1];value"
DefaultKeyValue out = null;
Object in = source();
out.setKey(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;Argument[0];MapKey of Argument[-1];value"
MyAbstractKeyValue out = null;
Object in = source();
out.mySetKey(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
DefaultKeyValue in = newDKVWithMapValue(source());
out = in.setKey(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
MyAbstractKeyValue in = newMAKVWithMapValue(source());
out = in.mySetKey(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setKey;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
MyAbstractKeyValue in = newMAKVWithMapValue(source());
out = in.mySetKey((Object)null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value"
UnmodifiableMapEntry out = null;
Object in = source();
out.setValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value"
DefaultKeyValue out = null;
Object in = source();
out.setValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value"
AbstractMapEntry out = null;
Object in = source();
out.setValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;Argument[0];MapValue of Argument[-1];value"
MyAbstractKeyValue out = null;
Object in = source();
out.mySetValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
UnmodifiableMapEntry in = newUMEWithMapValue(source());
out = in.setValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
DefaultKeyValue in = newDKVWithMapValue(source());
out = in.setValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
AbstractMapEntry in = newMAMEWithMapValue(source());
out = in.setValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
AbstractMapEntry in = newMAMEWithMapValue(source());
out = in.setValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
MyAbstractKeyValue in = newMAKVWithMapValue(source());
out = in.mySetValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;setValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
MyAbstractKeyValue in = newMAKVWithMapValue(source());
out = in.mySetValue(null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;toString;;;MapKey of Argument[-1];ReturnValue;taint"
String out = null;
AbstractKeyValue in = newMAKVWithMapKey(source());
out = in.toString();
sink(out); // $hasTaintFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractKeyValue;true;toString;;;MapValue of Argument[-1];ReturnValue;taint"
String out = null;
AbstractKeyValue in = newMAKVWithMapValue(source());
out = in.toString();
sink(out); // $hasTaintFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[0];MapKey of Argument[-1];value"
AbstractMapEntry out = null;
Object in = source();
out = new MyAbstractMapEntry(in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntry;true;AbstractMapEntry;;;Argument[1];MapValue of Argument[-1];value"
AbstractMapEntry out = null;
Object in = source();
out = new MyAbstractMapEntry(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapKey of Argument[0];MapKey of Argument[-1];value"
AbstractMapEntryDecorator out = null;
Map.Entry<String,String> in = newMAMEWithMapKey(source());
out = new MyAbstractMapEntryDecorator(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;AbstractMapEntryDecorator;;;MapValue of Argument[0];MapValue of Argument[-1];value"
AbstractMapEntryDecorator out = null;
Map.Entry<String,String> in = newMAMEWithMapValue(source());
out = new MyAbstractMapEntryDecorator(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value"
Map.Entry<String,String> out = null;
MyAbstractMapEntryDecorator in = newMAMEDWithMapKey(source());
out = in.myGetMapEntry();
sink(getMapKeyFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;getMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value"
Map.Entry<String,String> out = null;
MyAbstractMapEntryDecorator in = newMAMEDWithMapValue(source());
out = in.myGetMapEntry();
sink(getMapValueFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapKey of Argument[-1];ReturnValue;taint"
String out = null;
AbstractMapEntryDecorator in = newMAMEDWithMapKey(source());
out = in.toString();
sink(out); // $hasTaintFlow
}
{
// "org.apache.commons.collections4.keyvalue;AbstractMapEntryDecorator;true;toString;;;MapValue of Argument[-1];ReturnValue;taint"
String out = null;
AbstractMapEntryDecorator in = newMAMEDWithMapValue(source());
out = in.toString();
sink(out); // $hasTaintFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value"
DefaultKeyValue out = null;
Map.Entry<String,String> in = newMAMEWithMapKey(source());
out = new DefaultKeyValue(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value"
DefaultKeyValue out = null;
Map.Entry<String,String> in = newMAMEWithMapValue(source());
out = new DefaultKeyValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value"
DefaultKeyValue out = null;
KeyValue in = newMAKVWithMapKey(source());
out = new DefaultKeyValue(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value"
DefaultKeyValue out = null;
KeyValue in = newMAKVWithMapValue(source());
out = new DefaultKeyValue(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[0];MapKey of Argument[-1];value"
DefaultKeyValue out = null;
Object in = source();
out = new DefaultKeyValue(in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;DefaultKeyValue;(Object,Object);;Argument[1];MapValue of Argument[-1];value"
DefaultKeyValue out = null;
Object in = source();
out = new DefaultKeyValue(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapKey of Argument[-1];MapKey of ReturnValue;value"
Map.Entry<String,String> out = null;
DefaultKeyValue in = newDKVWithMapKey(source());
out = in.toMapEntry();
sink(getMapKeyFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultKeyValue;true;toMapEntry;;;MapValue of Argument[-1];MapValue of ReturnValue;value"
Map.Entry<String,String> out = null;
DefaultKeyValue in = newDKVWithMapValue(source());
out = in.toMapEntry();
sink(getMapValueFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value"
DefaultMapEntry out = null;
Map.Entry<String,String> in = newMAMEWithMapKey(source());
out = new DefaultMapEntry(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value"
DefaultMapEntry out = null;
Map.Entry<String,String> in = newMAMEWithMapValue(source());
out = new DefaultMapEntry(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value"
DefaultMapEntry out = null;
KeyValue in = newMAKVWithMapKey(source());
out = new DefaultMapEntry(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value"
DefaultMapEntry out = null;
KeyValue in = newMAKVWithMapValue(source());
out = new DefaultMapEntry(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value"
DefaultMapEntry out = null;
Object in = source();
out = new DefaultMapEntry(in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;DefaultMapEntry;true;DefaultMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value"
DefaultMapEntry out = null;
Object in = source();
out = new DefaultMapEntry(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;TiedMapEntry;true;TiedMapEntry;;;Argument[1];MapKey of Argument[-1];value"
TiedMapEntry out = null;
Object in = source();
out = new TiedMapEntry(null, in);
sink(getMapKeyFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;TiedMapEntry;true;TiedMapEntry;;;MapValue of Argument[0];MapValue of Argument[-1];value"
TiedMapEntry out = null;
Map in = newTreeMapWithMapValue(source());
out = new TiedMapEntry(in, null);
sink(getMapValueFromEntry(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapKey of Argument[0];MapKey of Argument[-1];value"
UnmodifiableMapEntry out = null;
Map.Entry<String,String> in = newMAMEWithMapKey(source());
out = new UnmodifiableMapEntry(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Entry);;MapValue of Argument[0];MapValue of Argument[-1];value"
UnmodifiableMapEntry out = null;
Map.Entry<String,String> in = newMAMEWithMapValue(source());
out = new UnmodifiableMapEntry(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapKey of Argument[0];MapKey of Argument[-1];value"
UnmodifiableMapEntry out = null;
KeyValue in = newMAKVWithMapKey(source());
out = new UnmodifiableMapEntry(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(KeyValue);;MapValue of Argument[0];MapValue of Argument[-1];value"
UnmodifiableMapEntry out = null;
KeyValue in = newMAKVWithMapValue(source());
out = new UnmodifiableMapEntry(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[0];MapKey of Argument[-1];value"
UnmodifiableMapEntry out = null;
Object in = source();
out = new UnmodifiableMapEntry(in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4.keyvalue;UnmodifiableMapEntry;true;UnmodifiableMapEntry;(Object,Object);;Argument[1];MapValue of Argument[-1];value"
UnmodifiableMapEntry out = null;
Object in = source();
out = new UnmodifiableMapEntry(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value"
Object out = null;
TiedMapEntry in = newTMEWithMapKey(source());
out = in.getKey();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value"
Object out = null;
KeyValue in = newMAKVWithMapKey(source());
out = in.getKey();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value"
Object out = null;
AbstractMapEntryDecorator in = newMAMEDWithMapKey(source());
out = in.getKey();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getKey;;;MapKey of Argument[-1];ReturnValue;value"
Object out = null;
AbstractKeyValue in = newMAKVWithMapKey(source());
out = in.getKey();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
TiedMapEntry in = newTMEWithMapValue(source());
out = in.getValue();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
KeyValue in = newMAKVWithMapValue(source());
out = in.getValue();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
AbstractMapEntryDecorator in = newMAMEDWithMapValue(source());
out = in.getValue();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;KeyValue;true;getValue;;;MapValue of Argument[-1];ReturnValue;value"
Object out = null;
AbstractKeyValue in = newMAKVWithMapValue(source());
out = in.getValue();
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;emptyIfNull;;;Argument[0];ReturnValue;value"
Map out = null;
Map in = (Map)source();
out = MapUtils.emptyIfNull(in);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;fixedSizeMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.fixedSizeMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;fixedSizeMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.fixedSizeMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;fixedSizeSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.fixedSizeSortedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;fixedSizeSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.fixedSizeSortedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getMap;;;Argument[2];ReturnValue;value"
Map out = null;
Map in = (Map)source();
out = MapUtils.getMap(null, null, in);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getMap(in, null, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getMap;;;MapValue of Argument[0];ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getMap(in, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getObject;;;Argument[2];ReturnValue;value"
Object out = null;
Object in = source();
out = MapUtils.getObject(null, null, in);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getObject;;;MapValue of Argument[0];ReturnValue;value"
Object out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getObject(in, null, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getObject;;;MapValue of Argument[0];ReturnValue;value"
Object out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getObject(in, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getString;;;Argument[2];ReturnValue;value"
String out = null;
String in = (String)source();
out = MapUtils.getString(null, null, in);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getString;;;MapValue of Argument[0];ReturnValue;value"
String out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getString(in, null, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;getString;;;MapValue of Argument[0];ReturnValue;value"
String out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.getString(in, null);
sink(out); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;invertMap;;;MapKey of Argument[0];MapValue of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.invertMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;invertMap;;;MapValue of Argument[0];MapKey of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.invertMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;iterableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.iterableMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;iterableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.iterableMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;iterableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableSortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.iterableSortedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;iterableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableSortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.iterableSortedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.lazyMap(in, (Transformer)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.lazyMap(in, (Factory)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.lazyMap(in, (Transformer)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazyMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.lazyMap(in, (Factory)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.lazySortedMap(in, (Transformer)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.lazySortedMap(in, (Factory)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.lazySortedMap(in, (Transformer)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;lazySortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.lazySortedMap(in, (Factory)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.multiValueMap(in, (Factory)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.multiValueMap(in, (Class)null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.multiValueMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.multiValueMap(in, (Factory)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.multiValueMap(in, (Class)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;multiValueMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
MultiValueMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.multiValueMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;orderedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
OrderedMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.orderedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;orderedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
OrderedMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.orderedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;populateMap;(Map,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value"
Map out = null;
Iterable in = newWithElement((String)source());
MapUtils.populateMap(out, in, (Transformer)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// Note it is tricky to get this to compile - the compiler thinks it is ambiguous
// which overload it should choose unless you put the generic types in correctly
// "org.apache.commons.collections4;MapUtils;true;populateMap;(MultiMap,Iterable,Transformer);;Element of Argument[1];MapValue of Argument[0];value"
MultiMap<Integer, String> out = null;
Iterable<String> in = newWithElement((String)source());
MapUtils.populateMap(out, in, (Transformer<String, Integer>)null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;predicatedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.predicatedMap(in, null, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;predicatedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.predicatedMap(in, null, null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;predicatedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.predicatedSortedMap(in, null, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;predicatedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.predicatedSortedMap(in, null, null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(source());
MapUtils.putAll(out, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapKey of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(source());
out = MapUtils.putAll(null, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(source());
MapUtils.putAll(out, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of Argument[1];MapValue of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(source());
out = MapUtils.putAll(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(newWithArrayElement(source()));
MapUtils.putAll(out, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapKey of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(newWithArrayElement(source()));
out = MapUtils.putAll(null, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(newWithArrayElement(source()));
MapUtils.putAll(out, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;ArrayElement of ArrayElement of Argument[1];MapValue of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(newWithArrayElement(source()));
out = MapUtils.putAll(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(newMAKVWithMapKey(source()));
MapUtils.putAll(out, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;MapKey of ArrayElement of Argument[1];MapKey of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(newMAKVWithMapKey(source()));
out = MapUtils.putAll(null, in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of Argument[0];value"
Map out = null;
Object[] in = newWithArrayElement(newMAKVWithMapValue(source()));
MapUtils.putAll(out, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;putAll;;;MapValue of ArrayElement of Argument[1];MapValue of ReturnValue;value"
Map out = null;
Object[] in = newWithArrayElement(newMAKVWithMapValue(source()));
out = MapUtils.putAll(null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;safeAddToMap;;;Argument[1];MapKey of Argument[0];value"
Map out = null;
Object in = source();
MapUtils.safeAddToMap(out, in, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;safeAddToMap;;;Argument[2];MapValue of Argument[0];value"
Map out = null;
Object in = source();
MapUtils.safeAddToMap(out, null, in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;synchronizedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.synchronizedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;synchronizedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.synchronizedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;synchronizedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.synchronizedSortedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;synchronizedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.synchronizedSortedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;toMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
Map out = null;
ResourceBundle in = newRBWithMapKey(source());
out = MapUtils.toMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;toMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
Map out = null;
ResourceBundle in = newRBWithMapValue(source());
out = MapUtils.toMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;transformedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.transformedMap(in, null, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;transformedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
IterableMap out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.transformedMap(in, null, null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;transformedSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.transformedSortedMap(in, null, null);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;transformedSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.transformedSortedMap(in, null, null);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;unmodifiableMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapKey(source());
out = MapUtils.unmodifiableMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;unmodifiableMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
Map out = null;
Map in = newTreeMapWithMapValue(source());
out = MapUtils.unmodifiableMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;unmodifiableSortedMap;;;MapKey of Argument[0];MapKey of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapKey(source());
out = MapUtils.unmodifiableSortedMap(in);
sink(getMapKey(out)); // $hasValueFlow
}
{
// "org.apache.commons.collections4;MapUtils;true;unmodifiableSortedMap;;;MapValue of Argument[0];MapValue of ReturnValue;value"
SortedMap out = null;
SortedMap in = newTreeMapWithMapValue(source());
out = MapUtils.unmodifiableSortedMap(in);
sink(getMapValue(out)); // $hasValueFlow
}
}
}

View File

@@ -0,0 +1 @@
//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-collections4-4.4

View File

@@ -0,0 +1,68 @@
import java
import semmle.code.java.dataflow.DataFlow
import semmle.code.java.dataflow.ExternalFlow
import semmle.code.java.dataflow.TaintTracking
import TestUtilities.InlineExpectationsTest
class SummaryModelTest extends SummaryModelCsv {
override predicate row(string row) {
row =
[
//"package;type;overrides;name;signature;ext;inputspec;outputspec;kind",
"generatedtest;Test;false;newRBWithMapValue;;;Argument[0];MapValue of ReturnValue;value",
"generatedtest;Test;false;newRBWithMapKey;;;Argument[0];MapKey of ReturnValue;value"
]
}
}
class ValueFlowConf extends DataFlow::Configuration {
ValueFlowConf() { this = "qltest:valueFlowConf" }
override predicate isSource(DataFlow::Node n) {
n.asExpr().(MethodAccess).getMethod().hasName("source")
}
override predicate isSink(DataFlow::Node n) {
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
}
override int fieldFlowBranchLimit() { result = 1000 }
}
class TaintFlowConf extends TaintTracking::Configuration {
TaintFlowConf() { this = "qltest:taintFlowConf" }
override predicate isSource(DataFlow::Node n) {
n.asExpr().(MethodAccess).getMethod().hasName("source")
}
override predicate isSink(DataFlow::Node n) {
n.asExpr().(Argument).getCall().getCallee().hasName("sink")
}
override int fieldFlowBranchLimit() { result = 1000 }
}
class HasFlowTest extends InlineExpectationsTest {
HasFlowTest() { this = "HasFlowTest" }
override string getARelevantTag() { result = ["hasValueFlow", "hasTaintFlow"] }
override predicate hasActualResult(Location location, string element, string tag, string value) {
tag = "hasValueFlow" and
exists(DataFlow::Node src, DataFlow::Node sink, ValueFlowConf conf | conf.hasFlow(src, sink) |
sink.getLocation() = location and
element = sink.toString() and
value = ""
)
or
tag = "hasTaintFlow" and
exists(DataFlow::Node src, DataFlow::Node sink, TaintFlowConf conf |
conf.hasFlow(src, sink) and not any(ValueFlowConf c).hasFlow(src, sink)
|
sink.getLocation() = location and
element = sink.toString() and
value = ""
)
}
}

View File

@@ -0,0 +1,9 @@
// Generated automatically from org.apache.commons.collections4.Factory for testing purposes
package org.apache.commons.collections4;
public interface Factory<T>
{
T create();
}

View File

@@ -0,0 +1,20 @@
// Generated automatically from org.apache.commons.collections4.Get for testing purposes
package org.apache.commons.collections4;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
public interface Get<K, V>
{
Collection<V> values();
Set<K> keySet();
Set<Map.Entry<K, V>> entrySet();
V get(Object p0);
V remove(Object p0);
boolean containsKey(Object p0);
boolean containsValue(Object p0);
boolean isEmpty();
int size();
}

View File

@@ -0,0 +1,11 @@
// Generated automatically from org.apache.commons.collections4.IterableGet for testing purposes
package org.apache.commons.collections4;
import org.apache.commons.collections4.Get;
import org.apache.commons.collections4.MapIterator;
public interface IterableGet<K, V> extends Get<K, V>
{
MapIterator<K, V> mapIterator();
}

View File

@@ -0,0 +1,11 @@
// Generated automatically from org.apache.commons.collections4.IterableMap for testing purposes
package org.apache.commons.collections4;
import java.util.Map;
import org.apache.commons.collections4.IterableGet;
import org.apache.commons.collections4.Put;
public interface IterableMap<K, V> extends IterableGet<K, V>, Map<K, V>, Put<K, V>
{
}

View File

@@ -0,0 +1,10 @@
// Generated automatically from org.apache.commons.collections4.IterableSortedMap for testing purposes
package org.apache.commons.collections4;
import java.util.SortedMap;
import org.apache.commons.collections4.OrderedMap;
public interface IterableSortedMap<K, V> extends OrderedMap<K, V>, SortedMap<K, V>
{
}

View File

@@ -0,0 +1,10 @@
// Generated automatically from org.apache.commons.collections4.KeyValue for testing purposes
package org.apache.commons.collections4;
public interface KeyValue<K, V>
{
K getKey();
V getValue();
}

View File

@@ -0,0 +1,15 @@
// Generated automatically from org.apache.commons.collections4.MapIterator for testing purposes
package org.apache.commons.collections4;
import java.util.Iterator;
public interface MapIterator<K, V> extends Iterator<K>
{
K getKey();
K next();
V getValue();
V setValue(V p0);
boolean hasNext();
void remove();
}

View File

@@ -0,0 +1,95 @@
// Generated automatically from org.apache.commons.collections4.MapUtils for testing purposes
package org.apache.commons.collections4;
import java.io.PrintStream;
import java.util.Collection;
import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.SortedMap;
import org.apache.commons.collections4.Factory;
import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.IterableSortedMap;
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.OrderedMap;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.map.MultiValueMap;
public class MapUtils
{
protected MapUtils() {}
public static <K, V, C> MultiValueMap<K, V> multiValueMap(Map<K, C> p0, Class<C> p1){ return null; }
public static <K, V, C> MultiValueMap<K, V> multiValueMap(Map<K, C> p0, Factory<C> p1){ return null; }
public static <K, V, E> void populateMap(Map<K, V> p0, Iterable<? extends E> p1, Transformer<E, K> p2, Transformer<E, V> p3){}
public static <K, V, E> void populateMap(MultiMap<K, V> p0, Iterable<? extends E> p1, Transformer<E, K> p2, Transformer<E, V> p3){}
public static <K, V> IterableMap<K, V> fixedSizeMap(Map<K, V> p0){ return null; }
public static <K, V> IterableMap<K, V> iterableMap(Map<K, V> p0){ return null; }
public static <K, V> IterableMap<K, V> lazyMap(Map<K, V> p0, Factory<? extends V> p1){ return null; }
public static <K, V> IterableMap<K, V> lazyMap(Map<K, V> p0, Transformer<? super K, ? extends V> p1){ return null; }
public static <K, V> IterableMap<K, V> predicatedMap(Map<K, V> p0, Predicate<? super K> p1, Predicate<? super V> p2){ return null; }
public static <K, V> IterableMap<K, V> transformedMap(Map<K, V> p0, Transformer<? super K, ? extends K> p1, Transformer<? super V, ? extends V> p2){ return null; }
public static <K, V> IterableSortedMap<K, V> iterableSortedMap(SortedMap<K, V> p0){ return null; }
public static <K, V> Map<K, V> emptyIfNull(Map<K, V> p0){ return null; }
public static <K, V> Map<K, V> putAll(Map<K, V> p0, Object[] p1){ return null; }
public static <K, V> Map<K, V> synchronizedMap(Map<K, V> p0){ return null; }
public static <K, V> Map<K, V> unmodifiableMap(Map<? extends K, ? extends V> p0){ return null; }
public static <K, V> Map<V, K> invertMap(Map<K, V> p0){ return null; }
public static <K, V> MultiValueMap<K, V> multiValueMap(Map<K, ? super Collection<V>> p0){ return null; }
public static <K, V> OrderedMap<K, V> orderedMap(Map<K, V> p0){ return null; }
public static <K, V> Properties toProperties(Map<K, V> p0){ return null; }
public static <K, V> SortedMap<K, V> fixedSizeSortedMap(SortedMap<K, V> p0){ return null; }
public static <K, V> SortedMap<K, V> lazySortedMap(SortedMap<K, V> p0, Factory<? extends V> p1){ return null; }
public static <K, V> SortedMap<K, V> lazySortedMap(SortedMap<K, V> p0, Transformer<? super K, ? extends V> p1){ return null; }
public static <K, V> SortedMap<K, V> predicatedSortedMap(SortedMap<K, V> p0, Predicate<? super K> p1, Predicate<? super V> p2){ return null; }
public static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, V> p0){ return null; }
public static <K, V> SortedMap<K, V> transformedSortedMap(SortedMap<K, V> p0, Transformer<? super K, ? extends K> p1, Transformer<? super V, ? extends V> p2){ return null; }
public static <K, V> SortedMap<K, V> unmodifiableSortedMap(SortedMap<K, ? extends V> p0){ return null; }
public static <K, V> V getObject(Map<? super K, V> p0, K p1){ return null; }
public static <K, V> V getObject(Map<K, V> p0, K p1, V p2){ return null; }
public static <K, V> void populateMap(Map<K, V> p0, Iterable<? extends V> p1, Transformer<V, K> p2){}
public static <K, V> void populateMap(MultiMap<K, V> p0, Iterable<? extends V> p1, Transformer<V, K> p2){}
public static <K> Boolean getBoolean(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Boolean getBoolean(Map<? super K, ?> p0, K p1, Boolean p2){ return null; }
public static <K> Byte getByte(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Byte getByte(Map<? super K, ?> p0, K p1, Byte p2){ return null; }
public static <K> Double getDouble(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Double getDouble(Map<? super K, ?> p0, K p1, Double p2){ return null; }
public static <K> Float getFloat(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Float getFloat(Map<? super K, ?> p0, K p1, Float p2){ return null; }
public static <K> Integer getInteger(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Integer getInteger(Map<? super K, ?> p0, K p1, Integer p2){ return null; }
public static <K> Long getLong(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Long getLong(Map<? super K, ?> p0, K p1, Long p2){ return null; }
public static <K> Map<?, ?> getMap(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Map<?, ?> getMap(Map<? super K, ?> p0, K p1, Map<?, ?> p2){ return null; }
public static <K> Number getNumber(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Number getNumber(Map<? super K, ?> p0, K p1, Number p2){ return null; }
public static <K> Short getShort(Map<? super K, ?> p0, K p1){ return null; }
public static <K> Short getShort(Map<? super K, ?> p0, K p1, Short p2){ return null; }
public static <K> String getString(Map<? super K, ?> p0, K p1){ return null; }
public static <K> String getString(Map<? super K, ?> p0, K p1, String p2){ return null; }
public static <K> boolean getBooleanValue(Map<? super K, ?> p0, K p1){ return false; }
public static <K> boolean getBooleanValue(Map<? super K, ?> p0, K p1, boolean p2){ return false; }
public static <K> byte getByteValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> byte getByteValue(Map<? super K, ?> p0, K p1, byte p2){ return 0; }
public static <K> double getDoubleValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> double getDoubleValue(Map<? super K, ?> p0, K p1, double p2){ return 0; }
public static <K> float getFloatValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> float getFloatValue(Map<? super K, ?> p0, K p1, float p2){ return 0; }
public static <K> int getIntValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> int getIntValue(Map<? super K, ?> p0, K p1, int p2){ return 0; }
public static <K> long getLongValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> long getLongValue(Map<? super K, ?> p0, K p1, long p2){ return 0; }
public static <K> short getShortValue(Map<? super K, ?> p0, K p1){ return 0; }
public static <K> short getShortValue(Map<? super K, ?> p0, K p1, short p2){ return 0; }
public static <K> void safeAddToMap(Map<? super K, Object> p0, K p1, Object p2){}
public static Map<String, Object> toMap(ResourceBundle p0){ return null; }
public static SortedMap EMPTY_SORTED_MAP = null;
public static boolean isEmpty(Map<?, ?> p0){ return false; }
public static boolean isNotEmpty(Map<?, ?> p0){ return false; }
public static int size(Map<?, ?> p0){ return 0; }
public static void debugPrint(PrintStream p0, Object p1, Map<?, ?> p2){}
public static void verbosePrint(PrintStream p0, Object p1, Map<?, ?> p2){}
}

View File

@@ -0,0 +1,17 @@
// Generated automatically from org.apache.commons.collections4.MultiMap for testing purposes
package org.apache.commons.collections4;
import java.util.Collection;
import org.apache.commons.collections4.IterableMap;
public interface MultiMap<K, V> extends IterableMap<K, Object>
{
Collection<Object> values();
Object get(Object p0);
Object put(K p0, Object p1);
Object remove(Object p0);
boolean containsValue(Object p0);
boolean removeMapping(K p0, V p1);
int size();
}

View File

@@ -0,0 +1,11 @@
// Generated automatically from org.apache.commons.collections4.OrderedIterator for testing purposes
package org.apache.commons.collections4;
import java.util.Iterator;
public interface OrderedIterator<E> extends Iterator<E>
{
E previous();
boolean hasPrevious();
}

View File

@@ -0,0 +1,15 @@
// Generated automatically from org.apache.commons.collections4.OrderedMap for testing purposes
package org.apache.commons.collections4;
import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.OrderedMapIterator;
public interface OrderedMap<K, V> extends IterableMap<K, V>
{
K firstKey();
K lastKey();
K nextKey(K p0);
K previousKey(K p0);
OrderedMapIterator<K, V> mapIterator();
}

View File

@@ -0,0 +1,12 @@
// Generated automatically from org.apache.commons.collections4.OrderedMapIterator for testing purposes
package org.apache.commons.collections4;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.OrderedIterator;
public interface OrderedMapIterator<K, V> extends MapIterator<K, V>, OrderedIterator<K>
{
K previous();
boolean hasPrevious();
}

View File

@@ -0,0 +1,9 @@
// Generated automatically from org.apache.commons.collections4.Predicate for testing purposes
package org.apache.commons.collections4;
public interface Predicate<T>
{
boolean evaluate(T p0);
}

View File

@@ -0,0 +1,12 @@
// Generated automatically from org.apache.commons.collections4.Put for testing purposes
package org.apache.commons.collections4;
import java.util.Map;
public interface Put<K, V>
{
Object put(K p0, V p1);
void clear();
void putAll(Map<? extends K, ? extends V> p0);
}

View File

@@ -0,0 +1,9 @@
// Generated automatically from org.apache.commons.collections4.Transformer for testing purposes
package org.apache.commons.collections4;
public interface Transformer<I, O>
{
O transform(I p0);
}

View File

@@ -0,0 +1,8 @@
// Generated automatically from org.apache.commons.collections4.Unmodifiable for testing purposes
package org.apache.commons.collections4;
public interface Unmodifiable
{
}

View File

@@ -0,0 +1,16 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.AbstractKeyValue for testing purposes
package org.apache.commons.collections4.keyvalue;
import org.apache.commons.collections4.KeyValue;
abstract public class AbstractKeyValue<K, V> implements KeyValue<K, V>
{
protected AbstractKeyValue() {}
protected AbstractKeyValue(K p0, V p1){}
protected K setKey(K p0){ return null; }
protected V setValue(V p0){ return null; }
public K getKey(){ return null; }
public String toString(){ return null; }
public V getValue(){ return null; }
}

View File

@@ -0,0 +1,15 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.AbstractMapEntry for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.util.Map;
import org.apache.commons.collections4.keyvalue.AbstractKeyValue;
abstract public class AbstractMapEntry<K, V> extends AbstractKeyValue<K, V> implements Map.Entry<K, V>
{
protected AbstractMapEntry() {}
protected AbstractMapEntry(K p0, V p1){}
public V setValue(V p0){ return null; }
public boolean equals(Object p0){ return false; }
public int hashCode(){ return 0; }
}

View File

@@ -0,0 +1,19 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.AbstractMapEntryDecorator for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.util.Map;
import org.apache.commons.collections4.KeyValue;
abstract public class AbstractMapEntryDecorator<K, V> implements KeyValue<K, V>, Map.Entry<K, V>
{
protected AbstractMapEntryDecorator() {}
protected Map.Entry<K, V> getMapEntry(){ return null; }
public AbstractMapEntryDecorator(Map.Entry<K, V> p0){}
public K getKey(){ return null; }
public String toString(){ return null; }
public V getValue(){ return null; }
public V setValue(V p0){ return null; }
public boolean equals(Object p0){ return false; }
public int hashCode(){ return 0; }
}

View File

@@ -0,0 +1,20 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.DefaultKeyValue for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.util.Map;
import org.apache.commons.collections4.KeyValue;
import org.apache.commons.collections4.keyvalue.AbstractKeyValue;
public class DefaultKeyValue<K, V> extends AbstractKeyValue<K, V>
{
public DefaultKeyValue(){}
public DefaultKeyValue(K p0, V p1){}
public DefaultKeyValue(KeyValue<? extends K, ? extends V> p0){}
public DefaultKeyValue(Map.Entry<? extends K, ? extends V> p0){}
public K setKey(K p0){ return null; }
public Map.Entry<K, V> toMapEntry(){ return null; }
public V setValue(V p0){ return null; }
public boolean equals(Object p0){ return false; }
public int hashCode(){ return 0; }
}

View File

@@ -0,0 +1,17 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.DefaultMapEntry for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.util.Map;
import org.apache.commons.collections4.KeyValue;
import org.apache.commons.collections4.keyvalue.AbstractMapEntry;
public class DefaultMapEntry<K, V> extends AbstractMapEntry<K, V>
{
protected DefaultMapEntry() {}
public DefaultMapEntry(K p0, V p1){}
public DefaultMapEntry(KeyValue<? extends K, ? extends V> p0){}
public DefaultMapEntry(Map.Entry<? extends K, ? extends V> p0){}
public V getValue(){ return null; }
public K getKey(){ return null; }
}

View File

@@ -0,0 +1,19 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.TiedMapEntry for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.io.Serializable;
import java.util.Map;
import org.apache.commons.collections4.KeyValue;
public class TiedMapEntry<K, V> implements KeyValue<K, V>, Map.Entry<K, V>, Serializable
{
protected TiedMapEntry() {}
public K getKey(){ return null; }
public String toString(){ return null; }
public TiedMapEntry(Map<K, V> p0, K p1){}
public V getValue(){ return null; }
public V setValue(V p0){ return null; }
public boolean equals(Object p0){ return false; }
public int hashCode(){ return 0; }
}

View File

@@ -0,0 +1,19 @@
// Generated automatically from org.apache.commons.collections4.keyvalue.UnmodifiableMapEntry for testing purposes
package org.apache.commons.collections4.keyvalue;
import java.util.Map;
import org.apache.commons.collections4.KeyValue;
import org.apache.commons.collections4.Unmodifiable;
import org.apache.commons.collections4.keyvalue.AbstractMapEntry;
public class UnmodifiableMapEntry<K, V> extends AbstractMapEntry<K, V> implements Unmodifiable
{
protected UnmodifiableMapEntry() {}
public UnmodifiableMapEntry(K p0, V p1){}
public UnmodifiableMapEntry(KeyValue<? extends K, ? extends V> p0){}
public UnmodifiableMapEntry(Map.Entry<? extends K, ? extends V> p0){}
public V setValue(V p0){ return null; }
public V getValue(){ return null; }
public K getKey(){ return null; }
}

View File

@@ -0,0 +1,12 @@
// Generated automatically from org.apache.commons.collections4.map.AbstractIterableMap for testing purposes
package org.apache.commons.collections4.map;
import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.MapIterator;
abstract public class AbstractIterableMap<K, V> implements IterableMap<K, V>
{
public AbstractIterableMap(){}
public MapIterator<K, V> mapIterator(){ return null; }
}

View File

@@ -0,0 +1,31 @@
// Generated automatically from org.apache.commons.collections4.map.AbstractMapDecorator for testing purposes
package org.apache.commons.collections4.map;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections4.map.AbstractIterableMap;
abstract public class AbstractMapDecorator<K, V> extends AbstractIterableMap<K, V>
{
Map<K, V> map = null;
protected AbstractMapDecorator(){}
protected AbstractMapDecorator(Map<K, V> p0){}
protected Map<K, V> decorated(){ return null; }
public Collection<V> values(){ return null; }
public Set<K> keySet(){ return null; }
public Set<Map.Entry<K, V>> entrySet(){ return null; }
public String toString(){ return null; }
public V get(Object p0){ return null; }
public V put(K p0, V p1){ return null; }
public V remove(Object p0){ return null; }
public boolean containsKey(Object p0){ return false; }
public boolean containsValue(Object p0){ return false; }
public boolean equals(Object p0){ return false; }
public boolean isEmpty(){ return false; }
public int hashCode(){ return 0; }
public int size(){ return 0; }
public void clear(){}
public void putAll(Map<? extends K, ? extends V> p0){}
}

View File

@@ -0,0 +1,40 @@
// Generated automatically from org.apache.commons.collections4.map.MultiValueMap for testing purposes
package org.apache.commons.collections4.map;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections4.Factory;
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.AbstractMapDecorator;
public class MultiValueMap<K, V> extends AbstractMapDecorator<K, Object> implements MultiMap<K, V>, Serializable
{
protected Collection<V> createCollection(int p0){ return null; }
protected <C> MultiValueMap(Map<K, ? super C> p0, Factory<C> p1){}
public Collection<Object> values(){ return null; }
public Collection<V> getCollection(Object p0){ return null; }
public Iterator<Map.Entry<K, V>> iterator(){ return null; }
public Iterator<V> iterator(Object p0){ return null; }
public MultiValueMap(){}
public Object put(K p0, Object p1){ return null; }
public Set<Map.Entry<K, Object>> entrySet(){ return null; }
public boolean containsValue(Object p0){ return false; }
public boolean containsValue(Object p0, Object p1){ return false; }
public boolean putAll(K p0, Collection<V> p1){ return false; }
public boolean removeMapping(Object p0, Object p1){ return false; }
public int size(Object p0){ return 0; }
public int totalSize(){ return 0; }
public static <K, V, C> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> p0, Class<C> p1){ return null; }
public static <K, V, C> MultiValueMap<K, V> multiValueMap(Map<K, ? super C> p0, Factory<C> p1){ return null; }
public static <K, V> MultiValueMap<K, V> multiValueMap(Map<K, ? super Collection<V>> p0){ return null; }
public void clear(){}
public void putAll(Map<? extends K, ?> p0){}
public int size(){ return 0; }
public Object remove(Object key){ return null; }
public Object get(Object key){ return null; }
public boolean isEmpty(){ return false; }
}