Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge branch 'release/v0.8.6' into develop #3

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Created by https://www.gitignore.io

### Android ###
# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log


### Gradle ###
.gradle
build/

# Ignore Gradle GUI config
gradle-app.setting


### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties


### Eclipse ###
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath

# sbteclipse plugin
.target

# TeXlipse plugin
.texlipse
2 changes: 0 additions & 2 deletions BaasioAndroid/.gitignore

This file was deleted.

23 changes: 22 additions & 1 deletion BaasioAndroid/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,31 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.kth.baasio"
android:versionCode="7"
android:versionName="0.8.6">

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<!-- Common -->
<uses-permission android:name="android.permission.INTERNET" />


<!-- GCM -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<application>
<receiver android:name=".gcm.GCMUpdateReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data tools:replace="android:path" android:path="PackageName" android:scheme="package" />
</intent-filter>
</receiver>
<receiver android:name=".gcm.GCMBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
51 changes: 51 additions & 0 deletions BaasioAndroid/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
apply plugin: 'android-library'

repositories {
mavenCentral()
}

dependencies {
compile files('libs/gcm.jar')
compile 'com.android.support:support-v4:21.0.+'
compile 'org.codehaus.jackson:jackson-core-asl:1.9.+'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.+'
compile 'org.springframework.android:spring-android-rest-template:1.+'
}

android {
compileSdkVersion 19
buildToolsVersion "21.1.1"

buildTypes {
release {
buildConfigField "boolean", "SDK_DEBUG", "false"
}
debug {
buildConfigField "boolean", "SDK_DEBUG", "true"
}
}

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')

// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
37 changes: 27 additions & 10 deletions BaasioAndroid/src/com/kth/baasio/Baas.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@

package com.kth.baasio;

import android.content.Context;
import android.content.Intent;
import android.os.Build;

import com.google.android.gcm.GCMRegistrar;
import com.kth.baasio.callback.BaasioDeviceAsyncTask;
import com.kth.baasio.callback.BaasioDeviceCallback;
Expand Down Expand Up @@ -43,10 +47,6 @@
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;

import android.content.Context;
import android.content.Intent;
import android.os.Build;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
Expand All @@ -56,6 +56,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

import javax.net.ssl.HttpsURLConnection;

Expand Down Expand Up @@ -248,23 +249,39 @@ public void init(Context context, String baasioUrl, String baasioId, String appl
* @param gcmSenderId GCM sender ID
* @return GCM registration task
*/
public BaasioDeviceAsyncTask setGcmEnabled(Context context, String tags,
public BaasioDeviceAsyncTask setGcmEnabled(Context context, List<String> tags,
BaasioDeviceCallback callback, String... gcmSenderId) {
if (!ObjectUtils.isEmpty(gcmSenderId) && !ObjectUtils.isEmpty(gcmSenderId[0])) {
this.gcmSenderId = gcmSenderId;

gcmEnabled = true;

if (!ObjectUtils.isEmpty(tags)) {
return BaasioPush.registerWithTagsInBackground(context, tags, callback);
} else {
return BaasioPush.registerInBackground(context, callback);
if (tags != null) {
setGcmTags(tags);
}
}

return null;
return BaasioPush.registerInBackground(context, callback);
}

public void setGcmTags(List<String> tags) {
if (!Baas.io().isGcmEnabled()) {
LogUtils.LOGI(TAG, BaasioError.ERROR_GCM_DISABLED);
}

for (String tag : tags) {
if (tag.length() > 36) {
throw new IllegalArgumentException(BaasioError.ERROR_GCM_TAG_LENGTH_EXCEED);
}

Pattern pattern = Pattern.compile(BaasioPush.TAG_REGEXP);
if (!pattern.matcher(tag).matches()) {
throw new IllegalArgumentException(BaasioError.ERROR_GCM_TAG_PATTERN_MISS_MATCHED);
}
}

BaasioPreferences.setNeedRegisteredTags(applicationContext, tags);
}
/**
* This method must be placed in Application.onDestroy()
*
Expand Down
12 changes: 7 additions & 5 deletions BaasioAndroid/src/com/kth/baasio/entity/push/BaasioDevice.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@

package com.kth.baasio.entity.push;

import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL;

import com.kth.baasio.entity.BaasioConnectableEntity;
import com.kth.baasio.utils.JsonUtils;
import com.kth.baasio.utils.ObjectUtils;
Expand All @@ -12,20 +10,22 @@

import java.util.List;

import static org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL;

public class BaasioDevice extends BaasioConnectableEntity {

public final static String ENTITY_TYPE = "device";

public final static String PROPERTY_TOKEN = "token";

public final static String PROPERTY_TAGS = "tags";

public final static String PROPERTY_PLATFORM = "platform";

public final static String PLATFORM_TYPE_GCM = "G";

public final static String PLATFORM_TYPE_IOS = "I";

private List<String> tags;

public BaasioDevice() {
super();
setType(ENTITY_TYPE);
Expand All @@ -47,6 +47,7 @@ public List<String> getPropertyNames() {
List<String> properties = super.getPropertyNames();
properties.add(PROPERTY_TOKEN);
properties.add(PROPERTY_PLATFORM);
properties.add(PROPERTY_TAGS);
return properties;
}

Expand Down Expand Up @@ -93,6 +94,7 @@ public void setPlatform(String platform) {
*/
@JsonSerialize(include = NON_NULL)
public List<String> getTags() {
List<String> tags = JsonUtils.getStringArrayProperty(properties, PROPERTY_TAGS, List.class);
if (ObjectUtils.isEmpty(tags)) {
return null;
}
Expand All @@ -105,6 +107,6 @@ public List<String> getTags() {
* @param tags List of tags.
*/
public void setTags(List<String> tags) {
this.tags = tags;
JsonUtils.setStringArrayProperty(properties, PROPERTY_TAGS, tags);
}
}
Loading