You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sd...@apache.org on 2016/06/16 02:56:36 UTC
commons-crypto git commit: CRYPTO-64: Remove code uses sun classes
Repository: commons-crypto
Updated Branches:
refs/heads/master 50e4e0fe1 -> 1cc854857
CRYPTO-64: Remove code uses sun classes
Project: http://git-wip-us.apache.org/repos/asf/commons-crypto/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-crypto/commit/1cc85485
Tree: http://git-wip-us.apache.org/repos/asf/commons-crypto/tree/1cc85485
Diff: http://git-wip-us.apache.org/repos/asf/commons-crypto/diff/1cc85485
Branch: refs/heads/master
Commit: 1cc85485736120e8920fe9dfce2410ce646ee8f4
Parents: 50e4e0f
Author: Sun Dapeng <sd...@apache.org>
Authored: Tue Jun 14 14:01:33 2016 +0800
Committer: Sun Dapeng <sd...@apache.org>
Committed: Thu Jun 16 10:52:15 2016 +0800
----------------------------------------------------------------------
.../org/apache/commons/crypto/utils/Utils.java | 35 +++++++++++++++-----
src/site/resources/profile.noanimal | 19 -----------
2 files changed, 27 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/1cc85485/src/main/java/org/apache/commons/crypto/utils/Utils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/crypto/utils/Utils.java b/src/main/java/org/apache/commons/crypto/utils/Utils.java
index 95eea1a..f3a82e9 100644
--- a/src/main/java/org/apache/commons/crypto/utils/Utils.java
+++ b/src/main/java/org/apache/commons/crypto/utils/Utils.java
@@ -19,6 +19,7 @@ package org.apache.commons.crypto.utils;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Method;
import java.nio.ByteBuffer;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
@@ -26,22 +27,21 @@ import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
+import org.apache.commons.crypto.cipher.CipherTransformation;
import org.apache.commons.crypto.cipher.CryptoCipher;
import org.apache.commons.crypto.cipher.CryptoCipherFactory;
-import org.apache.commons.crypto.cipher.CipherTransformation;
import org.apache.commons.crypto.conf.ConfigurationKeys;
-
-import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_STREAM_BUFFER_SIZE_DEFAULT;
-import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_STREAM_BUFFER_SIZE_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_CIPHER_CLASSES_DEFAULT;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_CIPHER_CLASSES_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_CIPHER_JCE_PROVIDER_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_LIB_NAME_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_LIB_PATH_KEY;
+import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_LIB_TEMPDIR_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_DEVICE_FILE_PATH_DEFAULT;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_SECURE_RANDOM_DEVICE_FILE_PATH_KEY;
+import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_STREAM_BUFFER_SIZE_DEFAULT;
+import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_STREAM_BUFFER_SIZE_KEY;
import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_SYSTEM_PROPERTIES_FILE;
-import static org.apache.commons.crypto.conf.ConfigurationKeys.COMMONS_CRYPTO_LIB_TEMPDIR_KEY;
/**
* General utility methods.
@@ -68,7 +68,7 @@ public final class Utils {
/**
* loads system properties when configuration file of the name
- * {@link #COMMONS_CRYPTO_SYSTEM_PROPERTIES_FILE} is found.
+ * {@link ConfigurationKeys#COMMONS_CRYPTO_SYSTEM_PROPERTIES_FILE} is found.
*/
private static void loadSystemProperties() {
try {
@@ -104,8 +104,27 @@ public final class Utils {
* @param buffer the bytebuffer to be freed.
*/
public static void freeDirectBuffer(ByteBuffer buffer) {
- if (buffer instanceof sun.nio.ch.DirectBuffer) {
- ((sun.nio.ch.DirectBuffer) buffer).cleaner().clean();
+ try {
+ /* Using reflection to implement sun.nio.ch.DirectBuffer.cleaner()
+ .clean(); */
+ Class<?> sunClass = Class.forName("sun.nio.ch.DirectBuffer");
+ Class<?> cleanerClass = Class.forName("sun.misc.Cleaner");
+
+ Class<?>[] interfaces = buffer.getClass().getInterfaces();
+
+ for (Class clazz : interfaces) {
+ if (clazz.getName().equals(sunClass.getName())) {
+ /* DirectBuffer#cleaner() */
+ Method getCleaner = sunClass.getMethod("cleaner");
+ Object cleaner = getCleaner.invoke(buffer, null);
+ /* Cleaner#clean() */
+ Method cleanMethod = cleanerClass.getMethod("clean");
+ cleanMethod.invoke(cleaner, null);
+ return;
+ }
+ }
+ } catch (ReflectiveOperationException e) {
+ // Ignore the Reflection exception.
}
}
http://git-wip-us.apache.org/repos/asf/commons-crypto/blob/1cc85485/src/site/resources/profile.noanimal
----------------------------------------------------------------------
diff --git a/src/site/resources/profile.noanimal b/src/site/resources/profile.noanimal
deleted file mode 100644
index a9143dc..0000000
--- a/src/site/resources/profile.noanimal
+++ /dev/null
@@ -1,19 +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.
-# -----------------------------------------------------------------------------
-# Empty file used to bypass the check of running the Animal Sniffer plugin.
-# Animal Sniffer plugin is checking generated code does not included references to
-# methods/classes etc that are not present in the standard Java runtime for the defined target
-# version.