From f579fb2c778220c6832f1be54c8ec80e568a0fc9 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Sat, 25 Apr 2015 22:53:46 +0200 Subject: [PATCH] Throw exception if smack-java7 is loaded on Android --- .../jivesoftware/smack/util/SystemUtil.java | 28 +++++++++++++++++++ .../smack/java7/Java7SmackInitializer.java | 11 +++++++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 smack-core/src/main/java/org/jivesoftware/smack/util/SystemUtil.java diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/SystemUtil.java b/smack-core/src/main/java/org/jivesoftware/smack/util/SystemUtil.java new file mode 100644 index 000000000..a3cf17b12 --- /dev/null +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/SystemUtil.java @@ -0,0 +1,28 @@ +/** + * + * Copyright 2015 Florian Schmaus + * + * 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 org.jivesoftware.smack.util; + +public class SystemUtil { + + public static final String PROPERTY_JAVA_VENDOR = "java.vendor"; + + public static boolean onAndroid() { + String vendor = System.getProperty(PROPERTY_JAVA_VENDOR); + return vendor.contains("Android"); + } + +} diff --git a/smack-java7/src/main/java/org/jivesoftware/smack/java7/Java7SmackInitializer.java b/smack-java7/src/main/java/org/jivesoftware/smack/java7/Java7SmackInitializer.java index 482213219..60e1958e4 100644 --- a/smack-java7/src/main/java/org/jivesoftware/smack/java7/Java7SmackInitializer.java +++ b/smack-java7/src/main/java/org/jivesoftware/smack/java7/Java7SmackInitializer.java @@ -1,6 +1,6 @@ /** * - * Copyright 2014 the original author or authors + * Copyright 2014-2015 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import org.jivesoftware.smack.SmackConfiguration; import org.jivesoftware.smack.initializer.SmackInitializer; import org.jivesoftware.smack.util.DNSUtil; import org.jivesoftware.smack.util.StringTransformer; +import org.jivesoftware.smack.util.SystemUtil; import org.jivesoftware.smack.util.stringencoder.Base64; import org.jivesoftware.smack.util.stringencoder.Base64UrlSafeEncoder; import org.jivesoftware.smack.util.stringencoder.java7.Java7Base64Encoder; @@ -31,6 +32,14 @@ public class Java7SmackInitializer implements SmackInitializer { @Override public List initialize() { + if (SystemUtil.onAndroid()) { + // @formatter:off + throw new RuntimeException( + "You need to remove the smack-java7 dependency/jar from your build, " + + "as it does not run on Android. " + + "Use smack-android instead."); + // @formatter:on + } SmackConfiguration.setDefaultHostnameVerifier(new Java7HostnameVerifier()); Base64.setEncoder(Java7Base64Encoder.getInstance()); Base64UrlSafeEncoder.setEncoder(Java7Base64UrlSafeEncoder.getInstance());