diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManagementConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManagementConstants.java index 0649a9d6a3..9802fe30fe 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManagementConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/DeviceManagementConstants.java @@ -34,7 +34,7 @@ public final class DeviceManagementConstants { public static final String SECURE_VAULT_NS = "http://org.wso2.securevault/configuration"; } - public static class MobileDeviceTypes { + public static final class MobileDeviceTypes { private MobileDeviceTypes() { throw new AssertionError(); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java index b71aaeaa15..0fa7f34af8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java @@ -109,11 +109,15 @@ public final class DeviceManagementDAOUtil { deviceBO.setName(device.getName()); deviceBO.setDateOfEnrollment(device.getDateOfEnrolment()); deviceBO.setDateOfLastUpdate(device.getDateOfLastUpdate()); - deviceBO.setStatus(Status.valueOf(String.valueOf(device.isStatus()))); + if (!device.isStatus()){ + deviceBO.setStatus(Status.INACTIVE); + }else{ + deviceBO.setStatus(Status.ACTIVE); + } deviceBO.setOwnerId(device.getOwner()); deviceBO.setOwnerShip(device.getOwnership()); deviceBO.setTenantId(DeviceManagementDAOUtil.getTenantId()); - deviceBO.setDeviceType(Integer.parseInt(device.getType())); + //deviceBO.setDeviceType(Integer.parseInt(device.getType())); return deviceBO; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java index 85ae3ec4e5..102ca5fb70 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/internal/DeviceManagementServiceComponent.java @@ -41,7 +41,7 @@ import org.wso2.carbon.user.core.service.RealmService; * unbind="unsetRealmService" * @scr.reference name="device.manager.service" * interface="org.wso2.carbon.device.mgt.common.spi.DeviceManagerService" - * cardinality="1..n" + * cardinality="0..n" * policy="dynamic" * bind="setDeviceManagerService" * unbind="unsetDeviceManagerService" diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/pom.xml index 8dd8ef138c..510ee66d72 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/pom.xml @@ -74,10 +74,13 @@ org.wso2.carbon org.wso2.carbon.logging + + org.wso2.carbon + org.wso2.carbon.utils + org.eclipse.osgi org.eclipse.osgi.services - 3.2.0.v20090520-1800 diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagerService.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagerService.java index 3246b21f21..805345e743 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagerService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/android/AndroidDeviceManagerService.java @@ -86,4 +86,6 @@ public class AndroidDeviceManagerService implements DeviceManagerService { return true; } + //should implement equals and hashcode in all service bundles + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceConfigurationManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceConfigurationManager.java new file mode 100644 index 0000000000..1a24811996 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceConfigurationManager.java @@ -0,0 +1,76 @@ +/* + * 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.mobile.impl.config; + +import org.w3c.dom.Document; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.mobile.impl.util.MobileDeviceManagerUtil; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; +import org.wso2.carbon.utils.CarbonUtils; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Unmarshaller; +import java.io.File; + +/** + * Class responsible for the mobile device manager configuration initialization + */ +public class MobileDeviceConfigurationManager { + + private static final String MOBILE_DEVICE_CONFIG_XML_NAME = "mobile-config.xml"; + private MobileDeviceManagementConfig currentMobileDeviceConfig; + private static MobileDeviceConfigurationManager mobileDeviceConfigManager; + + private final String mobileDeviceMgtConfigXMLPath = + CarbonUtils.getCarbonConfigDirPath() + File.separator + + MOBILE_DEVICE_CONFIG_XML_NAME; + + public static MobileDeviceConfigurationManager getInstance() { + if (mobileDeviceConfigManager == null) { + synchronized (MobileDeviceConfigurationManager.class) { + if (mobileDeviceConfigManager == null) { + mobileDeviceConfigManager = new MobileDeviceConfigurationManager(); + } + } + } + return mobileDeviceConfigManager; + } + + public synchronized void initConfig() throws DeviceManagementException { + try { + File mobileDeviceMgtConfig = new File(mobileDeviceMgtConfigXMLPath); + Document doc = MobileDeviceManagerUtil.convertToDocument(mobileDeviceMgtConfig); + JAXBContext mobileDeviceMgmtContext = + JAXBContext.newInstance(MobileDeviceManagementConfig.class); + Unmarshaller unmarshaller = mobileDeviceMgmtContext.createUnmarshaller(); + this.currentMobileDeviceConfig = + (MobileDeviceManagementConfig) unmarshaller.unmarshal(doc); + } catch (Exception e) { + throw new DeviceManagementException( + "Error occurred while initializing Mobile Device Management config", e); + } + } + + public MobileDeviceManagementConfig getMobileDeviceManagementConfig() { + return currentMobileDeviceConfig; + } + + public MobileDataSourceConfig getMobileDataSourceConfig() { + return currentMobileDeviceConfig.getMobileDeviceMgtRepository().getMobileDataSourceConfig(); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementConfig.java new file mode 100644 index 0000000000..203245e5bd --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementConfig.java @@ -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.mobile.impl.config; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Represents Mobile Device Mgt configuration. + */ +@XmlRootElement(name = "MobileDeviceMgtConfiguration") +public final class MobileDeviceManagementConfig { + + private MobileDeviceManagementRepository mobileDeviceMgtRepository; + + @XmlElement(name = "ManagementRepository", nillable = false) + public MobileDeviceManagementRepository getMobileDeviceMgtRepository() { + return mobileDeviceMgtRepository; + } + + public void setMobileDeviceMgtRepository( + MobileDeviceManagementRepository mobileDeviceMgtRepository) { + this.mobileDeviceMgtRepository = mobileDeviceMgtRepository; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementRepository.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementRepository.java new file mode 100644 index 0000000000..9987d1763d --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/MobileDeviceManagementRepository.java @@ -0,0 +1,40 @@ +/* + * 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.mobile.impl.config; + +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Class for holding management repository data + */ +@XmlRootElement(name = "ManagementRepository") +public class MobileDeviceManagementRepository { + + private MobileDataSourceConfig mobileDataSourceConfig; + + @XmlElement(name = "DataSourceConfiguration", nillable = false) + public MobileDataSourceConfig getMobileDataSourceConfig() { + return mobileDataSourceConfig; + } + + public void setMobileDataSourceConfig(MobileDataSourceConfig mobileDataSourceConfig) { + this.mobileDataSourceConfig = mobileDataSourceConfig; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/JNDILookupDefinition.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/JNDILookupDefinition.java new file mode 100644 index 0000000000..94d62a1d26 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/JNDILookupDefinition.java @@ -0,0 +1,77 @@ +/* + * 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.mobile.impl.config.datasource; + +import javax.xml.bind.annotation.*; +import java.util.List; + +/** + * Class for hold JndiLookupDefinition of mobile-config.xml at parsing with JAXB + */ +@XmlRootElement(name = "JndiLookupDefinition") +public class JNDILookupDefinition { + + private String jndiName; + private List jndiProperties; + + @XmlElement(name = "Name", nillable = false) + public String getJndiName() { + return jndiName; + } + + public void setJndiName(String jndiName) { + this.jndiName = jndiName; + } + + @XmlElementWrapper(name = "Environment", nillable = false) + @XmlElement(name = "Property", nillable = false) + public List getJndiProperties() { + return jndiProperties; + } + + public void setJndiProperties(List jndiProperties) { + this.jndiProperties = jndiProperties; + } + + @XmlRootElement(name = "Property") + public static class JNDIProperty { + + private String name; + + private String value; + + @XmlAttribute(name = "Name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } + +} + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/MobileDataSourceConfig.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/MobileDataSourceConfig.java new file mode 100644 index 0000000000..a3e3f6ae0b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/config/datasource/MobileDataSourceConfig.java @@ -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.mobile.impl.config.datasource; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Class for holding data source configuration in mobile-config.xml at parsing with JAXB + */ +@XmlRootElement(name = "DataSourceConfiguration") +public class MobileDataSourceConfig { + + private JNDILookupDefinition jndiLookupDefintion; + + @XmlElement(name = "JndiLookupDefinition", nillable = true) + public JNDILookupDefinition getJndiLookupDefintion() { + return jndiLookupDefintion; + } + + public void setJndiLookupDefintion(JNDILookupDefinition jndiLookupDefintion) { + this.jndiLookupDefintion = jndiLookupDefintion; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceDAO.java index 1d4ab3ab80..16330df10c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceDAO.java @@ -19,7 +19,8 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao; import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileDevice; /** - * This class represents the key operations associated with persisting mobile-device related information. + * This class represents the key operations associated with persisting mobile-device related + * information. */ public interface MobileDeviceDAO { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOException.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOException.java index 8047d932a2..d0d03fcacf 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOException.java @@ -25,9 +25,10 @@ public class MobileDeviceManagementDAOException extends Exception { private static final long serialVersionUID = 2021891706072918865L; /** - * Constructs a new exception with the specified detail message and nested exception. + * Constructs a new MobileDeviceManagementDAOException with the specified detail message and + * nested exception. * - * @param message error message + * @param message error message * @param nestedException exception */ public MobileDeviceManagementDAOException(String message, Exception nestedException) { @@ -36,7 +37,8 @@ public class MobileDeviceManagementDAOException extends Exception { } /** - * Constructs a new exception with the specified detail message and cause. + * Constructs a new MobileDeviceManagementDAOException with the specified detail message + * and cause. * * @param message the detail message. * @param cause the cause of this exception. @@ -47,7 +49,7 @@ public class MobileDeviceManagementDAOException extends Exception { } /** - * Constructs a new exception with the specified detail message + * Constructs a new MobileDeviceManagementDAOException with the specified detail message * * @param message the detail message. */ @@ -57,9 +59,9 @@ public class MobileDeviceManagementDAOException extends Exception { } /** - * Constructs a new exception with the specified and cause. + * Constructs a new MobileDeviceManagementDAOException with the specified and cause. * - * @param cause the cause of this exception. + * @param cause the cause of this exception. */ public MobileDeviceManagementDAOException(Throwable cause) { super(cause); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOFactory.java new file mode 100644 index 0000000000..65750447d5 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/MobileDeviceManagementDAOFactory.java @@ -0,0 +1,104 @@ +/* + * 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.mobile.impl.dao; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.JNDILookupDefinition; +import org.wso2.carbon.device.mgt.mobile.impl.dao.impl.MobileDeviceDAOImpl; +import org.wso2.carbon.device.mgt.mobile.impl.dao.impl.MobileDeviceModelDAOImpl; +import org.wso2.carbon.device.mgt.mobile.impl.dao.impl.MobileDeviceVendorDAOImpl; +import org.wso2.carbon.device.mgt.mobile.impl.dao.impl.MobileOSVersionDAOImpl; +import org.wso2.carbon.device.mgt.mobile.impl.dao.util.MobileDeviceManagementDAOUtil; + +import javax.sql.DataSource; +import java.util.Hashtable; +import java.util.List; + +/** + * Factory class used to create MobileDeviceManagement related DAO objects. + */ +public class MobileDeviceManagementDAOFactory { + + private static DataSource dataSource; + private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOFactory.class); + + public static MobileDeviceDAO getMobileDeviceDAO() { + return new MobileDeviceDAOImpl(dataSource); + } + + public static MobileDeviceModelDAO getMobileDeviceModelDAO() { + return new MobileDeviceModelDAOImpl(dataSource); + } + + public static MobileDeviceVendorDAO getMobileDeviceVendorDAO() { + return new MobileDeviceVendorDAOImpl(dataSource); + } + + public static MobileOSVersionDAO getMobileOSVersionDAO() { + return new MobileOSVersionDAOImpl(dataSource); + } + + public static void init(MobileDataSourceConfig config) { + dataSource = resolveDataSource(config); + } + + public static void init(DataSource dtSource) { + dataSource = dtSource; + } + + /** + * Resolve data source from the data source definition + * + * @param config data source configuration + * @return data source resolved from the data source definition + */ + private static DataSource resolveDataSource(MobileDataSourceConfig config) { + DataSource dataSource = null; + if (config == null) { + throw new RuntimeException("Device Management Repository data source configuration " + + "is null and thus, is not initialized"); + } + JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion(); + if (jndiConfig != null) { + if (log.isDebugEnabled()) { + log.debug("Initializing Device Management Repository data source using the JNDI " + + "Lookup Definition"); + } + List jndiPropertyList = + jndiConfig.getJndiProperties(); + if (jndiPropertyList != null) { + Hashtable jndiProperties = new Hashtable(); + for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) { + jndiProperties.put(prop.getName(), prop.getValue()); + } + dataSource = + MobileDeviceManagementDAOUtil + .lookupDataSource(jndiConfig.getJndiName(), jndiProperties); + } else { + dataSource = MobileDeviceManagementDAOUtil + .lookupDataSource(jndiConfig.getJndiName(), null); + } + } + return dataSource; + } + + public static DataSource getDataSource() { + return dataSource; + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceDAOImpl.java index cdd18e69c1..d0ab883d69 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceDAOImpl.java @@ -16,14 +16,26 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao.impl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceDAO; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileDevice; +import javax.sql.DataSource; + /** * Implementation of MobileDeviceDAO. */ public class MobileDeviceDAOImpl implements MobileDeviceDAO { + + private DataSource dataSource; + private static final Log log = LogFactory.getLog(MobileDeviceDAOImpl.class); + + public MobileDeviceDAOImpl(DataSource dataSource) { + this.dataSource = dataSource; + } + @Override public MobileDevice getDevice(String deviceId) throws MobileDeviceManagementDAOException { return null; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelDAOImpl.java similarity index 78% rename from components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelImpl.java rename to components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelDAOImpl.java index 67179794cd..04dbd9c654 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceModelDAOImpl.java @@ -16,14 +16,26 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao.impl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceModelDAO; import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileDeviceModel; +import javax.sql.DataSource; + /** * Implementation of MobileDeviceModel. */ -public class MobileDeviceModelImpl implements MobileDeviceModelDAO { +public class MobileDeviceModelDAOImpl implements MobileDeviceModelDAO { + + private DataSource dataSource; + private static final Log log = LogFactory.getLog(MobileDeviceModelDAOImpl.class); + + public MobileDeviceModelDAOImpl(DataSource dataSource) { + this.dataSource = dataSource; + } + @Override public MobileDeviceModel getDeviceModel(String modelId) throws MobileDeviceManagementDAOException { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceVendorDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceVendorDAOImpl.java index 0f4659d97b..3908ef3ba0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceVendorDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileDeviceVendorDAOImpl.java @@ -16,14 +16,26 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao.impl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceVendorDAO; import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileDeviceVendor; +import javax.sql.DataSource; + /** * Implementation of MobileDeviceVendorDAO. */ public class MobileDeviceVendorDAOImpl implements MobileDeviceVendorDAO { + + private DataSource dataSource; + private static final Log log = LogFactory.getLog(MobileDeviceVendorDAOImpl.class); + + public MobileDeviceVendorDAOImpl(DataSource dataSource) { + this.dataSource = dataSource; + } + @Override public MobileDeviceVendor getDeviceModel(String vendorId) throws MobileDeviceManagementDAOException { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileOSVersionDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileOSVersionDAOImpl.java index 6bfaccad0c..4296ec974a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileOSVersionDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/impl/MobileOSVersionDAOImpl.java @@ -16,14 +16,26 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao.impl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOException; import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileOSVersionDAO; import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileOSVersion; +import javax.sql.DataSource; + /** * Implementation of MobileOSVersionDAO. */ public class MobileOSVersionDAOImpl implements MobileOSVersionDAO { + + private DataSource dataSource; + private static final Log log = LogFactory.getLog(MobileOSVersionDAOImpl.class); + + public MobileOSVersionDAOImpl(DataSource dataSource) { + this.dataSource = dataSource; + } + @Override public MobileOSVersion getMobileOSVersion(String versionId) throws MobileDeviceManagementDAOException { return null; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/util/MobileDeviceManagementDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/util/MobileDeviceManagementDAOUtil.java index efb4ceff0d..571dc62420 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/util/MobileDeviceManagementDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/dao/util/MobileDeviceManagementDAOUtil.java @@ -16,15 +16,78 @@ package org.wso2.carbon.device.mgt.mobile.impl.dao.util; +<<<<<<< HEAD import javax.sql.DataSource; +======= +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOException; +import org.wso2.carbon.device.mgt.mobile.impl.dto.MobileDevice; + +import javax.naming.InitialContext; +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Hashtable; +>>>>>>> 95f72f77f1a86f8f7e92b8cceafd63b40374dcbb /** * Utility method required by MobileDeviceManagement DAO classes. */ public class MobileDeviceManagementDAOUtil { +<<<<<<< HEAD public static DataSource resolveDataSource() { return null; } +======= + private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOUtil.class); + + public static void cleanupResources(Connection conn, PreparedStatement stmt, ResultSet rs) { + if (rs != null) { + try { + rs.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing result set", e); + } + } + if (stmt != null) { + try { + stmt.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing prepared statement", e); + } + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + log.warn("Error occurred while closing database connection", e); + } + } + } + + public static DataSource lookupDataSource(String dataSourceName, + final Hashtable jndiProperties) { + try { + if (jndiProperties == null || jndiProperties.isEmpty()) { + return (DataSource) InitialContext.doLookup(dataSourceName); + } + final InitialContext context = new InitialContext(jndiProperties); + return (DataSource) context.doLookup(dataSourceName); + } catch (Exception e) { + throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e); + } + } + + public static MobileDevice convertToMobileDevice(Device device) + throws MobileDeviceManagementDAOException { + MobileDevice mobileDeviceBO = new MobileDevice(); + return mobileDeviceBO; + } +>>>>>>> 95f72f77f1a86f8f7e92b8cceafd63b40374dcbb } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/internal/MobileDeviceManagementBundleActivator.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/internal/MobileDeviceManagementBundleActivator.java index e8dc1c1ac4..01819c626a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/internal/MobileDeviceManagementBundleActivator.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/internal/MobileDeviceManagementBundleActivator.java @@ -18,12 +18,27 @@ package org.wso2.carbon.device.mgt.mobile.impl.internal; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; +<<<<<<< HEAD import org.osgi.framework.*; +======= +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +>>>>>>> 95f72f77f1a86f8f7e92b8cceafd63b40374dcbb import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService; import org.wso2.carbon.device.mgt.mobile.impl.DataSourceListener; import org.wso2.carbon.device.mgt.mobile.impl.android.AndroidDeviceManagerService; +<<<<<<< HEAD import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceDAOFactory; +======= +import org.wso2.carbon.device.mgt.mobile.impl.config.MobileDeviceConfigurationManager; +import org.wso2.carbon.device.mgt.mobile.impl.config.MobileDeviceManagementConfig; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; +import org.wso2.carbon.device.mgt.mobile.impl.dao.MobileDeviceManagementDAOFactory; +>>>>>>> 95f72f77f1a86f8f7e92b8cceafd63b40374dcbb import org.wso2.carbon.device.mgt.mobile.impl.ios.IOSDeviceManagerService; +import org.wso2.carbon.device.mgt.mobile.impl.util.MobileDeviceManagementSchemaInitializer; import org.wso2.carbon.device.mgt.mobile.impl.windows.WindowsDeviceManagerService; import java.util.ArrayList; @@ -39,6 +54,7 @@ public class MobileDeviceManagementBundleActivator implements BundleActivator, B private static final Log log = LogFactory.getLog(MobileDeviceManagementBundleActivator.class); private static final String SYMBOLIC_NAME_DATA_SOURCE_COMPONENT = "org.wso2.carbon.ndatasource.core"; +<<<<<<< HEAD @Override public void start(BundleContext bundleContext) throws Exception { try { @@ -97,5 +113,73 @@ public class MobileDeviceManagementBundleActivator implements BundleActivator, B private List getDataSourceListeners() { return dataSourceListeners; } +======= + @Override + public void start(BundleContext bundleContext) throws Exception { + try { + //Initialize Mobile Device Management datasource +// MobileDeviceConfigurationManager.getInstance().initConfig(); +// MobileDeviceManagementConfig config = MobileDeviceConfigurationManager.getInstance() +// .getMobileDeviceManagementConfig(); +// MobileDataSourceConfig +// dsConfig = config.getMobileDeviceMgtRepository().getMobileDataSourceConfig(); +// MobileDeviceManagementDAOFactory.init(dsConfig); + + /* If -Dsetup option enabled then create device management database schema */ + String setupOption = System.getProperty("setup"); + if (setupOption != null) { + if (log.isDebugEnabled()) { + log.debug( + "-Dsetup is enabled. Mobile Device management repository schema initialization is about " + + "to begin"); + } + setupMobileDeviceManagementSchema(null); + } + + if (log.isDebugEnabled()) { + log.debug("Activating Mobile Device Management Service bundle"); + } + androidServiceRegRef = + bundleContext.registerService(DeviceManagerService.class.getName(), + new AndroidDeviceManagerService(), null); + iOSServiceRegRef = + bundleContext.registerService(DeviceManagerService.class.getName(), + new IOSDeviceManagerService(), null); + windowsServiceRegRef = + bundleContext.registerService(DeviceManagerService.class.getName(), + new WindowsDeviceManagerService(), null); + if (log.isDebugEnabled()) { + log.debug("Mobile Device Management Service bundle is activated"); + } + } catch (Throwable e) { + log.error("Error occurred while activating Mobile Device Management Service Component", + e); + } + } + + private void setupMobileDeviceManagementSchema(MobileDataSourceConfig config) throws + DeviceManagementException { + MobileDeviceManagementSchemaInitializer initializer = + new MobileDeviceManagementSchemaInitializer(config); + log.info("Initializing mobile device management repository database schema"); + try { + initializer.createRegistryDatabase(); + } catch (Exception e) { + throw new DeviceManagementException( + "Error occurred while initializing Mobile Device Management " + + "database schema", e); + } + } + + @Override + public void stop(BundleContext bundleContext) throws Exception { + if (log.isDebugEnabled()) { + log.debug("Deactivating Mobile Device Management Service"); + } + androidServiceRegRef.unregister(); + iOSServiceRegRef.unregister(); + windowsServiceRegRef.unregister(); + } +>>>>>>> 95f72f77f1a86f8f7e92b8cceafd63b40374dcbb } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagementSchemaInitializer.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagementSchemaInitializer.java new file mode 100644 index 0000000000..f62b09cc10 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagementSchemaInitializer.java @@ -0,0 +1,46 @@ +/* + * 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.mobile.impl.util; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; +import org.wso2.carbon.utils.CarbonUtils; +import org.wso2.carbon.utils.dbcreator.DatabaseCreator; + +import java.io.File; + +public final class MobileDeviceManagementSchemaInitializer extends DatabaseCreator { + + private static final Log log = LogFactory.getLog(MobileDeviceManagementSchemaInitializer.class); + private static final String setupSQLScriptBaseLocation = + CarbonUtils.getCarbonHome() + File.separator + "dbscripts" + File.separator + "cdm" + + File.separator + "plugins"; + + public MobileDeviceManagementSchemaInitializer(MobileDataSourceConfig config) { + super(MobileDeviceManagerUtil.resolveDataSource(config)); + } + + protected String getDbScriptLocation(String databaseType) { + String scriptName = databaseType + ".sql"; + if (log.isDebugEnabled()) { + log.debug("Loading database script from :" + scriptName); + } + return setupSQLScriptBaseLocation.replaceFirst("DBTYPE", databaseType) + scriptName; + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagerUtil.java new file mode 100644 index 0000000000..c5b9940fb6 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.mobile.impl/src/main/java/org/wso2/carbon/device/mgt/mobile/impl/util/MobileDeviceManagerUtil.java @@ -0,0 +1,91 @@ +/* + * 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.mobile.impl.util; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.w3c.dom.Document; +import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.JNDILookupDefinition; +import org.wso2.carbon.device.mgt.mobile.impl.config.datasource.MobileDataSourceConfig; +import org.wso2.carbon.device.mgt.mobile.impl.dao.util.MobileDeviceManagementDAOUtil; + +import javax.sql.DataSource; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.File; +import java.util.Hashtable; +import java.util.List; + +/** + * Created by harshan on 12/15/14. + */ +public class MobileDeviceManagerUtil { + + private static final Log log = LogFactory.getLog(MobileDeviceManagerUtil.class); + + public static Document convertToDocument(File file) throws DeviceManagementException { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + try { + DocumentBuilder docBuilder = factory.newDocumentBuilder(); + return docBuilder.parse(file); + } catch (Exception e) { + throw new DeviceManagementException( + "Error occurred while parsing file, while converting " + + "to a org.w3c.dom.Document : " + e.getMessage(), e); + } + } + + /** + * Resolve data source from the data source definition + * + * @param config data source configuration + * @return data source resolved from the data source definition + */ + public static DataSource resolveDataSource(MobileDataSourceConfig config) { + DataSource dataSource = null; + if (config == null) { + throw new RuntimeException( + "Mobile Device Management Repository data source configuration " + + "is null and thus, is not initialized"); + } + JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion(); + if (jndiConfig != null) { + if (log.isDebugEnabled()) { + log.debug( + "Initializing Mobile Device Management Repository data source using the JNDI " + + "Lookup Definition"); + } + List jndiPropertyList = + jndiConfig.getJndiProperties(); + if (jndiPropertyList != null) { + Hashtable jndiProperties = new Hashtable(); + for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) { + jndiProperties.put(prop.getName(), prop.getValue()); + } + dataSource = + MobileDeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), + jndiProperties); + } else { + dataSource = MobileDeviceManagementDAOUtil + .lookupDataSource(jndiConfig.getJndiName(), null); + } + } + return dataSource; + } +} diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/conf/mobile-config.xml b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/conf/mobile-config.xml new file mode 100644 index 0000000000..e44dcfaf4e --- /dev/null +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/conf/mobile-config.xml @@ -0,0 +1,26 @@ + + + + + + + + jdbc/WSO2MOBILE_DB + + + + \ No newline at end of file diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/p2.inf b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/p2.inf index e69de29bb2..f410404d26 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/p2.inf +++ b/features/device-mgt/org.wso2.carbon.device.mgt.mobile.feature/src/main/resources/p2.inf @@ -0,0 +1,2 @@ +instructions.configure = \ +org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.mobile_${feature.version}/conf/mobile-config.xml,target:${installFolder}/../../conf/mobile-config.xml,overwrite:true);\ \ No newline at end of file diff --git a/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Device.java b/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Device.java index ae2e805dd2..dd7db5e989 100644 --- a/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Device.java +++ b/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Device.java @@ -50,6 +50,9 @@ public class Device { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("Get all devices"); + } try { if (dmService != null) { result = dmService.getAllDevices( @@ -85,6 +88,9 @@ public class Device { DeviceManagementService dmService; org.wso2.carbon.device.mgt.common.Device device = new org.wso2.carbon.device.mgt.common.Device(); + if(log.isDebugEnabled()){ + log.debug("Get device id : " + id); + } try { dmService = AndroidAPIUtils.getDeviceManagementService(); } finally { @@ -130,6 +136,9 @@ public class Device { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("Update device id : " + id + ", payload : " + jsonPayload); + } org.wso2.carbon.device.mgt.common.Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload); try { diff --git a/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Enrollment.java b/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Enrollment.java index 7a7b3bd29a..3bc2124dd0 100644 --- a/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Enrollment.java +++ b/product/modules/agents/android/jax-rs/src/main/java/cdm/api/android/Enrollment.java @@ -48,6 +48,9 @@ public class Enrollment { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("Device Enroll >>> " + jsonPayload); + } Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload); try { if (dmService != null) { @@ -86,6 +89,9 @@ public class Enrollment { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("Device is enrolled >>> " + id); + } DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id); try { if (dmService != null) { @@ -124,6 +130,9 @@ public class Enrollment { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("Modify Enrollment >>> id : " + id + ", payload : " + jsonPayload); + } Device device = AndroidAPIUtils.convertToDeviceObject(jsonPayload); try { if (dmService != null) { @@ -162,6 +171,9 @@ public class Enrollment { } finally { PrivilegedCarbonContext.endTenantFlow(); } + if(log.isDebugEnabled()){ + log.debug("DisenrollDevice >>> id : " + id ); + } DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id); try { if (dmService != null) { diff --git a/product/modules/distribution/src/assembly/bin.xml b/product/modules/distribution/src/assembly/bin.xml index be12ea55a1..1372d48f2b 100644 --- a/product/modules/distribution/src/assembly/bin.xml +++ b/product/modules/distribution/src/assembly/bin.xml @@ -328,6 +328,15 @@ 644 + + + ../p2-profile-gen/target/wso2carbon-core-${carbon.kernel.version}/repository/conf/mobile-config.xml + + ${pom.artifactId}-${pom.version}/repository/conf + true + 644 + + diff --git a/product/modules/distribution/src/repository/conf/datasources/cdm-datasources.xml b/product/modules/distribution/src/repository/conf/datasources/cdm-datasources.xml index e24759f81b..7b02df9cdf 100755 --- a/product/modules/distribution/src/repository/conf/datasources/cdm-datasources.xml +++ b/product/modules/distribution/src/repository/conf/datasources/cdm-datasources.xml @@ -6,7 +6,7 @@ WSO2DEVICE_DB - The datasource used for EMM + The datasource used for CDM jdbc/WSO2DEVICE_DB @@ -24,5 +24,25 @@ + + WSO2MOBILE_DB + The datasource used for CDM Mobile Device Management + + jdbc/WSO2MOBILE_DB + + + + jdbc:h2:repository/database/WSO2MOBILE_DB;DB_CLOSE_ON_EXIT=FALSE + wso2carbon + wso2carbon + org.h2.Driver + 50 + 60000 + true + SELECT 1 + 30000 + + + diff --git a/product/modules/distribution/src/repository/dbscripts/cdm/plugins/h2.sql b/product/modules/distribution/src/repository/dbscripts/cdm/plugins/h2.sql new file mode 100644 index 0000000000..f36a034bd5 --- /dev/null +++ b/product/modules/distribution/src/repository/dbscripts/cdm/plugins/h2.sql @@ -0,0 +1,38 @@ +CREATE TABLE IF NOT EXISTS MBL_OS_VERSION +( + VERSION_ID INT NOT NULL AUTO_INCREMENT, + NAME VARCHAR(45) NULL DEFAULT NULL, + PRIMARY KEY (VERSION_ID) +); + +CREATE TABLE IF NOT EXISTS MBL_DEVICE_MODEL +( + MODEL_ID INT NOT NULL AUTO_INCREMENT, + MODEL VARCHAR(45) NULL DEFAULT NULL, + PRIMARY KEY (MODEL_ID) +); + + CREATE TABLE IF NOT EXISTS MBL_VENDOR +( + VENDOR_ID INT NOT NULL AUTO_INCREMENT, + VENDOR VARCHAR(45) NULL DEFAULT NULL, + PRIMARY KEY (VENDOR_ID) +); + +CREATE TABLE IF NOT EXISTS MBL_DEVICE +( + MOBILE_DEVICE_ID VARCHAR(45) NOT NULL, + REG_ID VARCHAR(45) NOT NULL, + IMEI VARCHAR(45) NOT NULL, + IMSI VARCHAR(45) NOT NULL, + OS_VERSION_ID INT NOT NULL, + DEVICE_MODEL_ID INT NOT NULL, + VENDOR_ID INT NOT NULL, + PRIMARY KEY (MOBILE_DEVICE_ID), + CONSTRAINT fk_DEVICE_OS_VERSION1 FOREIGN KEY (OS_VERSION_ID ) + REFERENCES MBL_OS_VERSION (VERSION_ID ) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_DEVICE_DEVICE_MODEL2 FOREIGN KEY (DEVICE_MODEL_ID ) + REFERENCES MBL_DEVICE_MODEL (MODEL_ID ) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_DEVICE_VENDOR1 FOREIGN KEY (VENDOR_ID ) + REFERENCES MBL_VENDOR (VENDOR_ID ) ON DELETE NO ACTION ON UPDATE NO ACTION +); \ No newline at end of file diff --git a/product/modules/distribution/src/repository/dbscripts/cdm/plugins/mysql.sql b/product/modules/distribution/src/repository/dbscripts/cdm/plugins/mysql.sql new file mode 100644 index 0000000000..9c57710484 --- /dev/null +++ b/product/modules/distribution/src/repository/dbscripts/cdm/plugins/mysql.sql @@ -0,0 +1,63 @@ +-- ----------------------------------------------------- +-- Table `MBL_OS_VERSION` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `MBL_OS_VERSION` ( + `VERSION_ID` INT NOT NULL AUTO_INCREMENT, + `VERSION` VARCHAR(45) NULL, + PRIMARY KEY (`VERSION_ID`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `MBL_DEVICE_MODEL` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `MBL_DEVICE_MODEL` ( + `MODEL_ID` INT NOT NULL AUTO_INCREMENT, + `MODEL` VARCHAR(45) NULL, + PRIMARY KEY (`MODEL_ID`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `MBL_VENDOR` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `MBL_VENDOR` ( + `VENDOR_ID` INT NOT NULL AUTO_INCREMENT, + `VENDOR` VARCHAR(45) NULL, + PRIMARY KEY (`VENDOR_ID`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `MBL_DEVICE` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `MBL_DEVICE` ( + `MOBILE_DEVICE_ID` VARCHAR(45) NOT NULL, + `REG_ID` VARCHAR(45) NULL, + `IMEI` VARCHAR(45) NULL, + `IMSI` VARCHAR(45) NULL, + `OS_VERSION_ID` INT NOT NULL, + `DEVICE_MODEL_ID` INT NOT NULL, + `VENDOR_ID` INT NOT NULL, + PRIMARY KEY (`MOBILE_DEVICE_ID`), + INDEX `fk_DEVICE_OS_VERSION1_idx` (`OS_VERSION_ID` ASC), + INDEX `fk_DEVICE_DEVICE_MODEL2_idx` (`DEVICE_MODEL_ID` ASC), + INDEX `fk_DEVICE_VENDOR1_idx` (`VENDOR_ID` ASC), + CONSTRAINT `fk_DEVICE_OS_VERSION1` + FOREIGN KEY (`OS_VERSION_ID`) + REFERENCES `MBL_OS_VERSION` (`VERSION_ID`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_DEVICE_DEVICE_MODEL2` + FOREIGN KEY (`DEVICE_MODEL_ID`) + REFERENCES `MBL_DEVICE_MODEL` (`MODEL_ID`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_DEVICE_VENDOR1` + FOREIGN KEY (`VENDOR_ID`) + REFERENCES `MBL_VENDOR` (`VENDOR_ID`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + +