Adding Windows module and pom changes

This commit is contained in:
Asok 2014-12-12 11:55:43 +05:30
commit 7282465b12
94 changed files with 1675 additions and 1328 deletions

View File

@ -44,6 +44,8 @@ public class Device {
private List<Feature> features;
private List<Property> properties;
public int getId() {
return id;
}
@ -140,4 +142,11 @@ public class Device {
this.type = type;
}
public List<Property> getProperties() {
return properties;
}
public void setProperties(List<Property> properties) {
this.properties = properties;
}
}

View File

@ -0,0 +1,39 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.carbon.device.mgt.common;
public class Property {
private String name;
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@ -62,8 +62,9 @@ public interface DeviceManagerService {
* Method to retrieve the status of the registration process of a particular device.
*
* @param deviceId Fully qualified device identifier
* @return Status of enrollment
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @return Status of enrollment
* @throws DeviceManagementException If some unusual behaviour is observed while checking the enrollment
* status of the device
*/
boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException;
@ -71,8 +72,9 @@ public interface DeviceManagerService {
* Method to retrieve the status of a particular device.
*
* @param deviceId Fully qualified device identifier
* @return Returns if the device is active
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @return Returns if the device is active
* @throws DeviceManagementException If some unusual behaviour is observed while checking the status
* of the device
*/
boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException;
@ -82,7 +84,8 @@ public interface DeviceManagerService {
*
* @param deviceId Fully qualified device identifier
* @param status Indicates whether the device is active
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @throws DeviceManagementException If some unusual behaviour is observed while updating the active status
* of the device
*/
boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException;
@ -90,7 +93,8 @@ public interface DeviceManagerService {
* Method to retrieve metadata of all devices registered within CDM corresponding to a particular device type.
*
* @param type Device Type
* @return List of metadata corresponding to all devices registered within CDM
* @return List of metadata corresponding to all devices registered within CDM
* @throws DeviceManagementException If some unusual behaviour is observed while obtaining the enrolled device list
*/
List<Device> getAllDevices(String type) throws DeviceManagementException;
@ -99,14 +103,14 @@ public interface DeviceManagerService {
*
* @param deviceId Fully qualified device identifier
* @return Metadata corresponding to a particular device
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @throws DeviceManagementException If some unusual behaviour is observed obtaining the device object
*/
Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException;
/**
* Method to update device information.
* @param device Updated device information related data
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @throws DeviceManagementException If some unusual behaviour is observed while updating the device info
*/
boolean updateDeviceInfo(Device device) throws DeviceManagementException;
@ -115,7 +119,8 @@ public interface DeviceManagerService {
*
* @param deviceId Fully qualified device identifier
* @param ownershipType Type of ownership
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
* @throws DeviceManagementException If some unusual behaviour is observed while setting the ownership
* of the device
*/
boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) throws DeviceManagementException;

View File

@ -25,59 +25,64 @@ import java.util.List;
public class DeviceManagementService implements DeviceManagerService {
@Override
public String getProviderType() {
return null;
}
@Override
public String getProviderType() {
return null;
}
@Override
public boolean enrollDevice(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().enrollDevice(device);
}
@Override
public boolean enrollDevice(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().enrollDevice(device);
}
@Override
public boolean modifyEnrollment(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().modifyEnrollment(device);
}
@Override
public boolean modifyEnrollment(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().modifyEnrollment(device);
}
@Override
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().disenrollDevice(deviceId);
}
@Override
public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager()
.disenrollDevice(deviceId);
}
@Override
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isEnrolled(deviceId);
}
@Override
public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isEnrolled(deviceId);
}
@Override
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isActive(deviceId);
}
@Override
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().isActive(deviceId);
}
@Override
public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().setActive(deviceId, status);
}
@Override
public boolean setActive(DeviceIdentifier deviceId, boolean status)
throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager()
.setActive(deviceId, status);
}
@Override
public List<Device> getAllDevices(String type) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getAllDevices(type);
}
@Override
public List<Device> getAllDevices(String type) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getAllDevices(type);
}
@Override
public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getDevice(deviceId);
}
@Override
public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().getDevice(deviceId);
}
@Override
public boolean updateDeviceInfo(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().updateDeviceInfo(device);
}
@Override
public boolean updateDeviceInfo(Device device) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().updateDeviceInfo(device);
}
@Override
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager().setOwnership(deviceId, ownershipType);
}
@Override
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
throws DeviceManagementException {
return DeviceManagementDataHolder.getInstance().getDeviceManager()
.setOwnership(deviceId, ownershipType);
}
}

View File

@ -27,18 +27,19 @@ import java.io.File;
public final class DeviceManagementSchemaInitializer extends DatabaseCreator {
private static final Log log = LogFactory.getLog(DeviceManagementSchemaInitializer.class);
private static final String setupSQLScriptLocation = CarbonUtils.getCarbonHome() + File.separator + "dbscripts" ;
private static final String setupSQLScriptBaseLocation =
CarbonUtils.getCarbonHome() + File.separator + "dbscripts" + File.separator + "cdm" + File.separator;
public DeviceManagementSchemaInitializer(DataSourceConfig config) {
super(DeviceManagerUtil.resolveDataSource(config));
}
protected String getDbScriptLocation(String databaseType) {
String scriptName = "wso2_cdm_" + databaseType + ".sql";
String scriptName = databaseType + ".sql";
if (log.isDebugEnabled()) {
log.debug("Loading database script from :" + scriptName);
}
return setupSQLScriptLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
}
}

View File

@ -35,6 +35,7 @@
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Description>Device Management Mobile Impl Bundle</Bundle-Description>
<Bundle-Activator>org.wso2.carbon.device.mgt.mobile.impl.internal.MobileDeviceManagementBundleActivator</Bundle-Activator>
<Private-Package>org.wso2.carbon.device.mgt.mobile.impl.internal</Private-Package>
<Import-Package>
org.osgi.framework,

View File

