You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2006/08/17 10:50:50 UTC
svn commit: r432183 - in
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/util/EnumSet.java main/java/java/util/MiniEnumSet.java
test/java/tests/api/java/util/EnumSetTest.java
Author: pyang
Date: Thu Aug 17 01:50:49 2006
New Revision: 432183
URL: http://svn.apache.org/viewvc?rev=432183&view=rev
Log:
Patch applied for HARMONY-1211([classlib][luni] new method noneOf(Class<E>) in java.util.EnumSet)
Added:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/MiniEnumSet.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumSetTest.java
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumSet.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumSet.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumSet.java?rev=432183&r1=432182&r2=432183&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumSet.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/EnumSet.java Thu Aug 17 01:50:49 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,12 @@
public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E>
implements Cloneable, java.io.Serializable {
+
+ final Class<E> elementClass;
+
+ EnumSet(Class<E> cls) {
+ elementClass = cls;
+ }
/**
* Creates an empty enum set. The permitted elements are of type Class<E>.
@@ -30,6 +36,12 @@
* if the specified elementType is null
*/
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {
+ if (!elementType.isEnum()) {
+ throw new ClassCastException();
+ }
+ if (elementType.getEnumConstants().length < 64) {
+ return new MiniEnumSet<E>(elementType);
+ }
throw new NotYetImplementedException();
}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/MiniEnumSet.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/MiniEnumSet.java?rev=432183&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/MiniEnumSet.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/MiniEnumSet.java Thu Aug 17 01:50:49 2006
@@ -0,0 +1,40 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed 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 java.util;
+
+import org.apache.harmony.luni.util.NotYetImplementedException;
+
+/**
+ * This is a concrete subclass of EnumSet designed specifically for enum type
+ * with less than or equal to 64 elements.
+ *
+ */
+final class MiniEnumSet<E extends Enum<E>> extends EnumSet<E> {
+
+ MiniEnumSet(Class<E> elementType) {
+ super(elementType);
+ }
+
+ @Override
+ public Iterator<E> iterator() {
+ throw new NotYetImplementedException();
+ }
+
+ @Override
+ public int size() {
+ throw new NotYetImplementedException();
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumSetTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumSetTest.java?rev=432183&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumSetTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/util/EnumSetTest.java Thu Aug 17 01:50:49 2006
@@ -0,0 +1,61 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ *
+ * Licensed 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 tests.api.java.util;
+
+import java.util.EnumSet;
+
+import junit.framework.TestCase;
+
+public class EnumSetTest extends TestCase {
+
+ enum EnumWithAllInnerClass {
+ a {},
+ b {},
+ }
+
+ /**
+ * @tests java.util.EnumSet#noneOf(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public void test_NoneOf_LClass() {
+ try {
+ EnumSet.noneOf((Class) null);
+ fail("Should throw NullPointerException"); //$NON-NLS-1$
+ } catch (NullPointerException e) {
+ // expected
+ }
+
+ try {
+ EnumSet.noneOf(Enum.class);
+ fail("Should throw ClassCastException"); //$NON-NLS-1$
+ } catch (ClassCastException cce) {
+ // expected
+ }
+
+ Class<EnumWithAllInnerClass> c = (Class<EnumWithAllInnerClass>) EnumWithAllInnerClass.a
+ .getClass();
+ try {
+ EnumSet.noneOf(c);
+ fail("Should throw ClassCastException"); //$NON-NLS-1$
+ } catch (ClassCastException e) {
+ // expected
+ }
+
+ EnumSet<EnumWithAllInnerClass> setWithInnerClass = EnumSet
+ .noneOf(EnumWithAllInnerClass.class);
+ assertNotNull(setWithInnerClass);
+ }
+}