[armedbear-devel] JSR-223: Returning immutable lists in ScriptEngineFactory

Clemens Blamauer clemens.blamauer at gmail.com
Sun Sep 20 12:50:00 UTC 2009


Hi everyone,

I was looking through the JSR-223 code in org.armedbear.lisp.scripting  
as I noticed that AbclScriptEngineFactory is not fully compliant to  
JSR-223 [1] (p. 101-102 in the Final Draft Specification, v1.0).

For the methods:

- java.util.List<java.lang.String> getExtensions()
- java.util.List<java.lang.String> getMimeTypes()
- java.util.List<java.lang.String> getNames()

_immutable_ Lists should be returned.

Please find a remedying patch below.

Cheerz,
Clemens

[1] http://jcp.org/en/jsr/detail?id=223

----

Index: AbclScriptEngineFactory.java
===================================================================
--- AbclScriptEngineFactory.java	(revision 12157)
+++ AbclScriptEngineFactory.java	(working copy)
@@ -21,6 +21,7 @@
package org.armedbear.lisp.scripting;

import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;

import javax.script.ScriptEngine;
@@ -44,7 +45,7 @@
	public List<String> getExtensions() {
		List<String> extensions = new ArrayList<String>(1);
		extensions.add("lisp");
-		return extensions;
+		return Collections.unmodifiableList(extensions);
	}

	@Override
@@ -89,7 +90,7 @@

	@Override
	public List<String> getMimeTypes() {
-		return new ArrayList<String>();
+		return Collections.unmodifiableList(new ArrayList<String>());
	}

	@Override
@@ -99,7 +100,7 @@
		names.add("cl");
		names.add("Lisp");
		names.add("Common Lisp");
-		return names;
+		return Collections.unmodifiableList(names);
	}

	@Override
--

# Trust in code:
# lynx http://lxr.linux.no/linux+v2.6.23.14/arch/i386/kernel/cpu/common.c#L677





More information about the armedbear-devel mailing list