@ -26,9 +26,9 @@ import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidDeviceManagerServic
import org.wso2.carbon.device.mgt.mobile.impl.ios.IOSDeviceManagerService;
import org.wso2.carbon.device.mgt.mobile.impl.windows.WindowsDeviceManagerService;
public class MobileDeviceManagementServiceComponent implements BundleActivator {
public class MobileDeviceManagementBundleActivator implements BundleActivator {
private static final Log log = LogFactory.getLog(MobileDeviceManagementServiceComponent.class);
private static final Log log = LogFactory.getLog(MobileDeviceManagementBundleActivator.class);
private ServiceRegistration androidServiceRegRef;
private ServiceRegistration iOSServiceRegRef;
private ServiceRegistration windowsServiceRegRef;

View File

@ -18,7 +18,7 @@
<ManagementRepository>
<DataSourceConfiguration>
<JndiLookupDefinition>
<Name>WSO2DEVICE_DB</Name>
<Name>jdbc/WSO2DEVICE_DB</Name>
</JndiLookupDefinition>
</DataSourceConfiguration>
</ManagementRepository>

View File

@ -0,0 +1,3 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.server_${feature.version}/conf/cdm-config.xml,target:${installFolder}/../../conf/cdm-config.xml,overwrite:true);\

View File

@ -379,6 +379,7 @@ int id setting_invite_email_edittext 0x7f06002f
int id setting_invite_email_imageview 0x7f060031
int id setting_invite_email_layout 0x7f06002e
int id setting_invite_email_textview 0x7f060032
int id severAddressLabel 0x7f060089
int id sg_button1 0x7f060039
int id sg_button2 0x7f06003a
int id sg_button3 0x7f06003b
@ -425,7 +426,6 @@ int id txtPinCode 0x7f060086
int id txtRegText 0x7f060066
int id txtRoot 0x7f06007b
int id txtSDK 0x7f060079
int id txtVw 0x7f060089
int id useLogo 0x7f060004
int id user_edit_location 0x7f060033
int id username 0x7f06006b
@ -518,12 +518,12 @@ int string abs__shareactionprovider_share_with_application 0x7f0b0009
int string action_settings 0x7f0b0023
int string already_registered 0x7f0b0010
int string app_name 0x7f0b0021
int string application_mgr_download_file_name 0x7f0b0091
int string application_mgr_download_location 0x7f0b0090
int string application_mgr_mime 0x7f0b0092
int string application_package_launcher_action 0x7f0b0094
int string application_package_prefix 0x7f0b0093
int string button_ok 0x7f0b008f
int string application_mgr_download_file_name 0x7f0b0092
int string application_mgr_download_location 0x7f0b0091
int string application_mgr_mime 0x7f0b0093
int string application_package_launcher_action 0x7f0b0095
int string application_package_prefix 0x7f0b0094
int string button_ok 0x7f0b0090
int string device_admin_disabled 0x7f0b002e
int string device_admin_enable_alert 0x7f0b003d
int string device_admin_enabled 0x7f0b002d
@ -537,17 +537,18 @@ int string dialog_authenticate 0x7f0b0071
int string dialog_checking_reg 0x7f0b0073
int string dialog_enrolling 0x7f0b0076
int string dialog_init_confirmation 0x7f0b0079
int string dialog_init_end 0x7f0b007b
int string dialog_init_end_general 0x7f0b007c
int string dialog_init_device_type 0x7f0b007b
int string dialog_init_end 0x7f0b007c
int string dialog_init_end_general 0x7f0b007d
int string dialog_init_middle 0x7f0b007a
int string dialog_license_agreement 0x7f0b0075
int string dialog_message_please_wait 0x7f0b0084
int string dialog_message_unregistering 0x7f0b0083
int string dialog_message_please_wait 0x7f0b0085
int string dialog_message_unregistering 0x7f0b0084
int string dialog_pin_confirmation 0x7f0b0077
int string dialog_pin_confirmation_end 0x7f0b0078
int string dialog_please_wait 0x7f0b0072
int string dialog_sender_id 0x7f0b0074
int string dialog_unregister 0x7f0b007d
int string dialog_unregister 0x7f0b007e
int string empty_app_title 0x7f0b0022
int string error_auth_failed_detail 0x7f0b0068
int string error_authentication_failed 0x7f0b0069
@ -574,16 +575,14 @@ int string gcm_registered 0x7f0b0011
int string gcm_unregistered 0x7f0b0012
int string hello_world 0x7f0b0024
int string hint_new_pin 0x7f0b0042
int string info_label_device 0x7f0b0086
int string info_label_imei 0x7f0b0085
int string info_label_imsi 0x7f0b008a
int string info_label_model 0x7f0b0087
int string info_label_no_sim 0x7f0b0088
int string info_label_operator 0x7f0b0089
int string info_label_os 0x7f0b008b
int string info_label_rooted 0x7f0b008c
int string info_label_rooted_answer_no 0x7f0b008e
int string info_label_rooted_answer_yes 0x7f0b008d
int string info_label_device 0x7f0b0087
int string info_label_imei 0x7f0b0086
int string info_label_imsi 0x7f0b008b
int string info_label_model 0x7f0b0088
int string info_label_no_sim 0x7f0b0089
int string info_label_operator 0x7f0b008a
int string info_label_os 0x7f0b008c
int string info_label_rooted 0x7f0b008d
int string intent_extra_fresh_reg_flag 0x7f0b004c
int string intent_extra_from_activity 0x7f0b0048
int string intent_extra_main_activity 0x7f0b004a
@ -591,27 +590,28 @@ int string intent_extra_message 0x7f0b004b
int string intent_extra_notification 0x7f0b004e
int string intent_extra_regid 0x7f0b0049
int string intent_extra_username 0x7f0b004d
int string menu_item_change_ip 0x7f0b0082
int string menu_item_change_pin 0x7f0b0081
int string menu_item_change_ip 0x7f0b0083
int string menu_item_change_pin 0x7f0b0082
int string menu_item_ip 0x7f0b003a
int string menu_item_log 0x7f0b003b
int string menu_item_operations 0x7f0b0038
int string menu_item_phone_info 0x7f0b0080
int string menu_item_phone_info 0x7f0b0081
int string menu_item_pin 0x7f0b0039
int string no 0x7f0b008f
int string options_clear 0x7f0b001f
int string options_exit 0x7f0b0020
int string options_register 0x7f0b001c
int string options_unregister 0x7f0b001d
int string register_button_text 0x7f0b007e
int string register_text_view_text_unregister 0x7f0b007f
int string registration_heading 0x7f0b0098
int string register_button_text 0x7f0b007f
int string register_text_view_text_unregister 0x7f0b0080
int string registration_heading 0x7f0b0099
int string server_register_error 0x7f0b001a
int string server_registered 0x7f0b0018
int string server_registering 0x7f0b0017
int string server_unregister_error 0x7f0b001b
int string server_unregistered 0x7f0b0019
int string server_util_req_type_get 0x7f0b0096
int string server_util_req_type_post 0x7f0b0095
int string server_util_req_type_get 0x7f0b0097
int string server_util_req_type_post 0x7f0b0096
int string shared_pref_client_id 0x7f0b005f
int string shared_pref_client_secret 0x7f0b0060
int string shared_pref_device_active 0x7f0b005e
@ -637,7 +637,7 @@ int string title_activity_authentication_error 0x7f0b0033
int string title_activity_available_operations 0x7f0b0037
int string title_activity_display_device_info 0x7f0b0025
int string title_activity_entry 0x7f0b0028
int string title_activity_log 0x7f0b0097
int string title_activity_log 0x7f0b0098
int string title_activity_notification 0x7f0b0034
int string title_activity_notify 0x7f0b0035
int string title_activity_register_successful 0x7f0b0027
@ -653,6 +653,7 @@ int string toast_message_enter_server_address 0x7f0b0045
int string toast_message_pin_change_failed 0x7f0b0044
int string toast_message_pin_change_success 0x7f0b0043
int string url 0x7f0b0026
int string yes 0x7f0b008e
int style AppBaseTheme 0x7f0c0059
int style AppTheme 0x7f0c005a
int style ButtonText 0x7f0c005f

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1015 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
</lint>

View File

@ -71,7 +71,7 @@
</LinearLayout>
<!-- Login Form Ends -->
<TextView android:id="@+id/txtVw"
<TextView android:id="@+id/severAddressLabel"
android:layout_width="wrap_content"
android:layout_below="@+id/linearLayout1"
android:layout_marginLeft="10dp"
@ -87,7 +87,7 @@
android:id="@+id/etServerIP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txtVw"
android:layout_below="@+id/severAddressLabel"
android:layout_centerHorizontal="true"
android:layout_marginLeft="22dp"
android:ems="10"
@ -105,18 +105,7 @@
android:background="@drawable/btn_orange"
android:layout_below="@+id/etServerIP"
android:text="Start Registration" />
<TextView
android:id="@+id/incompatibleError"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone"
android:layout_margin="10dp"
android:textColor="@android:color/background_dark"
android:gravity="center"
android:text="Welcome" />
</RelativeLayout>
</ScrollView>

View File

@ -124,6 +124,7 @@
<string name="dialog_pin_confirmation_end"> as your PIN code?</string>
<string name="dialog_init_confirmation">You have set your domain to </string>
<string name="dialog_init_middle">Your device is a </string>
<string name="dialog_init_device_type">Device type</string>
<string name="dialog_init_end"> device, are you sure you want to proceed ?</string>
<string name="dialog_init_end_general"> are you sure you want to proceed ?</string>
<string name="dialog_unregister">You are trying to unregister from EMM. Are you sure you want to proceed ?</string>
@ -150,8 +151,8 @@
<string name="info_label_imsi">IMSI:</string>
<string name="info_label_os">OS:</string>
<string name="info_label_rooted">Rooted:</string>
<string name="info_label_rooted_answer_yes">Yes</string>
<string name="info_label_rooted_answer_no">No</string>
<string name="yes">Yes</string>
<string name="no">No</string>
<!-- BUTTON TITLES -->
<string name="button_ok">OK</string>

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import android.os.Bundle;

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import java.util.HashMap;
@ -176,8 +176,8 @@ public class AlreadyRegisteredActivity extends SherlockActivity implements APIRe
AlertDialog.Builder builder = new AlertDialog.Builder(
AlreadyRegisteredActivity.this);
builder.setMessage(getResources().getString(R.string.dialog_unregister))
.setNegativeButton(getResources().getString(R.string.info_label_rooted_answer_yes), dialogClickListener)
.setPositiveButton(getResources().getString(R.string.info_label_rooted_answer_no), dialogClickListener).show();
.setNegativeButton(getResources().getString(R.string.yes), dialogClickListener)
.setPositiveButton(getResources().getString(R.string.no), dialogClickListener).show();
break;
case TAG_BTN_OPTIONS:
@ -418,7 +418,6 @@ public class AlreadyRegisteredActivity extends SherlockActivity implements APIRe
R.string.error_internal_server),
getResources().getString(R.string.button_ok),
null);
alertDialog.show();
} else {
Log.e(TAG, "The result is : " + result);
Log.e(TAG, "The responseStatus is : " + responseStatus);

View File

@ -17,6 +17,7 @@ package org.wso2.cdm.agent;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import org.wso2.cdm.agent.R;
@ -28,9 +29,9 @@ import org.wso2.cdm.agent.services.AlarmReceiver;
import org.wso2.cdm.agent.utils.CommonDialogUtils;
import org.wso2.cdm.agent.utils.CommonUtilities;
import org.wso2.cdm.agent.utils.HTTPConnectorUtils;
import org.wso2.cdm.agent.utils.Preference;
import org.wso2.cdm.agent.utils.ServerUtils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.Dialog;
@ -64,6 +65,9 @@ import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.google.android.gcm.GCMRegistrar;
/**
* Activity that captures username, password and device ownership details
*/
public class AuthenticationActivity extends SherlockActivity implements APIAccessCallBack,
APIResultCallBack {
@ -73,19 +77,16 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
EditText username;
EditText txtDomain;
EditText password;
// TextView txtLoadingEULA;
RadioButton radioBYOD, radioCOPE;
String deviceType;
Context context;
String isAgreed = "";
String senderId = "";
String eula = "";
String usernameForRegister = "";
String usernameVal;
String passwordVal;
ProgressDialog progressDialog;
AlertDialog.Builder alertDialog;
private final int TAG_BTN_AUTHENTICATE = 0;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -94,10 +95,11 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
getSupportActionBar().setCustomView(R.layout.custom_sherlock_bar);
getSupportActionBar().setTitle(R.string.empty_app_title);
View homeIcon =
findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
? android.R.id.home
: R.id.abs__home);
((View) homeIcon.getParent()).setVisibility(View.GONE);
(View) findViewById(
Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
? android.R.id.home
: R.id.abs__home).getParent();
homeIcon.setVisibility(View.GONE);
context = AuthenticationActivity.this;
deviceType = getResources().getString(R.string.device_enroll_type_byod);
@ -110,8 +112,8 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
txtDomain.requestFocus();
authenticate = (Button) findViewById(R.id.btnRegister);
authenticate.setEnabled(false);
authenticate.setTag(TAG_BTN_AUTHENTICATE);
authenticate.setOnClickListener(onClickAuthenticate);
// change button color background till user enters a valid input
authenticate.setBackground(getResources().getDrawable(R.drawable.btn_grey));
authenticate.setTextColor(getResources().getColor(R.color.black));
@ -155,19 +157,37 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
public void onClick(View view) {
if (username.getText() != null && !username.getText().toString().trim().equals("") &&
password.getText() != null && !password.getText().toString().trim().equals("")) {
passwordVal = password.getText().toString().trim();
if (txtDomain.getText() != null &&
!txtDomain.getText().toString().trim().equals("")) {
usernameVal =
username.getText().toString().trim() + "@" +
txtDomain.getText().toString().trim();
} else {
usernameVal = username.getText().toString().trim();
}
if (radioBYOD.isChecked()) {
deviceType = getResources().getString(R.string.device_enroll_type_byod);
} else {
deviceType = getResources().getString(R.string.device_enroll_type_cope);
}
AlertDialog.Builder builder = new AlertDialog.Builder(AuthenticationActivity.this);
builder.setMessage(getResources().getString(R.string.dialog_init_middle) + " " +
deviceType + " " +
getResources().getString(R.string.dialog_init_end))
.setNegativeButton(getResources().getString(R.string.info_label_rooted_answer_yes),
dialogClickListener)
.setPositiveButton(getResources().getString(R.string.info_label_rooted_answer_no),
dialogClickListener).show();
alertDialog =
CommonDialogUtils.getAlertDialogWithTwoButtonAndTitle(context,
getResources().getString(R.string.dialog_init_device_type),
getResources().getString(R.string.dialog_init_middle) +
" " +
deviceType +
" " +
getResources().getString(R.string.dialog_init_end),
getResources().getString(R.string.yes),
getResources().getString(R.string.no),
dialogClickListener,
dialogClickListener);
alertDialog.show();
} else {
if (username.getText() != null && !username.getText().toString().trim().equals("")) {
Toast.makeText(context,
@ -183,6 +203,265 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
}
};
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
dialog.dismiss();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
startAuthentication();
break;
}
}
};
/**
* Start authentication process.
*/
public void startAuthentication() {
Preference.put(context, getResources().getString(R.string.shared_pref_reg_type), deviceType);
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
authenticate();
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(context);
}
}
/**
* Communicating with the server to authenticate user.
*/
private void authenticate() {
AsyncTask<Void, Void, Map<String, String>> mLicenseTask =
new AsyncTask<Void, Void, Map<String, String>>() {
@Override
protected Map<String, String> doInBackground(Void... params) {
Map<String, String> response =
null;
Map<String, String> requestParametres =
new HashMap<String, String>();
requestParametres.put("username",
usernameVal);
requestParametres.put("password",
passwordVal);
response =
HTTPConnectorUtils.postData(context,
CommonUtilities.SERVER_URL +
CommonUtilities.SERVER_AUTHENTICATION_ENDPOINT,
requestParametres);
return response;
}
@Override
protected void onPreExecute() {
progressDialog =
ProgressDialog.show(context,
getResources().getString(R.string.dialog_authenticate),
getResources().getString(R.string.dialog_please_wait),
true);
};
@Override
protected void onPostExecute(Map<String, String> result) {
JSONObject response =
null;
if (result != null) {
String responseStatus =
result.get("status");
try {
if (responseStatus != null) {
if (responseStatus.equalsIgnoreCase(CommonUtilities.REQUEST_SUCCESSFUL)) {
response =
new JSONObject(
result.get("response"));
senderId =
response.getString("senderId");
getLicense();
} else if (responseStatus.equalsIgnoreCase(CommonUtilities.UNAUTHORIZED_ACCESS)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_authentication_failed),
getResources().getString(R.string.button_ok),
dialogClickListener);
} else if (responseStatus.trim()
.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
showInternalServerErrorMessage();
} else {
Log.e(TAG,
"Status: " +
responseStatus);
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG,
"The value of status is null in authenticate()");
showAuthCommonErrorMessage();
}
} catch (JSONException e) {
Log.e(TAG,
e.getMessage());
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG,
"The result is null in authenticate()");
showAuthCommonErrorMessage();
}
}
};
mLicenseTask.execute();
}
/**
* Initialize get device license agreement. Check if the user has already
* agreed
* to license agreement
*/
private void getLicense() {
String isAgreed =
Preference.get(context,
getResources().getString(R.string.shared_pref_isagreed));
String type =
Preference.get(context,
getResources().getString(R.string.shared_pref_reg_type));
// No need to display license for COPE devices
if (type.trim().equals(getResources().getString(R.string.device_enroll_type_byod))) {
if (isAgreed == null) {
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("domain", txtDomain.getText().toString().trim());
// Get License
OnCancelListener cancelListener = new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.error_enrollment_failed),
getResources().getString(R.string.button_ok),
null);
}
};
progressDialog =
CommonDialogUtils.showPrgressDialog(context,
getResources().getString(R.string.dialog_license_agreement),
getResources().getString(R.string.dialog_please_wait),
cancelListener);
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
getLicenseFromServer();
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(context);
}
} else {
loadPincodeAcitvity();
}
} else {
loadPincodeAcitvity();
}
}
/**
* Retriever license agreement details from the server
*/
private void getLicenseFromServer() {
AsyncTask<Void, Void, Map<String, String>> mLicenseTask =
new AsyncTask<Void, Void, Map<String, String>>() {
@Override
protected Map<String, String> doInBackground(Void... params) {
Map<String, String> response =
null;
response =
HTTPConnectorUtils.postData(context,
CommonUtilities.SERVER_URL +
CommonUtilities.LICENSE_ENDPOINT,
null);
return response;
}
@Override
protected void onPreExecute() {
};
@Override
protected void onPostExecute(Map<String, String> result) {
CommonDialogUtils.stopProgressDialog(progressDialog);
manipulateLicenseResponse(result);
}
};
mLicenseTask.execute();
}
/**
* Manipulates the License agreement response received from server.
*
* @param result
* the result of the license agreement request
*/
private void manipulateLicenseResponse(Map<String, String> result) {
String responseStatus;
CommonDialogUtils.stopProgressDialog(progressDialog);
String licenseAgreement = "";
if (result != null) {
responseStatus = result.get(CommonUtilities.STATUS_KEY);
if (responseStatus.equals(CommonUtilities.REQUEST_SUCCESSFUL)) {
licenseAgreement = result.get("response");
if (licenseAgreement != null) {
Preference.put(context, getResources().getString(R.string.shared_pref_eula),
licenseAgreement);
showAgreement(licenseAgreement, CommonUtilities.EULA_TITLE);
} else {
showErrorMessage(getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.error_enrollment_failed));
}
} else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Log.e(TAG, "The result is : " + result);
showInternalServerErrorMessage();
} else {
showEnrollementFailedErrorMessage();
}
} else {
Log.e(TAG, "The result is null in manipulateLicenseResponse()");
showEnrollementFailedErrorMessage();
}
}
public void showErrorMessage(String message, String title) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message);
@ -199,7 +478,7 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
alert.show();
}
public void showAlert(String message, String title) {
public void showAgreement(String message, String title) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_terms_popup);
dialog.setTitle(CommonUtilities.EULA_TITLE);
@ -218,12 +497,8 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences mainPref =
AuthenticationActivity.this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor = mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_isagreed), "1");
editor.commit();
Preference.put(context, getResources().getString(R.string.shared_pref_isagreed),
"1");
dialog.dismiss();
loadPincodeAcitvity();
}
@ -253,6 +528,13 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
dialog.show();
}
private void loadPincodeAcitvity() {
Intent intent = new Intent(AuthenticationActivity.this, PinCodeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(getResources().getString(R.string.intent_extra_username), usernameVal);
startActivity(intent);
}
public void cancelEntry() {
SharedPreferences mainPref =
context.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
@ -273,22 +555,6 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
dialog.dismiss();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
startAuthentication();
break;
}
}
};
public void showAlertSingle(String message, String title) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message);
@ -332,164 +598,6 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
alert.show();
}
/**
* Start Authentication.
*/
public void startAuthentication() {
final Context context = AuthenticationActivity.this;
SharedPreferences mainPref =
context.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor = mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_reg_type), deviceType);
editor.commit();
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
getOauthClientInfo();
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(AuthenticationActivity.this);
}
}
private void getOauthClientInfo() {
AsyncTask<Void, Void, Map<String, String>> mLicenseTask =
new AsyncTask<Void, Void, Map<String, String>>() {
@Override
protected Map<String, String> doInBackground(Void... params) {
Map<String, String> response =
null;
if (txtDomain.getText() != null &&
!txtDomain.getText()
.toString()
.trim()
.equals("")) {
response =
HTTPConnectorUtils.getClientKey(username.getText()
.toString()
.trim() +
"@" +
txtDomain.getText()
.toString()
.trim(),
password.getText()
.toString()
.trim(),
context);
} else {
response =
HTTPConnectorUtils.getClientKey(username.getText()
.toString()
.trim(),
password.getText()
.toString()
.trim(),
context);
}
return response;
}
@Override
protected void onPreExecute() {
progressDialog =
ProgressDialog.show(AuthenticationActivity.this,
getResources().getString(R.string.dialog_authenticate),
getResources().getString(R.string.dialog_please_wait),
true);
};
@Override
protected void onPostExecute(Map<String, String> result) {
JSONObject response =
null;
String clienKey = "";
String clientSecret = "";
if (result != null) {
String responseStatus =
result.get("status");
try {
if (responseStatus != null) {
if (responseStatus.equalsIgnoreCase(CommonUtilities.REQUEST_SUCCESSFUL)) {
response =
new JSONObject(
result.get("response"));
clienKey =
response.getString("clientkey");
clientSecret =
response.getString("clientsecret");
SharedPreferences mainPref =
AuthenticationActivity.this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor =
mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_client_id),
clienKey);
editor.putString(getResources().getString(R.string.shared_pref_client_secret),
clientSecret);
editor.commit();
CommonUtilities.CLIENT_ID =
clienKey;
CommonUtilities.CLIENT_SECRET =
clientSecret;
initializeIDPLib(clienKey,
clientSecret);
} else if (responseStatus.equalsIgnoreCase(CommonUtilities.UNAUTHORIZED_ACCESS)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_authentication_failed),
getResources().getString(R.string.button_ok),
dialogClickListener);
alertDialog.show();
} else if (responseStatus.trim()
.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
showInternalServerErrorMessage();
} else {
Log.e(TAG,
"Status: " +
responseStatus);
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG,
"The value of status is null in getOauthClientInfo()");
showAuthCommonErrorMessage();
}
} catch (JSONException e) {
Log.e(TAG,
e.getMessage());
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG,
"The result is null in getOauthClientInfo()");
showAuthCommonErrorMessage();
}
}
};
mLicenseTask.execute();
}
/**
* Initialize the Android IDP sdk by passing user credentials,client ID and
* client secret.
@ -523,7 +631,6 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
}
}
@SuppressLint("NewApi")
public void enableSubmitIfReady() {
boolean isReady = false;
@ -611,50 +718,138 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
}
}
/**
* Manipulates the License agreement response.
*
* @param result
* the result of the license agreement request
*/
private void manipulateLicenseResponse(Map<String, String> result) {
String responseStatus;
private void showEnrollementFailedErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
Log.e("get licence", "res");
String licenseAgreement = "";
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.error_enrollment_failed),
getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.button_ok),
senderIdFailedClickListener);
}
if (result != null) {
responseStatus = result.get(CommonUtilities.STATUS_KEY);
if (responseStatus.equals(CommonUtilities.REQUEST_SUCCESSFUL)) {
licenseAgreement = result.get("response");
private void managePushNotification(String mode, float interval, Editor editor) {
if (mode.trim().toUpperCase().contains("LOCAL")) {
CommonUtilities.LOCAL_NOTIFICATIONS_ENABLED = true;
CommonUtilities.GCM_ENABLED = false;
String androidID = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
// if (senderId == null || senderId.equals("")) {
editor.putString(getResources().getString(R.string.shared_pref_regId), androidID);
// }
editor.commit();
startLocalNotification(interval);
} else if (mode.trim().toUpperCase().contains("GCM")) {
CommonUtilities.LOCAL_NOTIFICATIONS_ENABLED = false;
CommonUtilities.GCM_ENABLED = true;
// editor.commit();
GCMRegistrar.register(context, CommonUtilities.SENDER_ID);
}
// if (senderId!=null && !senderId.equals("")) {
// CommonUtilities.GCM_ENABLED = true;
// GCMRegistrar.register(context, CommonUtilities.SENDER_ID);
// }
}
@Override
public void onAPIAccessRecive(String status) {
if (status != null) {
if (status.trim().equals(CommonUtilities.REQUEST_SUCCESSFUL)) {
SharedPreferences mainPref =
AuthenticationActivity.this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor = mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_eula),
licenseAgreement);
editor.putString(getResources().getString(R.string.shared_pref_username),
usernameForRegister);
editor.commit();
if (licenseAgreement != null &&
(!licenseAgreement.equals(CommonUtilities.EMPTY_STRING) && !licenseAgreement.equals(CommonUtilities.NULL_STRING))) {
showAlert(licenseAgreement, CommonUtilities.EULA_TITLE);
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("domain", txtDomain.getText().toString().trim());
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
// Call get sender ID API.
Log.e("sender id ", "call");
ServerUtils.callSecuredAPI(AuthenticationActivity.this,
CommonUtilities.SENDER_ID_ENDPOINT,
CommonUtilities.GET_METHOD, requestParams,
AuthenticationActivity.this,
CommonUtilities.SENDER_ID_REQUEST_CODE);
} else {
showErrorMessage(getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.error_enrollment_failed));
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(AuthenticationActivity.this);
}
} else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Log.e(TAG, "The result is : " + result);
} else if (status.trim().equals(CommonUtilities.AUTHENTICATION_FAILED)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_authentication_failed),
getResources().getString(R.string.button_ok),
dialogClickListener);
} else if (status.trim().equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
showInternalServerErrorMessage();
} else {
showEnrollementFailedErrorMessage();
Log.e(TAG, "Status: " + status);
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG, "The result is null in manipulateLicenseResponse()");
showEnrollementFailedErrorMessage();
Log.e(TAG, "The value of status is null in onAPIAccessRecive()");
showAuthCommonErrorMessage();
}
}
private void showInternalServerErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_connection_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
null);
}
/**
* Shows common error message for authentication.
*
*/
private void showAuthCommonErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_for_all_unknown_authentication_failures),
getResources().getString(R.string.button_ok),
null);
}
private void startLocalNotification(Float interval) {
long firstTime = SystemClock.elapsedRealtime();
firstTime += 1 * 1000;
Intent downloader = new Intent(context, AlarmReceiver.class);
PendingIntent recurringDownload =
PendingIntent.getBroadcast(context,
0,
downloader,
PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Float seconds = interval;
if (interval < 1.0) {
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
seconds.intValue(), recurringDownload);
} else {
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
seconds.intValue(), recurringDownload);
}
}
/**
@ -718,217 +913,4 @@ public class AuthenticationActivity extends SherlockActivity implements APIAcces
}
private void showEnrollementFailedErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.error_enrollment_failed),
getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.button_ok),
senderIdFailedClickListener);
alertDialog.show();
}
private void managePushNotification(String mode, float interval, Editor editor) {
if (mode.trim().toUpperCase().contains("LOCAL")) {
CommonUtilities.LOCAL_NOTIFICATIONS_ENABLED = true;
CommonUtilities.GCM_ENABLED = false;
String androidID = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
// if (senderId == null || senderId.equals("")) {
editor.putString(getResources().getString(R.string.shared_pref_regId), androidID);
// }
editor.commit();
startLocalNotification(interval);
} else if (mode.trim().toUpperCase().contains("GCM")) {
CommonUtilities.LOCAL_NOTIFICATIONS_ENABLED = false;
CommonUtilities.GCM_ENABLED = true;
// editor.commit();
GCMRegistrar.register(context, CommonUtilities.SENDER_ID);
}
// if (senderId!=null && !senderId.equals("")) {
// CommonUtilities.GCM_ENABLED = true;
// GCMRegistrar.register(context, CommonUtilities.SENDER_ID);
// }
}
/**
* Gets device License agreement.
*
*/
private void getLicense() {
Log.e("get licence", "get licence");
SharedPreferences mainPref =
context.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
isAgreed = mainPref.getString(getResources().getString(R.string.shared_pref_isagreed), "");
String eula = mainPref.getString(getResources().getString(R.string.shared_pref_eula), "");
String type =
mainPref.getString(getResources().getString(R.string.shared_pref_reg_type),
"");
if (type.trim().equals(getResources().getString(R.string.device_enroll_type_byod))) {
if (!isAgreed.equals("1")) {
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("domain", txtDomain.getText().toString().trim());
// Get License
OnCancelListener cancelListener = new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
showAlertSingle(getResources().getString(R.string.error_enrollment_failed_detail),
getResources().getString(R.string.error_enrollment_failed));
// finish();
}
};
progressDialog =
CommonDialogUtils.showPrgressDialog(AuthenticationActivity.this,
getResources().getString(R.string.dialog_license_agreement),
getResources().getString(R.string.dialog_please_wait),
cancelListener);
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
// Call device license agreement API.
ServerUtils.callSecuredAPI(AuthenticationActivity.this,
CommonUtilities.LICENSE_ENDPOINT,
CommonUtilities.GET_METHOD, requestParams,
AuthenticationActivity.this,
CommonUtilities.LICENSE_REQUEST_CODE);
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(AuthenticationActivity.this);
}
} else {
loadPincodeAcitvity();
}
} else {
loadPincodeAcitvity();
}
}
private void loadPincodeAcitvity() {
Intent intent = new Intent(AuthenticationActivity.this, PinCodeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
if (txtDomain.getText() != null && !txtDomain.getText().toString().trim().equals("")) {
intent.putExtra(getResources().getString(R.string.intent_extra_username),
username.getText().toString().trim() + "@" +
txtDomain.getText().toString().trim());
} else {
intent.putExtra(getResources().getString(R.string.intent_extra_username),
username.getText().toString().trim());
}
startActivity(intent);
}
@Override
public void onAPIAccessRecive(String status) {
if (status != null) {
if (status.trim().equals(CommonUtilities.REQUEST_SUCCESSFUL)) {
SharedPreferences mainPref =
this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor = mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_username),
usernameForRegister);
editor.commit();
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("domain", txtDomain.getText().toString().trim());
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
// Call get sender ID API.
Log.e("sender id ", "call");
ServerUtils.callSecuredAPI(AuthenticationActivity.this,
CommonUtilities.SENDER_ID_ENDPOINT,
CommonUtilities.GET_METHOD, requestParams,
AuthenticationActivity.this,
CommonUtilities.SENDER_ID_REQUEST_CODE);
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(AuthenticationActivity.this);
}
} else if (status.trim().equals(CommonUtilities.AUTHENTICATION_FAILED)) {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_authentication_failed),
getResources().getString(R.string.button_ok),
dialogClickListener);
alertDialog.show();
} else if (status.trim().equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
showInternalServerErrorMessage();
} else {
Log.e(TAG, "Status: " + status);
showAuthCommonErrorMessage();
}
} else {
Log.e(TAG, "The value of status is null in onAPIAccessRecive()");
showAuthCommonErrorMessage();
}
}
private void showInternalServerErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_connection_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
null);
alertDialog.show();
}
/**
* Shows common error message for authentication.
*
*/
private void showAuthCommonErrorMessage() {
CommonDialogUtils.stopProgressDialog(progressDialog);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_authentication_error),
getResources().getString(R.string.error_for_all_unknown_authentication_failures),
getResources().getString(R.string.button_ok),
null);
alertDialog.show();
}
private void startLocalNotification(Float interval) {
long firstTime = SystemClock.elapsedRealtime();
firstTime += 1 * 1000;
Intent downloader = new Intent(context, AlarmReceiver.class);
PendingIntent recurringDownload =
PendingIntent.getBroadcast(context,
0,
downloader,
PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Float seconds = interval;
if (interval < 1.0) {
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
seconds.intValue(), recurringDownload);
} else {
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
seconds.intValue(), recurringDownload);
}
}
}

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import android.app.Activity;

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import org.json.JSONArray;
@ -78,7 +78,7 @@ public class DisplayDeviceInfoActivity extends Activity {
sdk.setText(getResources().getString(R.string.info_label_imsi)+" "+operators);
}
os.setText(getResources().getString(R.string.info_label_os)+" "+deviceInfo.getOsVersion());
root.setText(getResources().getString(R.string.info_label_rooted)+" "+(deviceInfo.isRooted()?getResources().getString(R.string.info_label_rooted_answer_yes):getResources().getString(R.string.info_label_rooted_answer_no)));
root.setText(getResources().getString(R.string.info_label_rooted)+" "+(deviceInfo.isRooted()?getResources().getString(R.string.yes):getResources().getString(R.string.no)));
Bundle extras = getIntent().getExtras();
if (extras != null) {

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import org.wso2.cdm.agent.R;

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
@ -35,7 +35,9 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.wso2.cdm.agent.R;
import org.wso2.cdm.agent.utils.Preference;
public class PinCodeActivity extends Activity {
private TextView lblPin;
@ -47,13 +49,14 @@ public class PinCodeActivity extends Activity {
private final int TAG_BTN_SET_PIN = 0;
private String FROM_ACTIVITY = null;
private String MAIN_ACTIVITY = null;
Context context;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pin_code);
context=PinCodeActivity.this;
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.containsKey(getResources().getString(R.string.intent_extra_username))) {
@ -73,7 +76,6 @@ public class PinCodeActivity extends Activity {
}
}
//initializeComponents();
lblPin = (TextView) findViewById(R.id.lblPin);
txtPin = (EditText) findViewById(R.id.txtPinCode);
txtOldPin = (EditText) findViewById(R.id.txtOldPinCode);
@ -146,22 +148,6 @@ public class PinCodeActivity extends Activity {
}
}
/**
* Initializes UI components.
*
*/
private void initializeComponents() {
lblPin = (TextView) findViewById(R.id.lblPin);
txtPin = (EditText) findViewById(R.id.txtPinCode);
txtOldPin = (EditText) findViewById(R.id.txtOldPinCode);
btnPin = (Button) findViewById(R.id.btnSetPin);
btnPin.setTag(TAG_BTN_SET_PIN);
btnPin.setOnClickListener(onClickListener_BUTTON_CLICKED);
btnPin.setEnabled(false);
btnPin.setBackground(getResources().getDrawable(R.drawable.btn_grey));
btnPin.setTextColor(getResources().getColor(R.color.black));
}
OnClickListener onClickListener_BUTTON_CLICKED = new OnClickListener() {
@Override
@ -177,8 +163,8 @@ public class PinCodeActivity extends Activity {
getResources().getString(R.string.dialog_pin_confirmation)
+ " " +txtPin.getText().toString() + " "
+ getResources().getString(R.string.dialog_pin_confirmation_end))
.setPositiveButton(getResources().getString(R.string.info_label_rooted_answer_yes), dialogClickListener)
.setNegativeButton(getResources().getString(R.string.info_label_rooted_answer_no), dialogClickListener).show();
.setPositiveButton(getResources().getString(R.string.yes), dialogClickListener)
.setNegativeButton(getResources().getString(R.string.no), dialogClickListener).show();
break;
default:
break;
@ -203,12 +189,7 @@ public class PinCodeActivity extends Activity {
};
public void savePin() {
SharedPreferences mainPref = this.getSharedPreferences(getResources().getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
Editor editor = mainPref.edit();
editor.putString(getResources().getString(R.string.shared_pref_pin), txtPin.getText().toString().trim());
editor.commit();
Preference.put(context, getResources().getString(R.string.shared_pref_pin), txtPin.getText().toString().trim());
if(FROM_ACTIVITY != null && (FROM_ACTIVITY.equals(AlreadyRegisteredActivity.class.getSimpleName()))){
Toast.makeText(getApplicationContext(), getResources().getString(R.string.toast_message_pin_change_success), Toast.LENGTH_SHORT).show();

View File

@ -1,19 +1,20 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent;
import java.util.HashMap;
import java.util.Map;
@ -23,108 +24,68 @@ import org.wso2.cdm.agent.R;
import org.wso2.cdm.agent.api.DeviceInfo;
import org.wso2.cdm.agent.api.PhoneState;
import org.wso2.cdm.agent.proxy.APIResultCallBack;
import org.wso2.cdm.agent.services.WSO2DeviceAdminReceiver;
import org.wso2.cdm.agent.utils.CommonDialogUtils;
import org.wso2.cdm.agent.utils.CommonUtilities;
import org.wso2.cdm.agent.utils.HTTPConnectorUtils;
import org.wso2.cdm.agent.utils.Preference;
import org.wso2.cdm.agent.utils.ServerUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class RegistrationActivity extends Activity implements APIResultCallBack {
private String TAG = RegistrationActivity.class.getSimpleName();
String regId = "";
String username = "";
TextView mDisplay;
Context context;
boolean regState = false;
boolean successFlag = false;
Button btnEnroll = null;
RelativeLayout btnLayout = null;
ProgressDialog progressDialog;
AlertDialog.Builder alertDialog;
static final int ACTIVATION_REQUEST = 47; // identifies our request id
DevicePolicyManager devicePolicyManager;
ComponentName demoDeviceAdmin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
demoDeviceAdmin = new ComponentName(this, WSO2DeviceAdminReceiver.class);
context = this;
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.containsKey(getResources().getString(
R.string.intent_extra_username))) {
username = extras.getString(getResources().getString(
R.string.intent_extra_username));
}
}
SharedPreferences mainPref = this.getSharedPreferences( getResources().getString(R.string.shared_pref_package), Context.MODE_PRIVATE);
regId = mainPref.getString(getResources().getString(R.string.shared_pref_regId), "");
//Enroll automatically
final Context context = RegistrationActivity.this;
private String TAG = RegistrationActivity.class.getSimpleName();
String regId = "";
String username = "";
Context context;
boolean regState = false;
ProgressDialog progressDialog;
AlertDialog.Builder alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
regId = Preference.get(context,getResources().getString(R.string.shared_pref_regId));
registerDevice();
btnEnroll = (Button)findViewById(R.id.btnEnroll);
btnLayout = (RelativeLayout)findViewById(R.id.enrollPanel);
//ImageView optionBtn = (ImageView) findViewById(R.id.option_button);
btnEnroll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//registrateDevice();
}
});
}
}
private void registerDevice() {
progressDialog = CommonDialogUtils.showPrgressDialog(
RegistrationActivity.this,
getResources().getString(R.string.dialog_enrolling),
getResources().getString(R.string.dialog_please_wait), null);
progressDialog =
CommonDialogUtils.showPrgressDialog(RegistrationActivity.this,
getResources().getString(R.string.dialog_enrolling),
getResources().getString(R.string.dialog_please_wait),
null);
progressDialog.show();
DeviceInfo deviceInfo = new DeviceInfo(RegistrationActivity.this);
JSONObject jsObject = new JSONObject();
String osVersion = "";
SharedPreferences mainPref = RegistrationActivity.this
.getSharedPreferences(RegistrationActivity.this.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
String type = mainPref.getString(RegistrationActivity.this
.getResources().getString(R.string.shared_pref_reg_type), "");
SharedPreferences mainPref =
RegistrationActivity.this.getSharedPreferences(RegistrationActivity.this.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
String type =
mainPref.getString(RegistrationActivity.this.getResources()
.getString(R.string.shared_pref_reg_type),
"");
osVersion = deviceInfo.getOsVersion();
try {
@ -146,15 +107,15 @@ public class RegistrationActivity extends Activity implements APIResultCallBack
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
// Call device registration API.
ServerUtils.callSecuredAPI(RegistrationActivity.this,
CommonUtilities.REGISTER_ENDPOINT,
CommonUtilities.POST_METHOD, requestParams,
RegistrationActivity.this,
CommonUtilities.REGISTER_REQUEST_CODE);
sendDeviceDetails(requestParams);
// ServerUtils.callSecuredAPI(RegistrationActivity.this,
// CommonUtilities.REGISTER_ENDPOINT,
// CommonUtilities.POST_METHOD, requestParams,
// RegistrationActivity.this,
// CommonUtilities.REGISTER_REQUEST_CODE);
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils
.showNetworkUnavailableMessage(RegistrationActivity.this);
CommonDialogUtils.showNetworkUnavailableMessage(RegistrationActivity.this);
}
} catch (JSONException e) {
@ -163,38 +124,116 @@ public class RegistrationActivity extends Activity implements APIResultCallBack
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
finish();
return true;
}
else if (keyCode == KeyEvent.KEYCODE_HOME) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void sendDeviceDetails(final Map<String, String> requestParams) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
AsyncTask<Void, Void, Map<String, String>> mLicenseTask =
new AsyncTask<Void, Void, Map<String, String>>() {
@Override
protected Map<String, String> doInBackground(Void... params) {
Map<String, String> response;
response =
HTTPConnectorUtils.postData(context,CommonUtilities.SERVER_URL+CommonUtilities.REGISTER_ENDPOINT,requestParams
);
return response;
}
@Override
protected void onPreExecute() {};
@Override
protected void onPostExecute(Map<String, String> result) {
CommonDialogUtils.stopProgressDialog(progressDialog);
manipulateDeviceDetails(result);
}
};
mLicenseTask.execute();
}
private void manipulateDeviceDetails(Map<String, String> result){
CommonDialogUtils.stopProgressDialog(progressDialog);
String responseStatus = "";
if (result != null) {
responseStatus = result.get(CommonUtilities.STATUS_KEY);
if (responseStatus.equals(CommonUtilities.REGISTERATION_SUCCESSFUL)) {
Intent intent =
new Intent(RegistrationActivity.this,
AlreadyRegisteredActivity.class);
intent.putExtra(getResources().getString(R.string.intent_extra_fresh_reg_flag),
true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Log.e(TAG, "The value of status is : " + responseStatus);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_connection_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
} else {
Log.e(TAG, "The value of status is : " + responseStatus);
Log.e(TAG, "The responseStatus is : " + responseStatus);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
}
} else {
Log.e(TAG, "The result is null in onReceiveAPIResult(). ");
Log.e(TAG, "The responseStatus is : " + responseStatus);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
finish();
return true;
} else if (keyCode == KeyEvent.KEYCODE_HOME) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
DialogInterface.OnClickListener registrationFailedOKBtnClickListerner = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
loadAuthenticationErrorActivity();
}
};
DialogInterface.OnClickListener registrationFailedOKBtnClickListerner =
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0,
int arg1) {
loadAuthenticationErrorActivity();
}
};
@Override
public void onReceiveAPIResult(Map<String, String> result, int requestCode) {
@ -202,69 +241,47 @@ public class RegistrationActivity extends Activity implements APIResultCallBack
String responseStatus = "";
if (result != null) {
responseStatus = result.get(CommonUtilities.STATUS_KEY);
if (requestCode == CommonUtilities.REGISTER_REQUEST_CODE) {
if (responseStatus.equals(CommonUtilities.REGISTERATION_SUCCESSFUL)) {
Intent intent = new Intent(RegistrationActivity.this,AlreadyRegisteredActivity.class);
intent.putExtra(getResources().getString(R.string.intent_extra_fresh_reg_flag), true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
//finish();
} else if (responseStatus
.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Intent intent =
new Intent(RegistrationActivity.this,
AlreadyRegisteredActivity.class);
intent.putExtra(getResources().getString(R.string.intent_extra_fresh_reg_flag),
true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
// finish();
} else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Log.e(TAG, "The value of status is : " + responseStatus);
alertDialog = CommonDialogUtils
.getAlertDialogWithOneButtonAndTitle(
context,
getResources().getString(
R.string.title_head_connection_error),
getResources().getString(
R.string.error_internal_server),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_connection_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
} else {
Log.e(TAG, "The value of status is : " + responseStatus);
} else {
Log.e(TAG, "The value of status is : " + responseStatus);
Log.e(TAG, "The responseStatus is : " + responseStatus);
alertDialog = CommonDialogUtils
.getAlertDialogWithOneButtonAndTitle(
context,
getResources().getString(
R.string.title_head_registration_error),
getResources().getString(
R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
}
} else {
Log.e(TAG, "The result is : " + result);
Log.e(TAG, "The responseStatus is : " + responseStatus);
alertDialog = CommonDialogUtils
.getAlertDialogWithOneButtonAndTitle(
context,
getResources().getString(
R.string.title_head_registration_error),
getResources().getString(
R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
}
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
}
} else {
Log.e(TAG, "The result is null in onReceiveAPIResult(). ");
Log.e(TAG, "The responseStatus is : " + responseStatus);
alertDialog = CommonDialogUtils
.getAlertDialogWithOneButtonAndTitle(
context,
getResources().getString(
R.string.title_head_registration_error),
getResources().getString(
R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
registrationFailedOKBtnClickListerner);
alertDialog.show();
}
}
@ -273,11 +290,11 @@ public class RegistrationActivity extends Activity implements APIResultCallBack
*
*/
private void loadAuthenticationErrorActivity() {
Intent intent = new Intent(RegistrationActivity.this,AuthenticationErrorActivity.class);
intent.putExtra(getResources().getString(R.string.intent_extra_from_activity), RegistrationActivity.class.getSimpleName());
Intent intent = new Intent(RegistrationActivity.this, AuthenticationErrorActivity.class);
intent.putExtra(getResources().getString(R.string.intent_extra_from_activity),
RegistrationActivity.class.getSimpleName());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
}

View File

@ -15,18 +15,6 @@
*/
package org.wso2.cdm.agent;
import java.util.HashMap;
import java.util.Map;
import org.wso2.cdm.agent.R;
import org.wso2.cdm.agent.api.DeviceInfo;
import org.wso2.cdm.agent.api.PhoneState;
import org.wso2.cdm.agent.proxy.APIResultCallBack;
import org.wso2.cdm.agent.proxy.Token;
import org.wso2.cdm.agent.proxy.TokenCallBack;
import org.wso2.cdm.agent.utils.CommonDialogUtils;
import org.wso2.cdm.agent.utils.CommonUtilities;
import org.wso2.cdm.agent.utils.Preference;
import org.wso2.cdm.agent.utils.ServerUtils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
@ -35,34 +23,38 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class ServerDetails extends Activity implements APIResultCallBack, TokenCallBack {
import org.wso2.cdm.agent.api.DeviceInfo;
import org.wso2.cdm.agent.utils.CommonDialogUtils;
import org.wso2.cdm.agent.utils.CommonUtilities;
import org.wso2.cdm.agent.utils.Preference;
import org.wso2.cdm.agent.utils.Responce;
private String TAG = ServerDetails.class.getSimpleName();
/**
* This the the activity that is used to capture the server's host name.
*/
public class ServerDetails extends Activity {
TextView serverIP;
Button startRegistration;
String fromActivity;
Context context;
DialogInterface.OnClickListener dialogClickListener;
DeviceInfo info;
TextView incompatibleError;
String errorMessage = "";
TextView severAddressLabel;
String senderID = null;
boolean accessFlag = true;
ProgressDialog progressDialog;
String regId;
AlertDialog.Builder alertDialog;
boolean alreadyRegisteredActivityFlag = false;
boolean authenticationActivityFlag = false;
private String TAG = ServerDetails.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -70,50 +62,39 @@ public class ServerDetails extends Activity implements APIResultCallBack, TokenC
setContentView(R.layout.activity_settings);
context = ServerDetails.this;
info = new DeviceInfo(ServerDetails.this);
incompatibleError = (TextView) findViewById(R.id.incompatibleError);
serverIP = (TextView) findViewById(R.id.etServerIP);
severAddressLabel = (TextView) findViewById(R.id.severAddressLabel);
startRegistration = (Button) findViewById(R.id.startRegistration);
Bundle extras = getIntent().getExtras();
if (extras != null) {
if (extras.containsKey(getResources().getString(R.string.intent_extra_from_activity))) {
fromActivity =
extras.getString(getResources().getString(R.string.intent_extra_from_activity));
}
}
// Checking if the device meets minimum requirements
if (!info.isCompatible(context).getCode()) {
accessFlag = false;
incompatibleError.setText(errorMessage);
Responce compatibility = info.isCompatible();
if (!compatibility.getCode()) {
startRegistration.setVisibility(View.GONE);
severAddressLabel.setVisibility(View.GONE);
serverIP.setVisibility(View.GONE);
incompatibleError.setVisibility(View.VISIBLE);
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
errorMessage,
getResources().getString(R.string.error_authorization_failed),
getResources().getString(R.string.button_ok),
null);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context.getApplicationContext(),
getResources().getString(R.string.error_authorization_failed),
getResources().getString(compatibility.getDescriptionResourceID()),
getResources().getString(R.string.button_ok),
onRootedClickListner);
} else {
startRegistration.setVisibility(View.VISIBLE);
serverIP.setVisibility(View.VISIBLE);
incompatibleError.setVisibility(View.GONE);
String ipSaved =
Preference.get(context,
Preference.get(context.getApplicationContext(),
getResources().getString(R.string.shared_pref_ip));
regId = Preference.get(context, getResources().getString(R.string.shared_pref_regId));
regId = Preference.get(context.getApplicationContext().getApplicationContext(), getResources().getString(R.string.shared_pref_regId));
if (ipSaved != null) {
serverIP.setText(ipSaved);
CommonUtilities.setServerURL(ipSaved);
Intent intent = new Intent(ServerDetails.this, AuthenticationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
startAuthenticationActivity();
} else {
serverIP.setText(CommonUtilities.SERVER_IP);
}
// on click handler for start registration
startRegistration.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -123,211 +104,246 @@ public class ServerDetails extends Activity implements APIResultCallBack, TokenC
serverIP.getText().toString() +
" " +
getResources().getString(R.string.dialog_init_end_general))
.setPositiveButton(getResources().getString(R.string.info_label_rooted_answer_yes),
.setPositiveButton(getResources().getString(R.string.yes),
dialogClickListener)
.setNegativeButton(getResources().getString(R.string.info_label_rooted_answer_no),
.setNegativeButton(getResources().getString(R.string.no),
dialogClickListener).show();
}
});
// String clientKey =
// Preference.get(context,
// getResources().getString(R.string.shared_pref_client_id));
// String clientSecret =
// Preference.get(context,
// getResources().getString(R.string.shared_pref_client_secret));
// if (!clientKey.equals("") && !clientSecret.equals("")) {
// CommonUtilities.CLIENT_ID = clientKey;
// CommonUtilities.CLIENT_SECRET = clientSecret;
// }
//
// try {
// if (fromActivity == null) {
// IdentityProxy.getInstance().getToken(this.getApplicationContext(),
// ServerDetails.this,
// CommonUtilities.CLIENT_ID,
// CommonUtilities.CLIENT_SECRET);
// }
//
// } catch (TimeoutException e) {
// e.printStackTrace();
// } catch (Exception e) {
// e.printStackTrace();
// }
dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
if (!serverIP.getText().toString().trim().equals("")) {
CommonUtilities.setServerURL(serverIP.getText().toString().trim());
Preference.put(context.getApplicationContext(),
getResources().getString(R.string.shared_pref_ip),
serverIP.getText().toString().trim());
startAuthenticationActivity();
} else {
Toast.makeText(context.getApplicationContext(),
getResources().getString(R.string.toast_message_enter_server_address),
Toast.LENGTH_LONG).show();
}
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
break;
}
}
};
}
Log.d(TAG, "Server details activity started");
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
DialogInterface.OnClickListener onRootedClickListner = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
if (!serverIP.getText().toString().trim().equals("")) {
CommonUtilities.setServerURL(serverIP.getText().toString().trim());
Preference.put(context, getResources().getString(R.string.shared_pref_ip),
serverIP.getText().toString().trim());
Intent intent =
new Intent(ServerDetails.this, AuthenticationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
Toast.makeText(context,
getResources().getString(R.string.toast_message_enter_server_address),
Toast.LENGTH_LONG).show();
}
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
break;
}
finish();
}
};
@Override
public void onBackPressed() {
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
super.onBackPressed();
private void startAuthenticationActivity() {
Intent intent = new Intent(ServerDetails.this, AuthenticationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && fromActivity != null &&
fromActivity.equals(AlreadyRegisteredActivity.class.getSimpleName())) {
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
this.finish();
return true;
} else if (keyCode == KeyEvent.KEYCODE_BACK && fromActivity != null &&
fromActivity.equals(AuthenticationActivity.class.getSimpleName())) {
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
return true;
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
this.startActivity(i);
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.settings, menu);
return true;
}
public void onReceiveAPIResult(Map<String, String> result, int requestCode) {
String responseStatus = CommonUtilities.EMPTY_STRING;
if (result != null) {
responseStatus = result.get(CommonUtilities.STATUS_KEY);
if (responseStatus.equals(CommonUtilities.REQUEST_SUCCESSFUL) &&
requestCode == CommonUtilities.IS_REGISTERED_REQUEST_CODE) {
Intent intent = null;
if (progressDialog != null) {
progressDialog.dismiss();
}
intent = new Intent(ServerDetails.this, AlreadyRegisteredActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR)) {
Log.e(TAG, "The value of status is null in onAPIAccessRecive()");
String isRegistered =
CommonUtilities.getPref(context,
context.getResources()
.getString(R.string.shared_pref_registered));
if (isRegistered.equals("1")) {
Intent intent = null;
intent = new Intent(ServerDetails.this, AlreadyRegisteredActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_connection_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
null);
Log.e("null", alertDialog.getClass().getPackage().toString());
alertDialog.show();
}
// ServerUtils.clearAppData(context);
} else {
Log.e(TAG, "The value of status is : " + responseStatus);
ServerUtils.clearAppData(context);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_internal_server),
getResources().getString(R.string.button_ok),
null);
alertDialog.show();
}
} else {
Log.e(TAG, "The result is null in onReceiveAPIResult()");
ServerUtils.clearAppData(context);
alertDialog =
CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
getResources().getString(R.string.title_head_registration_error),
getResources().getString(R.string.error_for_all_unknown_registration_failures),
getResources().getString(R.string.button_ok),
null);
alertDialog.show();
}
}
@Override
public void onReceiveTokenResult(Token token, String status) {
if (token != null) {
if (regId != null && !regId.equals("")) {
// Check registration.
isRegistered();
progressDialog =
ProgressDialog.show(ServerDetails.this,
getResources().getString(R.string.dialog_sender_id),
getResources().getString(R.string.dialog_please_wait),
true);
}
}
}
/**
* Checks whether device is registered or NOT.
/*
* (non-Javadoc)
*
* @see android.app.Activity#onDestroy()
*/
private void isRegistered() {
Log.e("isReg", "isReg");
Map<String, String> requestParams = new HashMap<String, String>();
requestParams.put("regid", regId);
Log.e("regID", regId);
// Check network connection availability before calling the API.
if (PhoneState.isNetworkAvailable(context)) {
// Call isRegistered API.
ServerUtils.callSecuredAPI(ServerDetails.this, CommonUtilities.IS_REGISTERED_ENDPOINT,
CommonUtilities.POST_METHOD, requestParams,
ServerDetails.this,
CommonUtilities.IS_REGISTERED_REQUEST_CODE);
} else {
CommonDialogUtils.stopProgressDialog(progressDialog);
CommonDialogUtils.showNetworkUnavailableMessage(ServerDetails.this);
}
@Override
protected void onDestroy() {
//Avoiding memory leaks by destroying context object
context = null;
super.onDestroy();
}
// Old API manager communication code.
//
// Bundle extras = getIntent().getExtras();
//
// if (extras != null) {
// if
// (extras.containsKey(getResources().getString(R.string.intent_extra_from_activity)))
// {
// fromActivity =
// extras.getString(
// getResources().getString(R.string.intent_extra_from_activity));
// }
// }
//
//
// public class ServerDetails extends Activity implements APIResultCallBack,
// TokenCallBack {
// @Override
// public void onBackPressed() {
// Intent i = new Intent();
// i.setAction(Intent.ACTION_MAIN);
// i.addCategory(Intent.CATEGORY_HOME);
// this.startActivity(i);
// super.onBackPressed();
// }
//
// @Override
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// if (keyCode == KeyEvent.KEYCODE_BACK && fromActivity != null &&
// fromActivity.equals(AlreadyRegisteredActivity.class.getSimpleName())) {
// Intent i = new Intent();
// i.setAction(Intent.ACTION_MAIN);
// i.addCategory(Intent.CATEGORY_HOME);
// this.startActivity(i);
// this.finish();
// return true;
// } else if (keyCode == KeyEvent.KEYCODE_BACK && fromActivity != null &&
// fromActivity.equals(AuthenticationActivity.class.getSimpleName())) {
// int pid = android.os.Process.myPid();
// android.os.Process.killProcess(pid);
// return true;
// } else if (keyCode == KeyEvent.KEYCODE_BACK) {
// Intent i = new Intent();
// i.setAction(Intent.ACTION_MAIN);
// i.addCategory(Intent.CATEGORY_HOME);
// this.startActivity(i);
// this.finish();
// return true;
// }
// return super.onKeyDown(keyCode, event);
// }
//
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// // Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.settings, menu);
// return true;
// }
//
// public void onReceiveAPIResult(Map<String, String> result, int
// requestCode) {
// String responseStatus = CommonUtilities.EMPTY_STRING;
// if (result != null) {
// responseStatus = result.get(CommonUtilities.STATUS_KEY);
//
// if (responseStatus.equals(CommonUtilities.REQUEST_SUCCESSFUL) &&
// requestCode == CommonUtilities.IS_REGISTERED_REQUEST_CODE) {
// Intent intent = null;
// if (progressDialog != null) {
// progressDialog.dismiss();
// }
// intent = new Intent(ServerDetails.this, AlreadyRegisteredActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
//
// } else if (responseStatus.equals(CommonUtilities.INTERNAL_SERVER_ERROR))
// {
// Log.e(TAG, "The value of status is null in onAPIAccessRecive()");
//
// String isRegistered =
// CommonUtilities.getPref(context,
// context.getResources()
// .getString(R.string.shared_pref_registered)
// );
// if (isRegistered.equals("1")) {
// Intent intent = null;
// intent = new Intent(ServerDetails.this, AlreadyRegisteredActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
// } else {
// alertDialog =
// CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
// getResources()
// .getString(
// R.string.title_head_connection_error),
// getResources()
// .getString(
// R.string.error_internal_server),
// getResources()
// .getString(
// R.string.button_ok),
// null);
// Log.e("null", alertDialog.getClass().getPackage().toString());
// alertDialog.show();
// }
// // ServerUtils.clearAppData(context);
// } else {
// Log.e(TAG, "The value of status is : " + responseStatus);
// ServerUtils.clearAppData(context);
//
// alertDialog =
// CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
// getResources()
// .getString(
// R.string.title_head_registration_error),
// getResources()
// .getString(
// R.string.error_internal_server),
// getResources()
// .getString(
// R.string.button_ok),
// null);
// alertDialog.show();
// }
// } else {
// Log.e(TAG, "The result is null in onReceiveAPIResult()");
// ServerUtils.clearAppData(context);
//
// alertDialog =
// CommonDialogUtils.getAlertDialogWithOneButtonAndTitle(context,
// getResources().getString(
// R.string.title_head_registration_error),
// getResources().getString(
// R.string.error_for_all_unknown_registration_failures),
// getResources().getString(
// R.string.button_ok),
// null);
// alertDialog.show();
// }
// }
//
// @Override
// public void onReceiveTokenResult(Token token, String status) {
// if (token != null) {
// if (regId != null && !regId.equals("")) {
// // Check registration.
// isRegistered();
//
// progressDialog =
// ProgressDialog.show(ServerDetails.this,
// getResources().getString(R.string.dialog_sender_id),
// getResources().getString(R.string.dialog_please_wait),
// true);
// }
// }
// }
//
// /**
// * Checks whether device is registered or NOT.
// */
// private void isRegistered() {
// Log.e("isReg", "isReg");
// Map<String, String> requestParams = new HashMap<String, String>();
// requestParams.put("regid", regId);
// Log.e("regID", regId);
//
// // Check network connection availability before calling the API.
// if (PhoneState.isNetworkAvailable(context)) {
// // Call isRegistered API.
// ServerUtils.callSecuredAPI(ServerDetails.this,
// CommonUtilities.IS_REGISTERED_ENDPOINT,
// CommonUtilities.POST_METHOD, requestParams,
// ServerDetails.this,
// CommonUtilities.IS_REGISTERED_REQUEST_CODE);
// } else {
// CommonDialogUtils.stopProgressDialog(progressDialog);
// CommonDialogUtils.showNetworkUnavailableMessage(ServerDetails.this);
// }
//
// }
}

