Adding the scep support for getting the device tenant id

4.x.x
geethkokila 9 years ago
parent d2fe9679e0
commit 4500aacd38

@ -23,6 +23,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo.Status;
import java.util.HashMap;
import java.util.List;
/**
@ -64,6 +65,14 @@ public interface DeviceDAO {
*/
Device getDevice(DeviceIdentifier deviceIdentifier, int tenantId) throws DeviceManagementDAOException;
/**
*
* @param deviceIdentifier device id.
* @return HashMap
* @throws DeviceManagementDAOException
*/
HashMap<Integer, Device> getDevice(DeviceIdentifier deviceIdentifier) throws DeviceManagementDAOException;
/**
* This method is used to retrieve a device of a given id.
*

@ -30,6 +30,7 @@ import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
public class DeviceDAOImpl implements DeviceDAO {
@ -131,6 +132,37 @@ public class DeviceDAOImpl implements DeviceDAO {
return device;
}
@Override
public HashMap<Integer, Device> getDevice(DeviceIdentifier deviceIdentifier) throws DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
ResultSet rs = null;
Device device;
HashMap<Integer, Device> deviceHashMap = new HashMap<>();
try {
conn = this.getConnection();
String sql = "SELECT d1.ID AS DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, d1.TENANT_ID, " +
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT d.ID, d.DESCRIPTION, d.NAME, " +
"t.NAME AS DEVICE_TYPE, d.DEVICE_IDENTIFICATION FROM DM_DEVICE d, DM_DEVICE_TYPE t WHERE " +
"t.NAME = ? AND d.DEVICE_IDENTIFICATION = ? ) d1 WHERE d1.ID = e.DEVICE_ID ";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceIdentifier.getType());
stmt.setString(2, deviceIdentifier.getId());
rs = stmt.executeQuery();
if (rs.next()) {
device = this.loadDevice(rs);
deviceHashMap.put(rs.getInt("TENANT_ID"), device);
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while listing devices for type " +
"'" + deviceIdentifier.getType() + "'", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return deviceHashMap;
}
@Override
public Device getDevice(int deviceId, int tenantId) throws DeviceManagementDAOException {
Connection conn;

@ -0,0 +1,58 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.core.scep;
public class SCEPException extends Exception {
private static final long serialVersionUID = -3151279390702337L;
private String errorMessage;
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public SCEPException(String msg, Exception nestedEx) {
super(msg, nestedEx);
setErrorMessage(msg);
}
public SCEPException(String message, Throwable cause) {
super(message, cause);
setErrorMessage(message);
}
public SCEPException(String msg) {
super(msg);
setErrorMessage(msg);
}
public SCEPException() {
super();
}
public SCEPException(Throwable cause) {
super(cause);
}
}

@ -0,0 +1,27 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.core.scep;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
public interface SCEPManager {
TenantedDeviceWrapper getValidatedDevice(DeviceIdentifier deviceIdentifier) throws SCEPException;
}

@ -0,0 +1,85 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.core.scep;
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.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.user.api.UserStoreException;
import org.wso2.carbon.user.core.service.RealmService;
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
import java.sql.SQLException;
import java.util.HashMap;
public class SCEPManagerImpl implements SCEPManager {
private DeviceDAO deviceDAO;
private static final Log log = LogFactory.getLog(SCEPManagerImpl.class);
public SCEPManagerImpl() {
deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
}
@Override
public TenantedDeviceWrapper getValidatedDevice(DeviceIdentifier deviceIdentifier) throws SCEPException {
TenantedDeviceWrapper tenantedDeviceWrapper = new TenantedDeviceWrapper();
try {
DeviceManagementDAOFactory.openConnection();
HashMap<Integer, Device> deviceHashMap = deviceDAO.getDevice(deviceIdentifier);
Integer tenantId = (Integer) deviceHashMap.keySet().toArray()[0];
tenantedDeviceWrapper.setDevice(deviceHashMap.get(tenantId));
tenantedDeviceWrapper.setTenantId(tenantId);
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
ctx.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
ctx.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
RealmService realmService = (RealmService) ctx.getOSGiService(RealmService.class, null);
if (realmService == null) {
String msg = "RealmService is not initialized";
log.error(msg);
throw new SCEPException(msg);
}
String tenantDomain = realmService.getTenantManager().getDomain(tenantId);
tenantedDeviceWrapper.setTenantDomain(tenantDomain);
} catch (SQLException e) {
throw new SCEPException("Error occurred while getting the datasource connection.", e);
} catch (DeviceManagementDAOException e) {
throw new SCEPException("Error occurred while reading the device dao.", e);
} catch (UserStoreException e) {
throw new SCEPException("Error occurred while getting the tenant domain.", e);
} finally {
PrivilegedCarbonContext.endTenantFlow();
DeviceManagementDAOFactory.closeConnection();
}
return tenantedDeviceWrapper;
}
}

@ -0,0 +1,53 @@
/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.mgt.core.scep;
import org.wso2.carbon.device.mgt.common.Device;
public class TenantedDeviceWrapper {
private Device device;
private int tenantId;
private String tenantDomain;
public Device getDevice() {
return device;
}
public void setDevice(Device device) {
this.device = device;
}
public int getTenantId() {
return tenantId;
}
public void setTenantId(int tenantId) {
this.tenantId = tenantId;
}
public String getTenantDomain() {
return tenantDomain;
}
public void setTenantDomain(String tenantDomain) {
this.tenantDomain = tenantDomain;
}
}
Loading…
Cancel
Save