diff --git a/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/generic/ParamsBasedKeyGenerator.java b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/generic/ParamsBasedKeyGenerator.java
new file mode 100644
index 0000000..ac37db6
--- /dev/null
+++ b/framework/autonomicmanager/src/main/java/br/ufrgs/inf/prosoft/adaptivecaching/cachemanager/cacher/key/generic/ParamsBasedKeyGenerator.java
@@ -0,0 +1,31 @@
+package br.ufrgs.inf.prosoft.adaptivecaching.cachemanager.cacher.key.generic;
+
+import java.lang.reflect.Method;
+
+public class ParamsBasedKeyGenerator implements KeyGenerator {
+
+ /**
+ * Generate a key based on the specified parameters.
+ */
+ @Override
+ public Object generate(Object target, Method method, Object... params) {
+ return generateKey(params);
+ }
+
+ /**
+ * Generate a key based on the specified parameters.
+ */
+ public static Object generateKey(Object... params) {
+ if (params.length == 0) {
+ return SimpleKey.EMPTY;
+ }
+ if (params.length == 1) {
+ Object param = params[0];
+ if (param != null && !param.getClass().isArray()) {
+ return param;
+ }
+ }
+ return new SimpleKey(params);
+ }
+
+}