IGNITE-141 - Fixed classnames.properties generation
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2ebb2705 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2ebb2705 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2ebb2705 Branch: refs/heads/ignite-329 Commit: 2ebb27052e8d48ae453b540e73d804192fce5ea9 Parents: b8c3d07 Author: Valentin Kulichenko <vkuliche...@gridgain.com> Authored: Thu Mar 5 15:52:43 2015 -0800 Committer: Valentin Kulichenko <vkuliche...@gridgain.com> Committed: Thu Mar 5 15:52:43 2015 -0800 ---------------------------------------------------------------------- modules/core/pom.xml | 39 ++- .../ignite/internal/ClassesGenerator.java | 25 +- .../internal/MarshallerContextAdapter.java | 21 +- .../ignite/internal/classnames-jdk.properties | 325 +++++++++++++++++++ .../ignite/internal/classnames.properties | 308 ------------------ .../optimized/OptimizedClassNamesGenerator.java | 325 ------------------- 6 files changed, 360 insertions(+), 683 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/core/pom.xml ---------------------------------------------------------------------- diff --git a/modules/core/pom.xml b/modules/core/pom.xml index b5c3de0..c047018 100644 --- a/modules/core/pom.xml +++ b/modules/core/pom.xml @@ -170,26 +170,25 @@ </configuration> </plugin> - <!--<plugin>--> - <!--<groupId>org.codehaus.mojo</groupId>--> - <!--<artifactId>exec-maven-plugin</artifactId>--> - <!--<version>1.3.2</version>--> - <!--<executions>--> - <!--<execution>--> - <!--<phase>process-classes</phase>--> - <!--<goals>--> - <!--<goal>java</goal>--> - <!--</goals>--> - <!--<configuration>--> - <!--<mainClass>org.apache.ignite.internal.ClassesGenerator</mainClass>--> - <!--<arguments>--> - <!--<argument>${project.basedir}/target/classes</argument>--> - <!--</arguments>--> - <!--<classpathScope>compile</classpathScope>--> - <!--</configuration>--> - <!--</execution>--> - <!--</executions>--> - <!--</plugin>--> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.3.2</version> + <executions> + <execution> + <phase>process-classes</phase> + <goals> + <goal>java</goal> + </goals> + <configuration> + <mainClass>org.apache.ignite.internal.ClassesGenerator</mainClass> + <arguments> + <argument>${project.basedir}/target/classes</argument> + </arguments> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/core/src/main/java/org/apache/ignite/internal/ClassesGenerator.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/ClassesGenerator.java b/modules/core/src/main/java/org/apache/ignite/internal/ClassesGenerator.java index 641a10f..4d06dea 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/ClassesGenerator.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/ClassesGenerator.java @@ -59,10 +59,7 @@ public class ClassesGenerator { "org.apache.ignite", "org.jdk8.backport", "org.pcollections", - "com.romix.scala", - "java.lang", - "java.util", - "java.net" + "com.romix.scala" }; /** @@ -114,14 +111,8 @@ public class ClassesGenerator { private Collection<Class> generate() throws Exception { System.out.println("Generating classnames.properties..."); - URLClassLoader ldr0 = ldr; - - while (ldr0 != null) { - for (URL url : ldr0.getURLs()) - processUrl(url); - - ldr0 = (URLClassLoader)ldr0.getParent(); - } + for (URL url : ldr.getURLs()) + processUrl(url); if (!errs.isEmpty()) { StringBuilder sb = new StringBuilder("Failed to generate classnames.properties due to errors:\n"); @@ -132,16 +123,6 @@ public class ClassesGenerator { throw new Exception(sb.toString().trim()); } - classes.add(byte[].class); - classes.add(short[].class); - classes.add(int[].class); - classes.add(long[].class); - classes.add(float[].class); - classes.add(double[].class); - classes.add(char[].class); - classes.add(boolean[].class); - classes.add(Object[].class); - return classes; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java index cb4847b..1fc6c5a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java @@ -28,7 +28,10 @@ import java.util.concurrent.*; */ public abstract class MarshallerContextAdapter implements MarshallerContext { /** */ - private static final String CLS_NAMES_FILE = "org/apache/ignite/internal/classnames.properties"; + private static final String[] CLS_NAMES_FILES = { + "org/apache/ignite/internal/classnames.properties", + "org/apache/ignite/internal/classnames-jdk.properties" + }; /** */ protected final ConcurrentMap<Integer, String> clsNameById = new ConcurrentHashMap8<>(); @@ -40,17 +43,19 @@ public abstract class MarshallerContextAdapter implements MarshallerContext { try { ClassLoader ldr = getClass().getClassLoader(); - BufferedReader rdr = new BufferedReader(new InputStreamReader(ldr.getResourceAsStream(CLS_NAMES_FILE))); + for (String file : CLS_NAMES_FILES) { + BufferedReader rdr = new BufferedReader(new InputStreamReader(ldr.getResourceAsStream(file))); - String line; + String line; - while ((line = rdr.readLine()) != null) { - if (line.isEmpty() || line.startsWith("#")) - continue; + while ((line = rdr.readLine()) != null) { + if (line.isEmpty() || line.startsWith("#")) + continue; - String clsName = line.trim(); + String clsName = line.trim(); - clsNameById.put(clsName.hashCode(), clsName); + clsNameById.put(clsName.hashCode(), clsName); + } } } catch (IOException e) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/core/src/main/java/org/apache/ignite/internal/classnames-jdk.properties ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/classnames-jdk.properties b/modules/core/src/main/java/org/apache/ignite/internal/classnames-jdk.properties new file mode 100644 index 0000000..0cae0f7 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/classnames-jdk.properties @@ -0,0 +1,325 @@ +# +# 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. +# + +[B +[C +[D +[F +[I +[J +[S +[Z +[Ljava.lang.Object; +java.lang.AbstractMethodError +java.lang.ArithmeticException +java.lang.ArrayIndexOutOfBoundsException +java.lang.ArrayStoreException +java.lang.AssertionError +java.lang.Boolean +java.lang.BootstrapMethodError +java.lang.Byte +java.lang.Character +java.lang.Character$UnicodeScript +java.lang.Class +java.lang.ClassCastException +java.lang.ClassCircularityError +java.lang.ClassFormatError +java.lang.ClassNotFoundException +java.lang.CloneNotSupportedException +java.lang.Double +java.lang.EnumConstantNotPresentException +java.lang.Error +java.lang.Exception +java.lang.ExceptionInInitializerError +java.lang.Float +java.lang.IllegalAccessError +java.lang.IllegalAccessException +java.lang.IllegalArgumentException +java.lang.IllegalMonitorStateException +java.lang.IllegalStateException +java.lang.IllegalThreadStateException +java.lang.IncompatibleClassChangeError +java.lang.IndexOutOfBoundsException +java.lang.InstantiationError +java.lang.InstantiationException +java.lang.Integer +java.lang.InternalError +java.lang.InterruptedException +java.lang.LinkageError +java.lang.Long +java.lang.NegativeArraySizeException +java.lang.NoClassDefFoundError +java.lang.NoSuchFieldError +java.lang.NoSuchFieldException +java.lang.NoSuchMethodError +java.lang.NoSuchMethodException +java.lang.NullPointerException +java.lang.NumberFormatException +java.lang.OutOfMemoryError +java.lang.ProcessBuilder$Redirect$Type +java.lang.ReflectiveOperationException +java.lang.RuntimeException +java.lang.RuntimePermission +java.lang.SecurityException +java.lang.Short +java.lang.StackOverflowError +java.lang.StackTraceElement +java.lang.String +java.lang.String$CaseInsensitiveComparator +java.lang.StringBuffer +java.lang.StringBuilder +java.lang.StringIndexOutOfBoundsException +java.lang.Thread$State +java.lang.ThreadDeath +java.lang.Throwable +java.lang.TypeNotPresentException +java.lang.UNIXProcess$LaunchMechanism +java.lang.UnknownError +java.lang.UnsatisfiedLinkError +java.lang.UnsupportedClassVersionError +java.lang.UnsupportedOperationException +java.lang.VerifyError +java.lang.annotation.AnnotationFormatError +java.lang.annotation.AnnotationTypeMismatchException +java.lang.annotation.ElementType +java.lang.annotation.IncompleteAnnotationException +java.lang.annotation.RetentionPolicy +java.lang.instrument.IllegalClassFormatException +java.lang.instrument.UnmodifiableClassException +java.lang.invoke.MethodType +java.lang.invoke.WrongMethodTypeException +java.lang.management.ManagementPermission +java.lang.management.MemoryType +java.lang.management.PlatformComponent +java.lang.reflect.GenericSignatureFormatError +java.lang.reflect.InvocationTargetException +java.lang.reflect.MalformedParameterizedTypeException +java.lang.reflect.Proxy +java.lang.reflect.ReflectPermission +java.lang.reflect.UndeclaredThrowableException +java.net.Authenticator$RequestorType +java.net.BindException +java.net.ConnectException +java.net.HttpRetryException +java.net.Inet4Address +java.net.Inet6Address +java.net.InetAddress +java.net.InetAddress$Cache$Type +java.net.InetSocketAddress +java.net.MalformedURLException +java.net.NetPermission +java.net.NoRouteToHostException +java.net.PortUnreachableException +java.net.ProtocolException +java.net.Proxy$Type +java.net.SocketException +java.net.SocketPermission +java.net.SocketPermissionCollection +java.net.SocketTimeoutException +java.net.StandardProtocolFamily +java.net.URI +java.net.URISyntaxException +java.net.URL +java.net.UnknownHostException +java.net.UnknownServiceException +java.util.AbstractMap$SimpleEntry +java.util.AbstractMap$SimpleImmutableEntry +java.util.ArrayDeque +java.util.ArrayList +java.util.Arrays$ArrayList +java.util.BitSet +java.util.Collections$AsLIFOQueue +java.util.Collections$CheckedCollection +java.util.Collections$CheckedList +java.util.Collections$CheckedMap +java.util.Collections$CheckedRandomAccessList +java.util.Collections$CheckedSet +java.util.Collections$CheckedSortedMap +java.util.Collections$CheckedSortedSet +java.util.Collections$CopiesList +java.util.Collections$EmptyList +java.util.Collections$EmptyMap +java.util.Collections$EmptySet +java.util.Collections$ReverseComparator +java.util.Collections$ReverseComparator2 +java.util.Collections$SetFromMap +java.util.Collections$SingletonList +java.util.Collections$SingletonMap +java.util.Collections$SingletonSet +java.util.Collections$SynchronizedCollection +java.util.Collections$SynchronizedList +java.util.Collections$SynchronizedMap +java.util.Collections$SynchronizedRandomAccessList +java.util.Collections$SynchronizedSet +java.util.Collections$SynchronizedSortedMap +java.util.Collections$SynchronizedSortedSet +java.util.Collections$UnmodifiableCollection +java.util.Collections$UnmodifiableList +java.util.Collections$UnmodifiableMap +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet +java.util.Collections$UnmodifiableRandomAccessList +java.util.Collections$UnmodifiableSet +java.util.Collections$UnmodifiableSortedMap +java.util.Collections$UnmodifiableSortedSet +java.util.ConcurrentModificationException +java.util.Currency +java.util.Date +java.util.DuplicateFormatFlagsException +java.util.EmptyStackException +java.util.EnumMap +java.util.EnumSet$SerializationProxy +java.util.EventObject +java.util.FormatFlagsConversionMismatchException +java.util.Formatter$BigDecimalLayoutForm +java.util.FormatterClosedException +java.util.GregorianCalendar +java.util.HashMap +java.util.HashSet +java.util.Hashtable +java.util.IdentityHashMap +java.util.IllegalFormatCodePointException +java.util.IllegalFormatConversionException +java.util.IllegalFormatException +java.util.IllegalFormatFlagsException +java.util.IllegalFormatPrecisionException +java.util.IllegalFormatWidthException +java.util.IllformedLocaleException +java.util.InputMismatchException +java.util.InvalidPropertiesFormatException +java.util.JapaneseImperialCalendar +java.util.JumboEnumSet +java.util.LinkedHashMap +java.util.LinkedHashSet +java.util.LinkedList +java.util.Locale +java.util.Locale$Category +java.util.MissingFormatArgumentException +java.util.MissingFormatWidthException +java.util.MissingResourceException +java.util.NoSuchElementException +java.util.PriorityQueue +java.util.Properties +java.util.PropertyPermission +java.util.PropertyPermissionCollection +java.util.Random +java.util.RegularEnumSet +java.util.ServiceConfigurationError +java.util.SimpleTimeZone +java.util.Stack +java.util.TooManyListenersException +java.util.TreeMap +java.util.TreeMap$AscendingSubMap +java.util.TreeMap$DescendingSubMap +java.util.TreeMap$SubMap +java.util.TreeSet +java.util.UUID +java.util.UnknownFormatConversionException +java.util.UnknownFormatFlagsException +java.util.Vector +java.util.concurrent.ArrayBlockingQueue +java.util.concurrent.BrokenBarrierException +java.util.concurrent.CancellationException +java.util.concurrent.ConcurrentHashMap +java.util.concurrent.ConcurrentHashMap$Segment +java.util.concurrent.ConcurrentHashMap$WriteThroughEntry +java.util.concurrent.ConcurrentLinkedDeque +java.util.concurrent.ConcurrentLinkedQueue +java.util.concurrent.ConcurrentSkipListMap +java.util.concurrent.ConcurrentSkipListMap$SubMap +java.util.concurrent.ConcurrentSkipListSet +java.util.concurrent.CopyOnWriteArrayList +java.util.concurrent.CopyOnWriteArraySet +java.util.concurrent.CountDownLatch$Sync +java.util.concurrent.Exchanger$Node +java.util.concurrent.Exchanger$Slot +java.util.concurrent.ExecutionException +java.util.concurrent.ForkJoinPool$InvokeAll +java.util.concurrent.ForkJoinTask$AdaptedCallable +java.util.concurrent.ForkJoinTask$AdaptedRunnable +java.util.concurrent.LinkedBlockingDeque +java.util.concurrent.LinkedBlockingQueue +java.util.concurrent.LinkedTransferQueue +java.util.concurrent.PriorityBlockingQueue +java.util.concurrent.RejectedExecutionException +java.util.concurrent.Semaphore +java.util.concurrent.Semaphore$FairSync +java.util.concurrent.Semaphore$NonfairSync +java.util.concurrent.SynchronousQueue +java.util.concurrent.SynchronousQueue$FifoWaitQueue +java.util.concurrent.SynchronousQueue$LifoWaitQueue +java.util.concurrent.SynchronousQueue$WaitQueue +java.util.concurrent.ThreadLocalRandom +java.util.concurrent.ThreadPoolExecutor$Worker +java.util.concurrent.TimeUnit$1 +java.util.concurrent.TimeUnit$2 +java.util.concurrent.TimeUnit$3 +java.util.concurrent.TimeUnit$4 +java.util.concurrent.TimeUnit$5 +java.util.concurrent.TimeUnit$6 +java.util.concurrent.TimeUnit$7 +java.util.concurrent.TimeoutException +java.util.concurrent.atomic.AtomicBoolean +java.util.concurrent.atomic.AtomicInteger +java.util.concurrent.atomic.AtomicIntegerArray +java.util.concurrent.atomic.AtomicLong +java.util.concurrent.atomic.AtomicLongArray +java.util.concurrent.atomic.AtomicReference +java.util.concurrent.atomic.AtomicReferenceArray +java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject +java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject +java.util.concurrent.locks.ReentrantLock +java.util.concurrent.locks.ReentrantLock$FairSync +java.util.concurrent.locks.ReentrantLock$NonfairSync +java.util.concurrent.locks.ReentrantReadWriteLock +java.util.concurrent.locks.ReentrantReadWriteLock$FairSync +java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync +java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock +java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock +java.util.jar.JarException +java.util.jar.JarVerifier$VerifierCodeSource +java.util.logging.Level +java.util.logging.LogRecord +java.util.logging.LoggingPermission +java.util.prefs.AbstractPreferences$NodeAddedEvent +java.util.prefs.AbstractPreferences$NodeRemovedEvent +java.util.prefs.BackingStoreException +java.util.prefs.InvalidPreferencesFormatException +java.util.prefs.NodeChangeEvent +java.util.prefs.PreferenceChangeEvent +java.util.regex.Pattern +java.util.regex.PatternSyntaxException +java.util.regex.UnicodeProp$1 +java.util.regex.UnicodeProp$10 +java.util.regex.UnicodeProp$11 +java.util.regex.UnicodeProp$12 +java.util.regex.UnicodeProp$13 +java.util.regex.UnicodeProp$14 +java.util.regex.UnicodeProp$15 +java.util.regex.UnicodeProp$16 +java.util.regex.UnicodeProp$17 +java.util.regex.UnicodeProp$18 +java.util.regex.UnicodeProp$2 +java.util.regex.UnicodeProp$3 +java.util.regex.UnicodeProp$4 +java.util.regex.UnicodeProp$5 +java.util.regex.UnicodeProp$6 +java.util.regex.UnicodeProp$7 +java.util.regex.UnicodeProp$8 +java.util.regex.UnicodeProp$9 +java.util.zip.DataFormatException +java.util.zip.ZipError +java.util.zip.ZipException http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties b/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties index 64b93ad..92b5d4d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties +++ b/modules/core/src/main/java/org/apache/ignite/internal/classnames.properties @@ -15,314 +15,6 @@ # limitations under the License. # -[B -[C -[D -[F -[I -[J -[Ljava.lang.Object; -[S -[Z -java.lang.AbstractMethodError -java.lang.ArithmeticException -java.lang.ArrayIndexOutOfBoundsException -java.lang.ArrayStoreException -java.lang.AssertionError -java.lang.Boolean -java.lang.BootstrapMethodError -java.lang.Byte -java.lang.Character -java.lang.Character$UnicodeScript -java.lang.Class -java.lang.ClassCastException -java.lang.ClassCircularityError -java.lang.ClassFormatError -java.lang.ClassNotFoundException -java.lang.CloneNotSupportedException -java.lang.Double -java.lang.EnumConstantNotPresentException -java.lang.Error -java.lang.Exception -java.lang.ExceptionInInitializerError -java.lang.Float -java.lang.IllegalAccessError -java.lang.IllegalAccessException -java.lang.IllegalArgumentException -java.lang.IllegalMonitorStateException -java.lang.IllegalStateException -java.lang.IllegalThreadStateException -java.lang.IncompatibleClassChangeError -java.lang.IndexOutOfBoundsException -java.lang.InstantiationError -java.lang.InstantiationException -java.lang.Integer -java.lang.InternalError -java.lang.InterruptedException -java.lang.LinkageError -java.lang.Long -java.lang.NegativeArraySizeException -java.lang.NoClassDefFoundError -java.lang.NoSuchFieldError -java.lang.NoSuchFieldException -java.lang.NoSuchMethodError -java.lang.NoSuchMethodException -java.lang.NullPointerException -java.lang.NumberFormatException -java.lang.OutOfMemoryError -java.lang.ProcessBuilder$Redirect$Type -java.lang.ReflectiveOperationException -java.lang.RuntimeException -java.lang.RuntimePermission -java.lang.SecurityException -java.lang.Short -java.lang.StackOverflowError -java.lang.StackTraceElement -java.lang.String -java.lang.String$CaseInsensitiveComparator -java.lang.StringBuffer -java.lang.StringBuilder -java.lang.StringIndexOutOfBoundsException -java.lang.Thread$State -java.lang.ThreadDeath -java.lang.Throwable -java.lang.TypeNotPresentException -java.lang.UNIXProcess$LaunchMechanism -java.lang.UnknownError -java.lang.UnsatisfiedLinkError -java.lang.UnsupportedClassVersionError -java.lang.UnsupportedOperationException -java.lang.VerifyError -java.lang.annotation.AnnotationFormatError -java.lang.annotation.AnnotationTypeMismatchException -java.lang.annotation.ElementType -java.lang.annotation.IncompleteAnnotationException -java.lang.annotation.RetentionPolicy -java.lang.instrument.IllegalClassFormatException -java.lang.instrument.UnmodifiableClassException -java.lang.invoke.MethodType -java.lang.invoke.WrongMethodTypeException -java.lang.management.ManagementPermission -java.lang.management.MemoryType -java.lang.management.PlatformComponent -java.lang.reflect.GenericSignatureFormatError -java.lang.reflect.InvocationTargetException -java.lang.reflect.MalformedParameterizedTypeException -java.lang.reflect.Proxy -java.lang.reflect.ReflectPermission -java.lang.reflect.UndeclaredThrowableException -java.net.Authenticator$RequestorType -java.net.BindException -java.net.ConnectException -java.net.HttpRetryException -java.net.Inet4Address -java.net.Inet6Address -java.net.InetAddress -java.net.InetAddress$Cache$Type -java.net.InetSocketAddress -java.net.MalformedURLException -java.net.NetPermission -java.net.NoRouteToHostException -java.net.PortUnreachableException -java.net.ProtocolException -java.net.Proxy$Type -java.net.SocketException -java.net.SocketPermission -java.net.SocketPermissionCollection -java.net.SocketTimeoutException -java.net.StandardProtocolFamily -java.net.URI -java.net.URISyntaxException -java.net.URL -java.net.UnknownHostException -java.net.UnknownServiceException -java.util.AbstractMap$SimpleEntry -java.util.AbstractMap$SimpleImmutableEntry -java.util.ArrayDeque -java.util.ArrayList -java.util.Arrays$ArrayList -java.util.BitSet -java.util.Collections$AsLIFOQueue -java.util.Collections$CheckedCollection -java.util.Collections$CheckedList -java.util.Collections$CheckedMap -java.util.Collections$CheckedRandomAccessList -java.util.Collections$CheckedSet -java.util.Collections$CheckedSortedMap -java.util.Collections$CheckedSortedSet -java.util.Collections$CopiesList -java.util.Collections$EmptyList -java.util.Collections$EmptyMap -java.util.Collections$EmptySet -java.util.Collections$ReverseComparator -java.util.Collections$ReverseComparator2 -java.util.Collections$SetFromMap -java.util.Collections$SingletonList -java.util.Collections$SingletonMap -java.util.Collections$SingletonSet -java.util.Collections$SynchronizedCollection -java.util.Collections$SynchronizedList -java.util.Collections$SynchronizedMap -java.util.Collections$SynchronizedRandomAccessList -java.util.Collections$SynchronizedSet -java.util.Collections$SynchronizedSortedMap -java.util.Collections$SynchronizedSortedSet -java.util.Collections$UnmodifiableCollection -java.util.Collections$UnmodifiableList -java.util.Collections$UnmodifiableMap -java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet -java.util.Collections$UnmodifiableRandomAccessList -java.util.Collections$UnmodifiableSet -java.util.Collections$UnmodifiableSortedMap -java.util.Collections$UnmodifiableSortedSet -java.util.ConcurrentModificationException -java.util.Currency -java.util.Date -java.util.DuplicateFormatFlagsException -java.util.EmptyStackException -java.util.EnumMap -java.util.EnumSet$SerializationProxy -java.util.EventObject -java.util.FormatFlagsConversionMismatchException -java.util.Formatter$BigDecimalLayoutForm -java.util.FormatterClosedException -java.util.GregorianCalendar -java.util.HashMap -java.util.HashSet -java.util.Hashtable -java.util.IdentityHashMap -java.util.IllegalFormatCodePointException -java.util.IllegalFormatConversionException -java.util.IllegalFormatException -java.util.IllegalFormatFlagsException -java.util.IllegalFormatPrecisionException -java.util.IllegalFormatWidthException -java.util.IllformedLocaleException -java.util.InputMismatchException -java.util.InvalidPropertiesFormatException -java.util.JapaneseImperialCalendar -java.util.JumboEnumSet -java.util.LinkedHashMap -java.util.LinkedHashSet -java.util.LinkedList -java.util.Locale -java.util.Locale$Category -java.util.MissingFormatArgumentException -java.util.MissingFormatWidthException -java.util.MissingResourceException -java.util.NoSuchElementException -java.util.PriorityQueue -java.util.Properties -java.util.PropertyPermission -java.util.PropertyPermissionCollection -java.util.Random -java.util.RegularEnumSet -java.util.ServiceConfigurationError -java.util.SimpleTimeZone -java.util.Stack -java.util.TooManyListenersException -java.util.TreeMap -java.util.TreeMap$AscendingSubMap -java.util.TreeMap$DescendingSubMap -java.util.TreeMap$SubMap -java.util.TreeSet -java.util.UUID -java.util.UnknownFormatConversionException -java.util.UnknownFormatFlagsException -java.util.Vector -java.util.concurrent.ArrayBlockingQueue -java.util.concurrent.BrokenBarrierException -java.util.concurrent.CancellationException -java.util.concurrent.ConcurrentHashMap -java.util.concurrent.ConcurrentHashMap$Segment -java.util.concurrent.ConcurrentHashMap$WriteThroughEntry -java.util.concurrent.ConcurrentLinkedDeque -java.util.concurrent.ConcurrentLinkedQueue -java.util.concurrent.ConcurrentSkipListMap -java.util.concurrent.ConcurrentSkipListMap$SubMap -java.util.concurrent.ConcurrentSkipListSet -java.util.concurrent.CopyOnWriteArrayList -java.util.concurrent.CopyOnWriteArraySet -java.util.concurrent.CountDownLatch$Sync -java.util.concurrent.Exchanger$Node -java.util.concurrent.Exchanger$Slot -java.util.concurrent.ExecutionException -java.util.concurrent.ForkJoinPool$InvokeAll -java.util.concurrent.ForkJoinTask$AdaptedCallable -java.util.concurrent.ForkJoinTask$AdaptedRunnable -java.util.concurrent.LinkedBlockingDeque -java.util.concurrent.LinkedBlockingQueue -java.util.concurrent.LinkedTransferQueue -java.util.concurrent.PriorityBlockingQueue -java.util.concurrent.RejectedExecutionException -java.util.concurrent.Semaphore -java.util.concurrent.Semaphore$FairSync -java.util.concurrent.Semaphore$NonfairSync -java.util.concurrent.SynchronousQueue -java.util.concurrent.SynchronousQueue$FifoWaitQueue -java.util.concurrent.SynchronousQueue$LifoWaitQueue -java.util.concurrent.SynchronousQueue$WaitQueue -java.util.concurrent.ThreadLocalRandom -java.util.concurrent.ThreadPoolExecutor$Worker -java.util.concurrent.TimeUnit$1 -java.util.concurrent.TimeUnit$2 -java.util.concurrent.TimeUnit$3 -java.util.concurrent.TimeUnit$4 -java.util.concurrent.TimeUnit$5 -java.util.concurrent.TimeUnit$6 -java.util.concurrent.TimeUnit$7 -java.util.concurrent.TimeoutException -java.util.concurrent.atomic.AtomicBoolean -java.util.concurrent.atomic.AtomicInteger -java.util.concurrent.atomic.AtomicIntegerArray -java.util.concurrent.atomic.AtomicLong -java.util.concurrent.atomic.AtomicLongArray -java.util.concurrent.atomic.AtomicReference -java.util.concurrent.atomic.AtomicReferenceArray -java.util.concurrent.locks.AbstractQueuedLongSynchronizer$ConditionObject -java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject -java.util.concurrent.locks.ReentrantLock -java.util.concurrent.locks.ReentrantLock$FairSync -java.util.concurrent.locks.ReentrantLock$NonfairSync -java.util.concurrent.locks.ReentrantReadWriteLock -java.util.concurrent.locks.ReentrantReadWriteLock$FairSync -java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync -java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock -java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock -java.util.jar.JarException -java.util.jar.JarVerifier$VerifierCodeSource -java.util.logging.Level -java.util.logging.LogRecord -java.util.logging.LoggingPermission -java.util.prefs.AbstractPreferences$NodeAddedEvent -java.util.prefs.AbstractPreferences$NodeRemovedEvent -java.util.prefs.BackingStoreException -java.util.prefs.InvalidPreferencesFormatException -java.util.prefs.NodeChangeEvent -java.util.prefs.PreferenceChangeEvent -java.util.regex.Pattern -java.util.regex.PatternSyntaxException -java.util.regex.UnicodeProp$1 -java.util.regex.UnicodeProp$10 -java.util.regex.UnicodeProp$11 -java.util.regex.UnicodeProp$12 -java.util.regex.UnicodeProp$13 -java.util.regex.UnicodeProp$14 -java.util.regex.UnicodeProp$15 -java.util.regex.UnicodeProp$16 -java.util.regex.UnicodeProp$17 -java.util.regex.UnicodeProp$18 -java.util.regex.UnicodeProp$2 -java.util.regex.UnicodeProp$3 -java.util.regex.UnicodeProp$4 -java.util.regex.UnicodeProp$5 -java.util.regex.UnicodeProp$6 -java.util.regex.UnicodeProp$7 -java.util.regex.UnicodeProp$8 -java.util.regex.UnicodeProp$9 -java.util.zip.DataFormatException -java.util.zip.ZipError -java.util.zip.ZipException org.apache.ignite.IgniteAuthenticationException org.apache.ignite.IgniteCheckedException org.apache.ignite.IgniteDeploymentException http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2ebb2705/modules/tools/src/main/java/org/apache/ignite/tools/marshaller/optimized/OptimizedClassNamesGenerator.java ---------------------------------------------------------------------- diff --git a/modules/tools/src/main/java/org/apache/ignite/tools/marshaller/optimized/OptimizedClassNamesGenerator.java b/modules/tools/src/main/java/org/apache/ignite/tools/marshaller/optimized/OptimizedClassNamesGenerator.java deleted file mode 100644 index 31c1b0c..0000000 --- a/modules/tools/src/main/java/org/apache/ignite/tools/marshaller/optimized/OptimizedClassNamesGenerator.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * 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.ignite.tools.marshaller.optimized; - -import java.io.*; -import java.lang.reflect.*; -import java.net.*; -import java.util.*; -import java.util.jar.*; - -/** - * Generates a file with preregistered class names. - * <p> - * This class should have the following modules with corresponding lib dependencies in its classpath: - * <ul> - * <li>src</li> - * <li>scalar</li> - * <li>visor</li> - * </ul> - * It {@code should NOT} have any {@code 'test'} modules in the class path. - */ -public class OptimizedClassNamesGenerator { - /** Defines Ignite installation folder. */ - public static final String IGNITE_HOME_SYS_PROP = "IGNITE_HOME"; - - /** Defines Ignite installation folder. */ - public static final String IGNITE_HOME_ENV_VAR = "IGNITE_HOME"; - - /** File name to generate. */ - public static final String FILE_NAME = "optimized-classnames.properties"; - - /** Previous version file name. */ - public static final String PREV_FILE_NAME = "optimized-classnames.previous.properties"; - - /** */ - private Collection<String> clsNames; - - /** Collection of classes without serialVersionUID. */ - private Collection<Class> clsWithoutSerialVersionUID; - - /** */ - private int urlPrefixLen; - - /** - * @param file Output file. - * @param prev Previous version file. - * @throws URISyntaxException If this URL is not formatted strictly according to - * to RFC2396 and cannot be converted to a URI. - * @throws IOException If an I/O error occurs while writing stream header. - */ - public void writeClassNames(File file, File prev) throws IOException, URISyntaxException { - assert file != null; - assert prev != null; - - clsNames = new HashSet<>(); - - clsWithoutSerialVersionUID = new ArrayList<>(); - - URL[] urls = ((URLClassLoader)OptimizedClassNamesGenerator.class.getClassLoader()).getURLs(); - - System.out.println("Printing class loader URLs: "); - - for (URL url : urls) - System.out.println(" " + url); - - for (URL url : urls) { - File f = new File(url.toURI()); - - if (!f.exists()) - System.err.println("Unrecognized URL: " + url); - else { - urlPrefixLen = f.getPath().length() + 1; - - processFile(f); - } - } - - if (clsWithoutSerialVersionUID.size() > 0) { - StringBuilder sb = new StringBuilder("No serialVersionUID field in class(es): "); - - for (Class cls : clsWithoutSerialVersionUID) - sb.append(cls.getName()).append(", "); - - sb.setLength(sb.length() - ", ".length()); - - throw new RuntimeException(sb.toString()); - } - - Collection<String> prevCls = previousVersionClasses(prev); - - try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))) { - for (String clsName : prevCls) { - writer.write(clsName); - writer.newLine(); - - clsNames.remove(clsName); - } - - List<String> sorted = new ArrayList<>(clsNames); - - Collections.sort(sorted); - - for (String clsName : sorted) { - writer.write(clsName); - writer.newLine(); - } - } - } - - /** - * @param file Previous version file. - * @return Class names. - * @throws IOException In case of error. - */ - private Collection<String> previousVersionClasses(File file) throws IOException { - assert file != null && file.exists(); - - BufferedReader rdr = new BufferedReader(new FileReader(file)); - - Collection<String> names = new ArrayList<>(30000); - - String name; - - while ((name = rdr.readLine()) != null) - names.add(name); - - return names; - } - - /** - * @param file File to process. - * @throws IOException If an I/O error occurs while writing stream header. - */ - private void processFile(File file) throws IOException { - if (file.isDirectory()) - for (File childFile : file.listFiles()) - processFile(childFile); - else if (file.getName().toLowerCase().endsWith(".jar")) - processJar(file); - else if (file.getName().toLowerCase().endsWith(".class")) - processClass(trimClassExtension( - file.getPath().substring(urlPrefixLen).replace(File.separatorChar, '.') - )); - } - - /** - * @param jarFile File to process. - * @throws IOException If an I/O error occurs while writing stream header. - */ - private void processJar(File jarFile) throws IOException { - JarInputStream jin = new JarInputStream(new BufferedInputStream(new FileInputStream(jarFile))); - - try { - JarEntry jarEntry; - - while ((jarEntry = jin.getNextJarEntry()) != null) { - if (jarEntry.isDirectory() || !jarEntry.getName().toLowerCase().endsWith(".class")) - continue; - - processClass(trimClassExtension(jarEntry.getName().replace('/', '.'))); - } - } - finally { - close(jin); - } - } - - /** - * @param name Class name to process. - */ - @SuppressWarnings( {"ErrorNotRethrown"}) - private void processClass(String name) { - try { - Class cls = Class.forName(name, false, OptimizedClassNamesGenerator.class.getClassLoader()); - - if (isAccepted(cls)) { - checkSerialVersionUid(cls); - - clsNames.add(name); - } - } - catch (SecurityException | LinkageError ignored) { - // No-op. - } - catch (ClassNotFoundException e) { - throw new AssertionError(e); - } - } - - /** - * Checks serialVersionUID field in provided class. - * - * @param cls Class. - */ - private void checkSerialVersionUid(Class cls) { - // Check only Ignite classes. - if (cls.isEnum() || cls.getSimpleName().isEmpty() || (!cls.getName().startsWith("org.gridgain.grid") && - !cls.getName().startsWith("org.gridgain.client") && !cls.getName().startsWith("org.apache.ignite"))) - return; - - try { - Field field = cls.getDeclaredField("serialVersionUID"); - - if (!field.getType().equals(long.class)) - throw new RuntimeException("serialVersionUID field is not long in class: " + cls.getName()); - - int mod = field.getModifiers(); - - if (!Modifier.isStatic(mod)) - throw new RuntimeException("serialVersionUID field is not static in class: " + cls.getName()); - - if (!Modifier.isFinal(mod)) - throw new RuntimeException("serialVersionUID field is not final in class: " + cls.getName()); - } - catch (NoSuchFieldException ignored) { - clsWithoutSerialVersionUID.add(cls); - } - } - - /** - * @param cls A class to examine. - * @return Whether to add the class. - */ - private static boolean isAccepted(Class cls) { - return !(cls.isInterface() || (cls.getModifiers() & Modifier.ABSTRACT) != 0 || isTest(cls)) && - (cls.isEnum() || Serializable.class.isAssignableFrom(cls)); - } - - /** - * Checks if class is a test case. - * - * @param cls Class. - * @return {@code True} if test case. - */ - private static boolean isTest(Class cls) { - for (Class c = cls; c != Object.class; c = c.getSuperclass()) - if (c.getName().startsWith("junit.framework") || // JUnit3 - c.getName().startsWith("org.junit") || // JUnit4 - c.getName().startsWith("org.testing")) // TestNG - return true; - - return false; - } - - /** - * @param path Path. - * @return Trimmed path. - */ - private static String trimClassExtension(String path) { - return path.substring(0, path.length() - 6); - } - - /** - * @param closeable An object to close. - */ - private static void close(Closeable closeable) { - try { - closeable.close(); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * @param args Command line arguments, none expected. - * @throws Exception If generation failed. - */ - public static void main(String[] args) throws Exception { - File dir; - - if (args.length > 0 && args[0] != null && !args[0].isEmpty()) - dir = new File(args[0], "/org/apache/ignite/marshaller/optimized"); - else { - String home = home(); - - if (home == null) - throw new Exception("Failed to find Ignite home."); - - dir = new File(home, "modules/core/src/main/java/org/apache/ignite/marshaller/optimized"); - } - - if (!dir.exists()) - throw new Exception("Optimized marshaller path does not exist: " + dir); - - if (!dir.isDirectory()) - throw new Exception("Destination path is not a directory: " + dir); - - new OptimizedClassNamesGenerator().writeClassNames(new File(dir, FILE_NAME), new File(dir, PREV_FILE_NAME)); - } - - /** - * Retrieves {@code IGNITE_HOME} property. The property is retrieved from system - * properties or from environment in that order. - * - * @return {@code IGNITE_HOME} property. - */ - private static String home() { - String home = System.getProperty(IGNITE_HOME_SYS_PROP); - - if (home == null || home.isEmpty()) { - home = System.getenv(IGNITE_HOME_ENV_VAR); - - if (home == null || home.isEmpty()) - return null; - } - - return home; - } -}