You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2016/12/03 16:56:04 UTC
[10/50] tomee git commit: TOMEE-1790, allow primitive arrays
TOMEE-1790, allow primitive arrays
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/72927b15
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/72927b15
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/72927b15
Branch: refs/heads/tomee-1.7.x
Commit: 72927b15624c152b6c51675b396cbf57718a2f31
Parents: a1d3760
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Fri May 13 16:03:44 2016 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Fri May 13 16:03:44 2016 +0100
----------------------------------------------------------------------
.../openejb/client/EjbObjectInputStream.java | 8 ++++
.../client/BlacklistClassResolverTest.java | 39 ++++++++++++++++++++
2 files changed, 47 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/72927b15/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
index f20e375..dab036f 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
@@ -22,6 +22,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectStreamClass;
import java.lang.reflect.Proxy;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.regex.Pattern;
/**
* @version $Rev$ $Date$
@@ -98,6 +99,8 @@ public class EjbObjectInputStream extends ObjectInputStream {
private final String[] blacklist;
private final String[] whitelist;
+ public static final Pattern PRIMITIVE_ARRAY = Pattern.compile("^\\[+[BCDFIJSVZ]$");
+
protected BlacklistClassResolver() {
this(toArray(System.getProperty(
"tomee.serialization.class.blacklist",
@@ -111,6 +114,11 @@ public class EjbObjectInputStream extends ObjectInputStream {
}
protected boolean isBlacklisted(final String name) {
+ // allow primitive arrays
+ if (PRIMITIVE_ARRAY.matcher(name).matches()) {
+ return false;
+ }
+
if (name != null && name.startsWith("[L") && name.endsWith(";")) {
return isBlacklisted(name.substring(2, name.length() - 1));
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/72927b15/server/openejb-client/src/test/java/org/apache/openejb/client/BlacklistClassResolverTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/test/java/org/apache/openejb/client/BlacklistClassResolverTest.java b/server/openejb-client/src/test/java/org/apache/openejb/client/BlacklistClassResolverTest.java
new file mode 100644
index 0000000..c56fc2f
--- /dev/null
+++ b/server/openejb-client/src/test/java/org/apache/openejb/client/BlacklistClassResolverTest.java
@@ -0,0 +1,39 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.client;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+public class BlacklistClassResolverTest {
+ @Test
+ public void isBlacklisted() throws Exception {
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[B"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[C"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[D"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[F"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[I"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[J"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[S"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[V"));
+ Assert.assertFalse(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[[Z"));
+ Assert.assertTrue(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("[Ljava.lang.Process;"));
+ Assert.assertTrue(new EjbObjectInputStream.BlacklistClassResolver().isBlacklisted("java.lang.Process;"));
+ }
+
+}