View File

@ -23,7 +23,7 @@ import java.util.List;
import org.json.JSONArray;
import org.wso2.cdm.agent.R;
import org.wso2.cdm.agent.utils.CommonUtilities;
import org.wso2.cdm.agent.utils.Errors;
import org.wso2.cdm.agent.utils.Responce;
import android.content.Context;
import android.content.SharedPreferences;
@ -303,17 +303,17 @@ public class DeviceInfo {
return amount;
}
public Errors isCompatible(Context c) {
public Responce isCompatible() {
if (!(getSdkVersion() >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) &&
isRooted()) {
return Errors.INCOMPATIBLE;
return Responce.INCOMPATIBLE;
} else if (getSdkVersion() < android.os.Build.VERSION_CODES.FROYO) {
return Errors.INCOMPATIBLE;
return Responce.INCOMPATIBLE;
} else if (isRooted()) {
return Errors.INCOMPATIBLE;
return Responce.INCOMPATIBLE;
}
return Errors.COMPATIBLE;
return Responce.COMPATIBLE;
}
/*

View File

@ -1,18 +1,18 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
*/
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent.utils;
import org.wso2.cdm.agent.R;
@ -124,7 +124,7 @@ public abstract class CommonDialogUtils {
builder.setTitle(title);
builder.setMessage(message)
.setPositiveButton(positiveBtnLabel, positiveClickListener);
builder.show();
return builder;
}

View File

@ -1,17 +1,17 @@
/*
~ Copyright (c) 2014, WSO2 Inc. (http://wso2.com/) All Rights Reserved.
~
~ 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.
/**
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.cdm.agent.utils;
@ -37,12 +37,14 @@ public class CommonUtilities {
public static String SERVER_PROTOCOL = "http://";
public static String API_VERSION = "1.0.0";
public static String SERVER_APP_ENDPOINT = "/emm/api/";
public static String SERVER_APP_ENDPOINT = "/cdm-android-api/";
public static String SERVER_AUTHENTICATION_ENDPOINT="register/authenticate/device";
public static String LICENSE_ENDPOINT = "register/authenticate/device/license";
public static String REGISTER_ENDPOINT = "enrollment/authenticate/device/enroll";
public static String OAUTH_ENDPOINT = "/oauth2/token";
public static String SENDER_ID_ENDPOINT = "devices/sender_id/";
public static String IS_REGISTERED_ENDPOINT = "devices/isregistered/";
public static String LICENSE_ENDPOINT = "devices/license/";
public static String REGISTER_ENDPOINT = "devices/register/";
public static String UNREGISTER_ENDPOINT = "devices/unregister/";
public static String NOTIFICATION_ENDPOINT = "notifications/pendingOperations/";
@ -82,8 +84,6 @@ public class CommonUtilities {
public static void setServerURL(String serverIP) {
SERVER_IP = serverIP;
/*SERVER_URL = SERVER_PROTOCOL + sERVER_URL + ":" + SERVER_PORT
+ "/mdm/api/";*/
SERVER_URL = SERVER_PROTOCOL + serverIP + ":" + SERVER_PORT
+SERVER_APP_ENDPOINT;

View File

@ -24,7 +24,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
@ -44,7 +43,6 @@ import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.wso2.cdm.agent.R;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ParseException;
@ -56,39 +54,38 @@ public class HTTPConnectorUtils {
private static final int MAX_ATTEMPTS = 2;
public static Map<String, String> getClientKey(String username, String password, Context context) {
Map<String, String> params = new HashMap<String, String>();
Map<String, String> response = new HashMap<String, String>();
// public static Map<String, String> getClientKey(String username, String
// password, Context context) {
// Map<String, String> params = new HashMap<String, String>();
// Map<String, String> response = new HashMap<String, String>();
//
// params.put("username", username);
// params.put("password", password);
//
// try {
// response =
// postData("services/register/authenticate/device", params,
// context);
// } catch (Exception ex) {
// ex.printStackTrace();
// return response;
// }
// return response;
// }
params.put("username", username);
params.put("password", password);
try {
response =
sendWithTimeWait("services/register/authenticate/device", params, "POST",
context);
} catch (Exception ex) {
ex.printStackTrace();
return response;
}
return response;
}
public static Map<String, String> sendWithTimeWait(String epPostFix,
Map<String, String> params, String option,
Context context) {
public static Map<String, String> postData(Context context, String url,
Map<String, String> params) {
Map<String, String> response = null;
Map<String, String> responseFinal = null;
for (int i = 1; i <= MAX_ATTEMPTS; i++) {
Log.d(TAG, "Attempt #" + i + " to register");
Log.d(TAG, "Attempt #" + i + " to register " + url);
try {
response = postData(context, epPostFix, params);
response = postToServer(context, url, params);
if (response != null && !response.equals(null)) {
responseFinal = response;
}
String message = context.getString(R.string.server_registered);
Log.v("Check Reg Success", message.toString());
Log.d("Success", "Check Reg Success");
return responseFinal;
} catch (Exception e) {
@ -100,49 +97,34 @@ public class HTTPConnectorUtils {
return responseFinal;
}
}
String message = context.getString(R.string.server_register_error, MAX_ATTEMPTS);
return responseFinal;
}
public static Map<String, String> postData(Context context, String url,
Map<String, String> params) {
public static Map<String, String> postToServer(Context context, String url,
Map<String, String> params) {
// Create a new HttpClient and Post Header
Map<String, String> response_params = new HashMap<String, String>();
HttpClient httpclient = getCertifiedHttpClient(context);
String endpoint = CommonUtilities.SERVER_URL + url;
SharedPreferences mainPref = context.getSharedPreferences("com.mdm", Context.MODE_PRIVATE);
String ipSaved = mainPref.getString("ip", "");
if (ipSaved != null && ipSaved != "") {
endpoint =
CommonUtilities.SERVER_PROTOCOL + ipSaved + ":" +
CommonUtilities.SERVER_PORT + CommonUtilities.SERVER_APP_ENDPOINT +
url;
}
endpoint =
"http://10.100.5.70:9763/wso2appserver-cxf-samples/services/register/authenticate/device";
Log.v(TAG, ipSaved + "Posting '" + params.toString() + "' to " + endpoint);
StringBuilder bodyBuilder = new StringBuilder();
Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
// constructs the POST body using the parameters
while (iterator.hasNext()) {
Entry<String, String> param = iterator.next();
bodyBuilder.append(param.getKey()).append('=').append(param.getValue());
if (iterator.hasNext()) {
bodyBuilder.append('&');
if (params != null) {
Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
// constructs the POST body using the parameters
while (iterator.hasNext()) {
Entry<String, String> param = iterator.next();
bodyBuilder.append(param.getKey()).append('=').append(param.getValue());
if (iterator.hasNext()) {
bodyBuilder.append('&');
}
}
}
String body = bodyBuilder.toString();
Log.v(TAG, "Posting '" + body + "' to " + endpoint);
Log.v(TAG, "Posting '" + body + "' to " + url);
byte[] postData = body.getBytes();
HttpPost httppost = new HttpPost(endpoint);
HttpPost httppost = new HttpPost(url);
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httppost.setHeader("Accept", "*/*");
httppost.setHeader("User-Agent", "Mozilla/5.0 ( compatible ), Android");
@ -185,13 +167,12 @@ public class HTTPConnectorUtils {
new ThreadSafeClientConnManager(params, schemeRegistry);
client = new DefaultHttpClient(cm, params);
} else {
Log.e("", "out");
client = new DefaultHttpClient();
}
return client;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

View File

@ -1,29 +1,46 @@
package org.wso2.cdm.agent.utils;
import org.wso2.cdm.agent.R;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import org.wso2.cdm.agent.R;
/**
* Data retrieval and saving to shared preferences is done here.
*/
public class Preference {
public static String pack = "com.inosh.jwnotes";
public static String pack = "com.wso2.cdm.agent";
public static void put(Context c, String key, String value) {
/**
* Put data to shared preferences in private mode.
*
* @param context the context of activity which is requesting to put data
* @param key is used to identify the value.
* @param value is the actual value to be saved.
*/
public static void put(Context context, String key, String value) {
SharedPreferences mainPref =
c.getSharedPreferences(c.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
context.getSharedPreferences(context.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE
);
Editor editor = mainPref.edit();
editor.putString(key, value);
editor.commit();
}
public static String get(Context c, String key) {
/**
* Retrieve data from shared preferences in private mode.
*
* @param context the context of activity which is requesting to put data
* @param key is used to identify the value to to be retrieved.
*/
public static String get(Context context, String key) {
SharedPreferences mainPref =
c.getSharedPreferences(c.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE);
context.getSharedPreferences(context.getResources()
.getString(R.string.shared_pref_package),
Context.MODE_PRIVATE
);
return mainPref.getString(key, null);
}

View File

@ -21,7 +21,7 @@ import org.wso2.cdm.agent.R;
* Describes the errors and their relevant error messages.
* In order to internationalize the message is the res
*/
public enum Errors {
public enum Responce {
INCOMPATIBLE(false, R.string.device_not_compatible_error),
INCOMPATIBLE_OS(false, R.string.device_not_compatible_error_os),
COMPATIBLE(true,R.string.device_not_compatible_error_os);
@ -29,7 +29,7 @@ public enum Errors {
private final boolean code;
private final int descriptionResourceID;
private Errors(boolean code, int description) {
private Responce(boolean code, int description) {
this.code = code;
this.descriptionResourceID = description;
}

View File

@ -16,33 +16,151 @@
package cdm.api.android;
import cdm.api.android.util.AndroidAPIUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.wso2.carbon.context.CarbonContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementService;
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import java.util.List;
/**
* Android Device Management REST-API implementation.
*/
@Path("/devices")
public class Device {
private static Log log = LogFactory.getLog(Device.class);
@GET
public String getAllDevices() {
return "License Agreement";
public Response getAllDevices() {
List<org.wso2.carbon.device.mgt.common.Device> result = null;
int status = 0;
String msg = "";
DeviceManagementService dmService;
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
try {
if(dmService!=null){
result = dmService.getAllDevices(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while fetching the device list";
log.error(msg, e);
status = -1;
}
switch (status) {
case 1:
String response = new Gson().toJson(result);
return Response.status(200).entity(response).build();
case -1:
return Response.status(500).entity(msg).build();
}
return Response.status(400).entity("Unable to fetch device list").build();
}
@GET
@Path("{id}")
public String getDevice(@PathParam("id") String id) {
return "License Agreement";
public Response getDevice(@PathParam("id") String id) {
int status = 0;
String msg = "";
DeviceManagementService dmService;
org.wso2.carbon.device.mgt.common.Device device = new org.wso2.carbon.device.mgt.common.Device();
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
try {
if(dmService!=null){
device = dmService.getDevice(deviceIdentifier);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while fetching the device information";
log.error(msg, e);
status = -1;
}
switch (status) {
case 1:
String response = new Gson().toJson(device);
return Response.status(200).entity(response).build();
case -1:
return Response.status(500).entity(msg).build();
}
return Response.status(400).entity("Unable to fetch device information").build();
}
@PUT
@Path("{id}")
public Response updateDevice(@PathParam("id") String id) {
return Response.status(201).entity("Registration Successful").build();
public Response updateDevice(@PathParam("id") String id, String jsonPayload) {
boolean result = false;
int status = 0;
String msg = "";
DeviceManagementService dmService;
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
org.wso2.carbon.device.mgt.common.Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload);
try {
if(dmService!=null){
result = dmService.updateDeviceInfo(device);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while modifying the device information";
log.error(msg, e);
status = -1;
}
switch (status) {
case 1:
if (result) {
return Response.status(200).entity("Device has modified").build();
}
break;
case -1:
return Response.status(500).entity(msg).build();
}
return Response.status(400).entity("Update device has failed").build();
}
}

View File

@ -16,11 +16,9 @@
package cdm.api.android;
import cdm.api.android.util.AndroidAPIUtil;
import com.google.gson.JsonObject;
import cdm.api.android.util.AndroidAPIUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
@ -34,13 +32,12 @@ import javax.ws.rs.core.Response;
/**
* Android Device Enrollment REST-API implementation.
*/
@Path("/enrollment")
public class Enrollment {
private static Log log = LogFactory.getLog(Enrollment.class);
@POST
public Response enrollDevice() {
public Response enrollDevice(String jsonPayload) {
boolean result = false;
int status = 0;
String msg = "";
@ -50,16 +47,21 @@ public class Enrollment {
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
Device device = AndroidAPIUtil.convertToDeviceObject(null);
Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload);
try {
result = dmService.enrollDevice(device);
status = 1;
if(dmService!=null){
result = dmService.enrollDevice(device);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while enrolling the device";
log.error(msg, e);
@ -83,13 +85,26 @@ public class Enrollment {
boolean result = false;
int status = 0;
String msg = "";
CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
DeviceManagementService dmService = (DeviceManagementService) context
.getOSGiService(DeviceManagementService.class, null);
DeviceManagementService dmService;
try {
DeviceIdentifier deviceIdentifier = AndroidAPIUtil.convertToDeviceIdentifierObject(id);
result = dmService.isEnrolled(deviceIdentifier);
status = 1;
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
try {
if(dmService!=null){
result = dmService.isEnrolled(deviceIdentifier);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while checking enrollment of the device";
log.error(msg, e);
@ -108,19 +123,31 @@ public class Enrollment {
}
@PUT
@Consumes("application/json")
@Path("{id}")
public Response modifyEnrollment(@PathParam("id") String id) {
public Response modifyEnrollment(@PathParam("id") String id,String jsonPayload) {
boolean result = false;
int status = 0;
String msg = "";
CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
DeviceManagementService dmService = (DeviceManagementService) context
.getOSGiService(DeviceManagementService.class, null);
Device device = AndroidAPIUtil.convertToDeviceObject(null);
DeviceManagementService dmService;
try {
result = dmService.modifyEnrollment(device);
status = 1;
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload);
try {
if(dmService!=null){
result = dmService.modifyEnrollment(device);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while modifying enrollment of the device";
log.error(msg, e);
@ -144,13 +171,26 @@ public class Enrollment {
boolean result = false;
int status = 0;
String msg = "";
CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
DeviceManagementService dmService = (DeviceManagementService) context
.getOSGiService(DeviceManagementService.class, null);
DeviceManagementService dmService;
try {
DeviceIdentifier deviceIdentifier = AndroidAPIUtil.convertToDeviceIdentifierObject(id);
result = dmService.disenrollDevice(deviceIdentifier);
status = 1;
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
dmService = (DeviceManagementService) ctx
.getOSGiService(DeviceManagementService.class, null);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
try {
if(dmService!=null){
result = dmService.disenrollDevice(deviceIdentifier);
status = 1;
}else{
status = -1;
msg = "Device Manager service not available";
}
} catch (DeviceManagementException e) {
msg = "Error occurred while disenrolling the device";
log.error(msg, e);

View File

@ -1,44 +0,0 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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 cdm.api.android.util;
import com.google.gson.JsonObject;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
/**
* AndroidAPIUtil class provides utility function used by Android REST-API classes.
*/
public class AndroidAPIUtil {
public static Device convertToDeviceObject(JsonObject json){
Device device = new Device();
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
device.setName("Test Device");
device.setOwner("harshan");
return device;
}
public static DeviceIdentifier convertToDeviceIdentifierObject(String deviceId){
DeviceIdentifier identifier = new DeviceIdentifier();
identifier.setId(deviceId);
identifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
return identifier;
}
}

View File

@ -0,0 +1,115 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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 cdm.api.android.util;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.wso2.carbon.device.mgt.common.*;
import java.util.*;
/**
* AndroidAPIUtil class provides utility function used by Android REST-API classes.
*/
public class AndroidAPIUtils {
public static Device convertToDeviceObject(String jsonString) {
JsonObject obj = new Gson().fromJson(jsonString, JsonObject.class);
Device device = new Device();
device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
if (obj.get(AndroidConstants.DeviceConstants.DEVICE_MAC_KEY) != null) {
device.setDeviceIdentifier(
obj.get(AndroidConstants.DeviceConstants.DEVICE_MAC_KEY).getAsString());
}
if (obj.get(AndroidConstants.DeviceConstants.DEVICE_DESCRIPTION_KEY) != null) {
device.setDescription(
obj.get(AndroidConstants.DeviceConstants.DEVICE_DESCRIPTION_KEY).getAsString());
}
if (obj.get(AndroidConstants.DeviceConstants.DEVICE_OWNERSHIP_KEY) != null) {
device.setOwnership(
obj.get(AndroidConstants.DeviceConstants.DEVICE_OWNERSHIP_KEY).getAsString());
}
if (obj.get(AndroidConstants.DeviceConstants.DEVICE_PROPERTIES_KEY) != null) {
JsonObject properties =
new Gson().fromJson(
obj.get(AndroidConstants.DeviceConstants.DEVICE_PROPERTIES_KEY)
, JsonObject.class);
if (properties.get(AndroidConstants.DeviceProperties.PROPERTY_USER_KEY) != null) {
device.setOwner(properties.get(AndroidConstants.DeviceProperties.PROPERTY_USER_KEY)
.getAsString());
}
if (properties.get(AndroidConstants.DeviceProperties.PROPERTY_DEVICE_KEY) != null) {
device.setName(properties.get(AndroidConstants.DeviceProperties.PROPERTY_DEVICE_KEY)
.getAsString());
}
device.setProperties(parseProperties(properties));
}else{
device.setProperties(new ArrayList<Property>(0));
}
if (obj.get(AndroidConstants.DeviceConstants.DEVICE_FEATURES_KEY) != null) {
JsonObject features =
new Gson().fromJson(
obj.get(AndroidConstants.DeviceConstants.DEVICE_FEATURES_KEY),
JsonObject.class);
device.setFeatures(parseFeatures(features));
}else{
device.setFeatures(new ArrayList<Feature>(0));
}
return device;
}
private static List<Property> parseProperties(JsonObject properties) {
List<Property> propertyList = new ArrayList<Property>(0);
for (Map.Entry<String, JsonElement> entry : properties.entrySet()) {
propertyList.add(parseProperty(entry.getKey(), entry.getValue()));
}
// propertyList.add(parseProperty("regid", properties.get("regid").getAsString()));
// propertyList.add(parseProperty("osversion", properties.get("osversion").getAsString()));
// propertyList.add(parseProperty("vendor", properties.get("vendor").getAsString()));
// propertyList.add(parseProperty("imei", properties.get("imei").getAsString()));
// propertyList.add(parseProperty("imsi", properties.get("imsi").getAsString()));
// propertyList.add(parseProperty("model", properties.get("model").getAsString()));
return propertyList;
}
private static List<Feature> parseFeatures(JsonObject features) {
List<Feature> featureList = new ArrayList<Feature>(0);
return featureList;
}
private static Property parseProperty(String property, JsonElement value) {
Property prop = new Property();
prop.setName(property);
prop.setValue(value.getAsString());
return prop;
}
private static Feature parseFeature(JsonElement featureElement) {
Feature feature = new Feature();
return feature;
}
public static DeviceIdentifier convertToDeviceIdentifierObject(String deviceId) {
DeviceIdentifier identifier = new DeviceIdentifier();
identifier.setId(deviceId);
identifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
return identifier;
}
}

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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 cdm.api.android.util;
/**
* Defines constants used in Android-REST API bundle.
*/
public final class AndroidConstants {
public final class DeviceProperties{
private DeviceProperties() {
throw new AssertionError();
}
public static final String PROPERTY_USER_KEY = "username";
public static final String PROPERTY_DEVICE_KEY = "device";
}
public final class DeviceFeatures{
private DeviceFeatures() {
throw new AssertionError();
}
}
public final class DeviceConstants{
private DeviceConstants() {
throw new AssertionError();
}
public static final String DEVICE_MAC_KEY = "mac";
public static final String DEVICE_DESCRIPTION_KEY = "description";
public static final String DEVICE_OWNERSHIP_KEY = "ownership";
public static final String DEVICE_PROPERTIES_KEY = "properties";
public static final String DEVICE_FEATURES_KEY = "features";
}
}

View File

@ -38,6 +38,7 @@
<ref bean="enrollmentServiceBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="serviceBean" class="cdm.api.android.Authentication"/>
<bean id="deviceMgtServiceBean" class="cdm.api.android.Device"/>
<bean id="enrollmentServiceBean" class="cdm.api.android.Enrollment"/>

View File

@ -153,7 +153,7 @@
<includes>
<include>**/api-manager.xml</include>
<include>**/sso-idp-config.xml</include>
<include>**/emm-config.xml</include>
<!-- <include>**/emm-config.xml</include>-->
</includes>
</fileSet>
<fileSet>
@ -170,6 +170,7 @@
<outputDirectory>wso2cdm-${project.version}/repository/conf/datasources</outputDirectory>
<includes>
<include>**/master-datasources.xml</include>
<include>**/cdm-datasources.xml</include>
</includes>
</fileSet>
<fileSet>
@ -358,6 +359,16 @@
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<!--cdm config file-->
<file>
<source>../p2-profile-gen/target/wso2carbon-core-${carbon.kernel.version}/repository/conf/cdm-config.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/conf</outputDirectory>
<filtered>true</filtered>
<fileMode>644</fileMode>
</file>
<file>
<source>../p2-profile-gen/target/wso2carbon-core-${carbon.kernel.version}/repository/conf/tomcat/webapp-classloading-environments.xml</source>
<outputDirectory>${pom.artifactId}-${pom.version}/repository/conf/tomcat</outputDirectory>

View File

@ -0,0 +1,28 @@
<datasources-configuration xmlns:svns="http://org.wso2.securevault/configuration">
<providers>
<provider>org.wso2.carbon.ndatasource.rdbms.RDBMSDataSourceReader</provider>
</providers>
<datasources>
<datasource>
<name>WSO2DEVICE_DB</name>
<description>The datasource used for EMM</description>
<jndiConfig>
<name>jdbc/WSO2DEVICE_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:h2:repository/database/WSO2DEVICE_DB;DB_CLOSE_ON_EXIT=FALSE</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
</datasources>
</datasources-configuration>

View File

@ -4,26 +4,6 @@
</providers>
<datasources>
<datasource>
<name>WSO2DEVICE_DB</name>
<description>The datasource used for EMM</description>
<jndiConfig>
<name>jdbc/WSO2DEVICE_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:h2:repository/database/WSO2DEVICE_DB;DB_CLOSE_ON_EXIT=FALSE</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
<datasource>
<name>WSO2_CARBON_DB</name>
<description>The datasource used for registry and user manager</description>

View File

@ -107,7 +107,7 @@
<featureArtifactDef>
org.wso2.carbon:org.wso2.carbon.device.mgt.server.feature:${project.version}
</featureArtifactDef>
<featureArtifactDef>
<featureArtifactDef>
org.wso2.carbon:org.wso2.carbon.device.mgt.mobile.feature:${project.version}
</featureArtifactDef>
<featureArtifactDef>
@ -164,7 +164,7 @@
<id>org.wso2.carbon.device.mgt.server.feature.group</id>
<version>${project.version}</version>
</feature>
<feature>
<feature>
<id>org.wso2.carbon.device.mgt.mobile.feature.group</id>
<version>${project.version}</version>
</feature>