mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Resolve conflicts
This commit is contained in:
commit
c9ed09ee25
@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. 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 io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||||
|
|
||||||
|
public class VppAssociationDTO {
|
||||||
|
int id;
|
||||||
|
String adamId;
|
||||||
|
String clientUserId;
|
||||||
|
String pricingParam;
|
||||||
|
String associationType;
|
||||||
|
|
||||||
|
int assetId;
|
||||||
|
int clientId;
|
||||||
|
int tenantId;
|
||||||
|
String createdTime;
|
||||||
|
String lastUpdatedTime;
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdamId() {
|
||||||
|
return adamId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdamId(String adamId) {
|
||||||
|
this.adamId = adamId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClientUserId() {
|
||||||
|
return clientUserId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientUserId(String clientUserId) {
|
||||||
|
this.clientUserId = clientUserId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPricingParam() {
|
||||||
|
return pricingParam;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPricingParam(String pricingParam) {
|
||||||
|
this.pricingParam = pricingParam;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAssociationType() {
|
||||||
|
return associationType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAssociationType(String associationType) {
|
||||||
|
this.associationType = associationType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAssetId() {
|
||||||
|
return assetId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAssetId(int assetId) {
|
||||||
|
this.assetId = assetId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getClientId() {
|
||||||
|
return clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientId(int clientId) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTenantId() {
|
||||||
|
return tenantId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTenantId(int tenantId) {
|
||||||
|
this.tenantId = tenantId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedTime() {
|
||||||
|
return createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTime(String createdTime) {
|
||||||
|
this.createdTime = createdTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLastUpdatedTime() {
|
||||||
|
return lastUpdatedTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastUpdatedTime(String lastUpdatedTime) {
|
||||||
|
this.lastUpdatedTime = lastUpdatedTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -108,6 +108,12 @@ public class Application {
|
|||||||
value = "if the app is favoured by the user")
|
value = "if the app is favoured by the user")
|
||||||
private boolean isFavourite;
|
private boolean isFavourite;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "isExternalAppStoreApp",
|
||||||
|
value = "Is the app coming from an external application store",
|
||||||
|
required = true,
|
||||||
|
example = "true or false")
|
||||||
|
private boolean isExternalAppStoreApp;
|
||||||
|
|
||||||
public String getPackageName() {
|
public String getPackageName() {
|
||||||
return packageName;
|
return packageName;
|
||||||
}
|
}
|
||||||
@ -194,4 +200,12 @@ public class Application {
|
|||||||
public void setFavourite(boolean favourite) {
|
public void setFavourite(boolean favourite) {
|
||||||
isFavourite = favourite;
|
isFavourite = favourite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isExternalAppStoreApp() {
|
||||||
|
return isExternalAppStoreApp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExternalAppStoreApp(boolean externalAppStoreApp) {
|
||||||
|
isExternalAppStoreApp = externalAppStoreApp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface VPPApplicationManager {
|
public interface VPPApplicationManager {
|
||||||
|
|
||||||
@ -40,4 +41,7 @@ public interface VPPApplicationManager {
|
|||||||
VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException;
|
VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException;
|
||||||
|
|
||||||
ProxyResponse callVPPBackend(String url, String payload, String accessToken, String method) throws IOException;
|
ProxyResponse callVPPBackend(String url, String payload, String accessToken, String method) throws IOException;
|
||||||
|
|
||||||
|
boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
||||||
|
ApplicationManagementException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Entgra (Pvt) Ltd. 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 io.entgra.device.mgt.core.application.mgt.common.wrapper;
|
||||||
|
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneAssetDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class VppAssociateRequestWrapper {
|
||||||
|
|
||||||
|
List<VppItuneAssetDTO> assets;
|
||||||
|
List<String> clientUserIds;
|
||||||
|
|
||||||
|
public List<VppItuneAssetDTO> getAssets() {
|
||||||
|
return assets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAssets(List<VppItuneAssetDTO> assets) {
|
||||||
|
this.assets = assets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getClientUserIds() {
|
||||||
|
return clientUserIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientUserIds(List<String> clientUserIds) {
|
||||||
|
this.clientUserIds = clientUserIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -19,7 +19,13 @@
|
|||||||
package io.entgra.device.mgt.core.application.mgt.core.impl;
|
package io.entgra.device.mgt.core.application.mgt.core.impl;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.core.dao.VppApplicationDAO;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.exception.BadRequestException;
|
import io.entgra.device.mgt.core.application.mgt.core.exception.BadRequestException;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.core.exception.UnexpectedServerErrorException;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
||||||
import io.entgra.device.mgt.core.device.mgt.extensions.logger.spi.EntgraLogger;
|
import io.entgra.device.mgt.core.device.mgt.extensions.logger.spi.EntgraLogger;
|
||||||
import io.entgra.device.mgt.core.notification.logger.AppInstallLogContext;
|
import io.entgra.device.mgt.core.notification.logger.AppInstallLogContext;
|
||||||
import io.entgra.device.mgt.core.notification.logger.impl.EntgraAppInstallLoggerImpl;
|
import io.entgra.device.mgt.core.notification.logger.impl.EntgraAppInstallLoggerImpl;
|
||||||
@ -118,12 +124,14 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
private static final EntgraLogger log = new EntgraAppInstallLoggerImpl(SubscriptionManagerImpl.class);
|
private static final EntgraLogger log = new EntgraAppInstallLoggerImpl(SubscriptionManagerImpl.class);
|
||||||
private SubscriptionDAO subscriptionDAO;
|
private SubscriptionDAO subscriptionDAO;
|
||||||
private ApplicationDAO applicationDAO;
|
private ApplicationDAO applicationDAO;
|
||||||
|
private VppApplicationDAO vppApplicationDAO;
|
||||||
private LifecycleStateManager lifecycleStateManager;
|
private LifecycleStateManager lifecycleStateManager;
|
||||||
|
|
||||||
public SubscriptionManagerImpl() {
|
public SubscriptionManagerImpl() {
|
||||||
this.lifecycleStateManager = DataHolder.getInstance().getLifecycleStateManager();
|
this.lifecycleStateManager = DataHolder.getInstance().getLifecycleStateManager();
|
||||||
this.subscriptionDAO = ApplicationManagementDAOFactory.getSubscriptionDAO();
|
this.subscriptionDAO = ApplicationManagementDAOFactory.getSubscriptionDAO();
|
||||||
this.applicationDAO = ApplicationManagementDAOFactory.getApplicationDAO();
|
this.applicationDAO = ApplicationManagementDAOFactory.getApplicationDAO();
|
||||||
|
this.vppApplicationDAO = ApplicationManagementDAOFactory.getVppApplicationDAO();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -148,6 +156,7 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
ApplicationDTO applicationDTO = getApplicationDTO(applicationUUID);
|
ApplicationDTO applicationDTO = getApplicationDTO(applicationUUID);
|
||||||
ApplicationSubscriptionInfo applicationSubscriptionInfo = getAppSubscriptionInfo(applicationDTO, subType,
|
ApplicationSubscriptionInfo applicationSubscriptionInfo = getAppSubscriptionInfo(applicationDTO, subType,
|
||||||
params);
|
params);
|
||||||
|
performExternalStoreSubscription(applicationDTO, applicationSubscriptionInfo);
|
||||||
ApplicationInstallResponse applicationInstallResponse = performActionOnDevices(
|
ApplicationInstallResponse applicationInstallResponse = performActionOnDevices(
|
||||||
applicationSubscriptionInfo.getAppSupportingDeviceTypeName(), applicationSubscriptionInfo.getDevices(),
|
applicationSubscriptionInfo.getAppSupportingDeviceTypeName(), applicationSubscriptionInfo.getDevices(),
|
||||||
applicationDTO, subType, applicationSubscriptionInfo.getSubscribers(), action, properties, isOperationReExecutingDisabled);
|
applicationDTO, subType, applicationSubscriptionInfo.getSubscribers(), action, properties, isOperationReExecutingDisabled);
|
||||||
@ -156,6 +165,51 @@ public class SubscriptionManagerImpl implements SubscriptionManager {
|
|||||||
return applicationInstallResponse;
|
return applicationInstallResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void performExternalStoreSubscription(ApplicationDTO applicationDTO,
|
||||||
|
ApplicationSubscriptionInfo
|
||||||
|
applicationSubscriptionInfo) throws ApplicationManagementException {
|
||||||
|
try {
|
||||||
|
// Only for iOS devices
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||||
|
if (DeviceTypes.IOS.toString().equalsIgnoreCase(APIUtil.getDeviceTypeData(applicationDTO
|
||||||
|
.getDeviceTypeId()).getName())) {
|
||||||
|
// TODO: replace getAssetByAppId with the correct one in DAO
|
||||||
|
// Check if the app trying to subscribe is a VPP asset.
|
||||||
|
VppAssetDTO storedAsset = vppApplicationDAO.getAssetByAppId(applicationDTO.getId(), tenantId);
|
||||||
|
if (storedAsset != null) { // This is a VPP asset
|
||||||
|
List<VppUserDTO> users = new ArrayList<>();
|
||||||
|
List<Device> devices = applicationSubscriptionInfo.getDevices();// get
|
||||||
|
// subscribed device list, so that we can extract the users of those devices.
|
||||||
|
for (Device device : devices) {
|
||||||
|
VppUserDTO user = vppApplicationDAO.getUserByDMUsername(device.getEnrolmentInfo()
|
||||||
|
.getOwner(), PrivilegedCarbonContext.getThreadLocalCarbonContext()
|
||||||
|
.getTenantId(true));
|
||||||
|
users.add(user);
|
||||||
|
}
|
||||||
|
VPPApplicationManager vppManager = APIUtil.getVPPManager();
|
||||||
|
vppManager.addAssociation(storedAsset, users);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (BadRequestException e) {
|
||||||
|
String msg = "Device Type not found";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (UnexpectedServerErrorException e) {
|
||||||
|
String msg = "Unexpected error while getting device type";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (ApplicationManagementDAOException e) {
|
||||||
|
String msg = "Error while getting the device user";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
} catch (ApplicationManagementException e) {
|
||||||
|
String msg = "Error while associating user";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createScheduledSubscription(ScheduledSubscriptionDTO subscriptionDTO)
|
public void createScheduledSubscription(ScheduledSubscriptionDTO subscriptionDTO)
|
||||||
throws SubscriptionManagementException {
|
throws SubscriptionManagementException {
|
||||||
|
|||||||
@ -25,14 +25,16 @@ import io.entgra.device.mgt.core.application.mgt.common.DepConfig;
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ItuneAppDTO;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.ItuneAppDTO;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneAssetDTO;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.exception.TransactionManagementException;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.response.Application;
|
import io.entgra.device.mgt.core.application.mgt.common.response.Application;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserRequestWrapper;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.exception.TransactionManagementException;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppAssociateRequestWrapper;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneAssetResponseWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneAssetResponseWrapper;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserRequestWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserRequestWrapper;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserResponseWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserResponseWrapper;
|
||||||
@ -49,7 +51,6 @@ import io.entgra.device.mgt.core.application.mgt.core.util.ConnectionManagerUtil
|
|||||||
import io.entgra.device.mgt.core.application.mgt.core.util.Constants;
|
import io.entgra.device.mgt.core.application.mgt.core.util.Constants;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.license.mgt.License;
|
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.DeviceManagementConstants;
|
import io.entgra.device.mgt.core.device.mgt.core.DeviceManagementConstants;
|
||||||
@ -60,6 +61,7 @@ import org.apache.http.HttpStatus;
|
|||||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class VppApplicationManagerImpl implements VPPApplicationManager {
|
public class VppApplicationManagerImpl implements VPPApplicationManager {
|
||||||
@ -68,6 +70,7 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|||||||
private static final String USER_CREATE = APP_API + "/users/create";
|
private static final String USER_CREATE = APP_API + "/users/create";
|
||||||
private static final String USER_UPDATE = APP_API + "/users/update";
|
private static final String USER_UPDATE = APP_API + "/users/update";
|
||||||
private static final String USER_GET = APP_API + "/users";
|
private static final String USER_GET = APP_API + "/users";
|
||||||
|
private static final String ASSIGNMENTS_POST = APP_API + "/assets/associate";
|
||||||
private static final String TOKEN = "";
|
private static final String TOKEN = "";
|
||||||
private static final String LOOKUP_API = "https://uclient-api.itunes.apple" +
|
private static final String LOOKUP_API = "https://uclient-api.itunes.apple" +
|
||||||
".com/WebObjects/MZStorePlatform.woa/wa/lookup?version=2&id=";
|
".com/WebObjects/MZStorePlatform.woa/wa/lookup?version=2&id=";
|
||||||
@ -443,7 +446,7 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|||||||
.getInstance().getMetadataManagementService();
|
.getInstance().getMetadataManagementService();
|
||||||
Metadata metadata = null;
|
Metadata metadata = null;
|
||||||
try {
|
try {
|
||||||
metadata = meta.retrieveMetadata(DeviceManagementConstants.DEP_META_KEY);
|
metadata = meta.retrieveMetadata("DEP_META_KEY");
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
|
|
||||||
Gson g = new Gson();
|
Gson g = new Gson();
|
||||||
@ -458,4 +461,50 @@ public class VppApplicationManagerImpl implements VPPApplicationManager {
|
|||||||
}
|
}
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
||||||
|
ApplicationManagementException {
|
||||||
|
|
||||||
|
List<VppAssociationDTO> associations = new ArrayList<>(); // To save to UEM DBs
|
||||||
|
List<String> clientUserIds = new ArrayList<>(); // Need this to send to vpp backend.
|
||||||
|
if (asset != null) {
|
||||||
|
for (VppUserDTO vppUserDTO : vppUsers) {
|
||||||
|
VppAssociationDTO associationDTO = VppHttpUtil.getAssociation(vppUserDTO, asset);
|
||||||
|
associations.add(associationDTO);
|
||||||
|
clientUserIds.add(vppUserDTO.getClientUserId());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (associations.size() > 0) {
|
||||||
|
//TODO: Add or Update associations
|
||||||
|
try {
|
||||||
|
|
||||||
|
// Create the VPP backend payload
|
||||||
|
List<VppItuneAssetDTO> assets = new ArrayList<>();
|
||||||
|
VppItuneAssetDTO assetDTO = new VppItuneAssetDTO();
|
||||||
|
assetDTO.setAdamId(asset.getAdamId());
|
||||||
|
assetDTO.setPricingParam(asset.getPricingParam());
|
||||||
|
assets.add(assetDTO);
|
||||||
|
|
||||||
|
VppAssociateRequestWrapper vppAssociate = new VppAssociateRequestWrapper();
|
||||||
|
vppAssociate.setAssets(assets);
|
||||||
|
vppAssociate.setClientUserIds(clientUserIds);
|
||||||
|
|
||||||
|
Gson gson = new Gson();
|
||||||
|
String payload = gson.toJson(vppAssociate);
|
||||||
|
|
||||||
|
ProxyResponse proxyResponse = callVPPBackend(ASSIGNMENTS_POST, payload, TOKEN,
|
||||||
|
Constants.VPP.POST);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
String msg = "Error while adding associations";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new ApplicationManagementException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,26 +17,25 @@
|
|||||||
*/
|
*/
|
||||||
package io.entgra.device.mgt.core.application.mgt.core.internal;
|
package io.entgra.device.mgt.core.application.mgt.core.internal;
|
||||||
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.SPApplicationManager;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.impl.AppmDataHandlerImpl;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.impl.VppApplicationManagerImpl;
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
import org.osgi.service.component.ComponentContext;
|
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.config.LifecycleState;
|
import io.entgra.device.mgt.core.application.mgt.common.config.LifecycleState;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationStorageManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationStorageManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.AppmDataHandler;
|
import io.entgra.device.mgt.core.application.mgt.common.services.AppmDataHandler;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ReviewManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ReviewManager;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.services.SPApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.config.ConfigurationManager;
|
import io.entgra.device.mgt.core.application.mgt.core.config.ConfigurationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
|
import io.entgra.device.mgt.core.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.core.impl.AppmDataHandlerImpl;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.task.ScheduledAppSubscriptionTaskManager;
|
import io.entgra.device.mgt.core.application.mgt.core.task.ScheduledAppSubscriptionTaskManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagementUtil;
|
import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagementUtil;
|
||||||
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
import io.entgra.device.mgt.core.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.osgi.framework.BundleContext;
|
||||||
|
import org.osgi.service.component.ComponentContext;
|
||||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
||||||
import org.wso2.carbon.ntask.core.service.TaskService;
|
import org.wso2.carbon.ntask.core.service.TaskService;
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
@ -118,9 +117,9 @@ public class ApplicationManagementServiceComponent {
|
|||||||
DataHolder.getInstance().setConfigManager(configManager);
|
DataHolder.getInstance().setConfigManager(configManager);
|
||||||
bundleContext.registerService(AppmDataHandler.class.getName(), configManager, null);
|
bundleContext.registerService(AppmDataHandler.class.getName(), configManager, null);
|
||||||
|
|
||||||
|
|
||||||
// TODO: Get the new instance from extension like others
|
// TODO: Get the new instance from extension like others
|
||||||
VppApplicationManagerImpl vppApplicationManager = new VppApplicationManagerImpl();
|
VPPApplicationManager vppApplicationManager = ApplicationManagementUtil
|
||||||
|
.getVPPManagerInstance();
|
||||||
DataHolder.getInstance().setVppApplicationManager(vppApplicationManager);
|
DataHolder.getInstance().setVppApplicationManager(vppApplicationManager);
|
||||||
bundleContext.registerService(VPPApplicationManager.class.getName(), vppApplicationManager, null);
|
bundleContext.registerService(VPPApplicationManager.class.getName(), vppApplicationManager, null);
|
||||||
|
|
||||||
|
|||||||
@ -71,6 +71,7 @@ public class APIUtil {
|
|||||||
private static volatile SubscriptionManager subscriptionManager;
|
private static volatile SubscriptionManager subscriptionManager;
|
||||||
private static volatile ReviewManager reviewManager;
|
private static volatile ReviewManager reviewManager;
|
||||||
private static volatile AppmDataHandler appmDataHandler;
|
private static volatile AppmDataHandler appmDataHandler;
|
||||||
|
private static volatile VPPApplicationManager vppApplicationManager;
|
||||||
|
|
||||||
public static SPApplicationManager getSPApplicationManager() {
|
public static SPApplicationManager getSPApplicationManager() {
|
||||||
if (SPApplicationManager == null) {
|
if (SPApplicationManager == null) {
|
||||||
@ -200,6 +201,29 @@ public class APIUtil {
|
|||||||
return reviewManager;
|
return reviewManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static VPPApplicationManager getVPPManager() {
|
||||||
|
try {
|
||||||
|
if (vppApplicationManager == null) {
|
||||||
|
synchronized (APIUtil.class) {
|
||||||
|
if (vppApplicationManager == null) {
|
||||||
|
vppApplicationManager = ApplicationManagementUtil.getVPPManagerInstance();
|
||||||
|
if (vppApplicationManager == null) {
|
||||||
|
String msg = "Vpp Manager service has not initialized.";
|
||||||
|
log.error(msg);
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = "Error occurred while getting the vpp manager";
|
||||||
|
log.error(msg);
|
||||||
|
throw new IllegalStateException(msg);
|
||||||
|
}
|
||||||
|
return vppApplicationManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To get the DataHandler from the osgi context.
|
* To get the DataHandler from the osgi context.
|
||||||
* @return AppmDataHandler instance in the current osgi context.
|
* @return AppmDataHandler instance in the current osgi context.
|
||||||
@ -424,9 +448,13 @@ public class APIUtil {
|
|||||||
}
|
}
|
||||||
List<ApplicationRelease> applicationReleases = new ArrayList<>();
|
List<ApplicationRelease> applicationReleases = new ArrayList<>();
|
||||||
if (ApplicationType.PUBLIC.toString().equals(applicationDTO.getType()) && application.getCategories()
|
if (ApplicationType.PUBLIC.toString().equals(applicationDTO.getType()) && application.getCategories()
|
||||||
.contains("GooglePlaySyncedApp")) {
|
.contains(Constants.GOOGLE_PLAY_SYNCED_APP)) {
|
||||||
application.setAndroidEnterpriseApp(true);
|
application.setAndroidEnterpriseApp(true);
|
||||||
}
|
}
|
||||||
|
if (ApplicationType.PUBLIC.toString().equals(applicationDTO.getType()) && application.getCategories()
|
||||||
|
.contains(Constants.ApplicationProperties.APPLE_STORE_SYNCED_APP_CATEGORY)) {
|
||||||
|
application.setExternalAppStoreApp(true);
|
||||||
|
}
|
||||||
for (ApplicationReleaseDTO applicationReleaseDTO : applicationDTO.getApplicationReleaseDTOs()) {
|
for (ApplicationReleaseDTO applicationReleaseDTO : applicationDTO.getApplicationReleaseDTOs()) {
|
||||||
applicationReleases.add(releaseDtoToRelease(applicationReleaseDTO));
|
applicationReleases.add(releaseDtoToRelease(applicationReleaseDTO));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,7 @@ import io.entgra.device.mgt.core.application.mgt.common.services.ApplicationStor
|
|||||||
import io.entgra.device.mgt.core.application.mgt.common.services.ReviewManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.ReviewManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.SPApplicationManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.SPApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
import io.entgra.device.mgt.core.application.mgt.common.services.SubscriptionManager;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.ApplicationUpdateWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.ApplicationUpdateWrapper;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.ApplicationWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.ApplicationWrapper;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.CustomAppReleaseWrapper;
|
import io.entgra.device.mgt.core.application.mgt.common.wrapper.CustomAppReleaseWrapper;
|
||||||
@ -44,6 +45,7 @@ import io.entgra.device.mgt.core.application.mgt.common.wrapper.WebAppWrapper;
|
|||||||
import io.entgra.device.mgt.core.application.mgt.core.config.ConfigurationManager;
|
import io.entgra.device.mgt.core.application.mgt.core.config.ConfigurationManager;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.config.Extension;
|
import io.entgra.device.mgt.core.application.mgt.core.config.Extension;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.exception.BadRequestException;
|
import io.entgra.device.mgt.core.application.mgt.core.exception.BadRequestException;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.core.impl.VppApplicationManagerImpl;
|
||||||
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.Base64File;
|
import io.entgra.device.mgt.core.device.mgt.common.Base64File;
|
||||||
import io.entgra.device.mgt.core.device.mgt.common.DeviceManagementConstants;
|
import io.entgra.device.mgt.core.device.mgt.common.DeviceManagementConstants;
|
||||||
@ -202,6 +204,11 @@ public class ApplicationManagementUtil {
|
|||||||
return getInstance(extension, LifecycleStateManager.class);
|
return getInstance(extension, LifecycleStateManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static VPPApplicationManager getVPPManagerInstance() {
|
||||||
|
// TODO: implement as an extension
|
||||||
|
return new VppApplicationManagerImpl();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is useful to delete application artifacts if any error occurred while creating release/application
|
* This is useful to delete application artifacts if any error occurred while creating release/application
|
||||||
* after uploading the artifacts
|
* after uploading the artifacts
|
||||||
|
|||||||
@ -73,6 +73,7 @@ public class Constants {
|
|||||||
|
|
||||||
public static final String GOOGLE_PLAY_STORE_URL = "https://play.google.com/store/apps/details?id=";
|
public static final String GOOGLE_PLAY_STORE_URL = "https://play.google.com/store/apps/details?id=";
|
||||||
public static final String APPLE_STORE_URL = "https://itunes.apple.com/country/app/app-name/id";
|
public static final String APPLE_STORE_URL = "https://itunes.apple.com/country/app/app-name/id";
|
||||||
|
public static final String GOOGLE_PLAY_SYNCED_APP = "GooglePlaySyncedApp";
|
||||||
|
|
||||||
// Subscription task related constants
|
// Subscription task related constants
|
||||||
public static final String SUBSCRIBERS = "SUBSCRIBERS";
|
public static final String SUBSCRIBERS = "SUBSCRIBERS";
|
||||||
@ -207,5 +208,7 @@ public class Constants {
|
|||||||
public static final String DISPLAY = "display";
|
public static final String DISPLAY = "display";
|
||||||
public static final String GENRE_NAMES = "genreNames";
|
public static final String GENRE_NAMES = "genreNames";
|
||||||
public static final String PRICE_ZERO = "0.0";
|
public static final String PRICE_ZERO = "0.0";
|
||||||
|
public static final String ASSOCIATION_DEVICE = "ASSOCIATION_DEVICE";
|
||||||
|
public static final String ASSOCIATION_USER = "ASSOCIATION_USER";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,9 @@ package io.entgra.device.mgt.core.application.mgt.core.util;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||||
|
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
@ -39,6 +42,7 @@ import org.apache.http.impl.client.HttpClients;
|
|||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -282,4 +286,20 @@ public class VppHttpUtil {
|
|||||||
return HttpClients.custom().setMaxConnTotal(1).setMaxConnPerRoute(1).build();
|
return HttpClients.custom().setMaxConnTotal(1).setMaxConnPerRoute(1).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static VppAssociationDTO getAssociation(VppUserDTO user, VppAssetDTO asset) {
|
||||||
|
VppAssociationDTO associationDTO = new VppAssociationDTO();
|
||||||
|
associationDTO.setAdamId(asset.getAdamId());
|
||||||
|
associationDTO.setClientUserId(user.getClientUserId());
|
||||||
|
associationDTO.setPricingParam(asset.getPricingParam());
|
||||||
|
associationDTO.setAssociationType(Constants.ApplicationProperties.ASSOCIATION_USER);
|
||||||
|
|
||||||
|
associationDTO.setAssetId(asset.getId());
|
||||||
|
associationDTO.setClientId(user.getId());
|
||||||
|
associationDTO.setTenantId(PrivilegedCarbonContext.getThreadLocalCarbonContext()
|
||||||
|
.getTenantId(true));
|
||||||
|
associationDTO.setCreatedTime(String.valueOf(System.currentTimeMillis()));
|
||||||
|
associationDTO.setLastUpdatedTime(String.valueOf(System.currentTimeMillis()));
|
||||||
|
return associationDTO;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user