forked from community/device-mgt-plugins
Windows enterprise application installation feature Closes product-iots#39 See merge request entgra/carbon-device-mgt-plugins!11revert-dabc3590
commit
02bc4ff013
@ -0,0 +1,277 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.bean;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.apache.juli.logging.Log;
|
||||||
|
import org.apache.juli.logging.LogFactory;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.common.PluginConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions.SyncmlOperationException;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions.ProfileConfigurationException;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.*;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.Constants;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.OperationCode;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.util.SyncmlGenerator;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@ApiModel(value = "EnterpriseApplication", description = "Information related to Enterprise Application.")
|
||||||
|
public class EnterpriseApplication extends WindowsOperation {
|
||||||
|
|
||||||
|
private static Log log = LogFactory.getLog(EnterpriseApplication.class);
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "packageURL", value = "Package URL.")
|
||||||
|
private HostedAppxApplication hostedAppxApplication;
|
||||||
|
@ApiModelProperty(name = "packageFamilyName", value = "Package family name.")
|
||||||
|
private HostedMSIApplication hostedMSIApplication;
|
||||||
|
|
||||||
|
public HostedAppxApplication getHostedAppxApplication() {
|
||||||
|
return hostedAppxApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHostedAppxApplication(HostedAppxApplication hostedAppxApplication) {
|
||||||
|
this.hostedAppxApplication = hostedAppxApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HostedMSIApplication getHostedMSIApplication() {
|
||||||
|
return hostedMSIApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHostedMSIApplication(HostedMSIApplication hostedMSIApplication) {
|
||||||
|
this.hostedMSIApplication = hostedMSIApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void validateRequest() throws ProfileConfigurationException {
|
||||||
|
if (getHostedAppxApplication() != null) {
|
||||||
|
if (isNullOrEmpty(getHostedAppxApplication().getpackageUri())) {
|
||||||
|
throw new ProfileConfigurationException(
|
||||||
|
"Appx package URL is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
if (isNullOrEmpty(getHostedAppxApplication().getpackageFamilyName())) {
|
||||||
|
throw new ProfileConfigurationException(
|
||||||
|
"Appx package Family Name is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
} else if (getHostedMSIApplication() != null) {
|
||||||
|
if (isNullOrEmpty(getHostedMSIApplication().getProductId())) {
|
||||||
|
throw new ProfileConfigurationException(
|
||||||
|
"MSI product ID is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
if (isNullOrEmpty(getHostedMSIApplication().getContentUrl())) {
|
||||||
|
throw new ProfileConfigurationException(
|
||||||
|
"MSI product content download URL is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
if (isNullOrEmpty(getHostedMSIApplication().getFileHash())) {
|
||||||
|
throw new ProfileConfigurationException(
|
||||||
|
"MSI product file hash is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new ProfileConfigurationException("MSI or APPX payload is not found for enterprise app installation");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Object> createOperationContent(Operation operation) throws WindowsOperationException {
|
||||||
|
List<Object> enterpriseApplicationContent = new ArrayList<>();
|
||||||
|
if (getHostedAppxApplication() != null) {
|
||||||
|
enterpriseApplicationContent.addAll(createAddTag(operation.getId(),
|
||||||
|
OperationCode.Command.INSTALL_ENTERPRISE_APPX_APPLICATION.getCode(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.PACKAGE_FAMILY_NAME,
|
||||||
|
getHostedAppxApplication().getpackageFamilyName(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.TYPE_APPX));
|
||||||
|
enterpriseApplicationContent.addAll(createExecuteTag(operation.getId(),
|
||||||
|
OperationCode.Command.INSTALL_ENTERPRISE_APPX_APPLICATION.getCode(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.PACKAGE_FAMILY_NAME,
|
||||||
|
getHostedAppxApplication().getpackageFamilyName()
|
||||||
|
+ PluginConstants.ApplicationInstallProperties.HOSTED_INSTALL,
|
||||||
|
PluginConstants.ApplicationInstallProperties.TYPE_APPX));
|
||||||
|
} else if (getHostedMSIApplication() != null) {
|
||||||
|
enterpriseApplicationContent.addAll(createAddTag(operation.getId(),
|
||||||
|
OperationCode.Command.INSTALL_ENTERPRISE_MSI_APPLICATION.getCode(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.PRODUCT_ID, getHostedMSIApplication().getProductId(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.TYPE_MSI));
|
||||||
|
enterpriseApplicationContent.addAll(createExecuteTag(operation.getId(),
|
||||||
|
OperationCode.Command.INSTALL_ENTERPRISE_MSI_APPLICATION.getCode(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.PRODUCT_ID, getHostedMSIApplication().getProductId(),
|
||||||
|
PluginConstants.ApplicationInstallProperties.TYPE_MSI));
|
||||||
|
}
|
||||||
|
return enterpriseApplicationContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Create add objects required for APPX or MSI application installation which then will be converted as AddTag
|
||||||
|
* elements to add in SyncML XML.
|
||||||
|
*
|
||||||
|
* @param operationId used to set as command ID
|
||||||
|
* @param operationCode is the LocURI
|
||||||
|
* @param replaceOld operation code placeholder
|
||||||
|
* @param replaceNew replace value of operation code placeholder
|
||||||
|
* @param appType APPX or MSI
|
||||||
|
* @return list of AddTag objects
|
||||||
|
*/
|
||||||
|
private List<AddTag> createAddTag(int operationId, String operationCode, String replaceOld, String replaceNew,
|
||||||
|
String appType) {
|
||||||
|
List<AddTag> addTagList = new ArrayList<>();
|
||||||
|
List<ItemTag> itemTagList = new ArrayList<>();
|
||||||
|
AddTag addTag = new AddTag();
|
||||||
|
ItemTag itemTag = new ItemTag();
|
||||||
|
TargetTag targetTag = new TargetTag();
|
||||||
|
String locUri = operationCode.replace(replaceOld, replaceNew);
|
||||||
|
targetTag.setLocURI(locUri);
|
||||||
|
itemTag.setTarget(targetTag);
|
||||||
|
itemTagList.add(itemTag);
|
||||||
|
addTag.setCommandId(operationId);
|
||||||
|
addTag.setItems(itemTagList);
|
||||||
|
addTagList.add(addTag);
|
||||||
|
if (PluginConstants.ApplicationInstallProperties.TYPE_APPX.equals(appType)) {
|
||||||
|
if (!isNullOrEmpty(getHostedAppxApplication().getCertificateHash()) && !isNullOrEmpty(
|
||||||
|
getHostedAppxApplication().getEncodedCertificate())) {
|
||||||
|
List<ItemTag> certItemTagList = new ArrayList<>();
|
||||||
|
AddTag certAddTag = new AddTag();
|
||||||
|
ItemTag certItemTag = new ItemTag();
|
||||||
|
MetaTag certMetaTag = new MetaTag();
|
||||||
|
TargetTag certTargetTag = new TargetTag();
|
||||||
|
certTargetTag.setLocURI(OperationCode.Command.INSTALL_ENTERPRISE_APPX_CERTIFICATE.getCode()
|
||||||
|
.replace(PluginConstants.ApplicationInstallProperties.CERT_HASH,
|
||||||
|
getHostedAppxApplication().getCertificateHash()));
|
||||||
|
certMetaTag.setFormat(Constants.META_FORMAT_B64);
|
||||||
|
certItemTag.setTarget(certTargetTag);
|
||||||
|
certItemTag.setMeta(certMetaTag);
|
||||||
|
certItemTag.setData(getHostedAppxApplication().getEncodedCertificate());
|
||||||
|
certItemTagList.add(certItemTag);
|
||||||
|
certAddTag.setCommandId(operationId);
|
||||||
|
certAddTag.setItems(certItemTagList);
|
||||||
|
addTagList.add(certAddTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return addTagList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Create execute objects required for APPX or MSI application installation which then will be converted as
|
||||||
|
* ExecuteTag elements to add in SyncML XML.
|
||||||
|
*
|
||||||
|
* @param operationId used to set as command ID
|
||||||
|
* @param operationCode is the LocURI
|
||||||
|
* @param replaceOld operation code placeholder
|
||||||
|
* @param replaceNew replace value of operation code placeholder
|
||||||
|
* @param appType APPX or MSI
|
||||||
|
* @return list of ExecuteTag objects
|
||||||
|
* @throws WindowsOperationException
|
||||||
|
*/
|
||||||
|
private List<ExecuteTag> createExecuteTag(int operationId, String operationCode, String replaceOld,
|
||||||
|
String replaceNew, String appType) throws WindowsOperationException {
|
||||||
|
List<ExecuteTag> executeTagList = new ArrayList<>();
|
||||||
|
List<ItemTag> itemTagList = new ArrayList<>();
|
||||||
|
ExecuteTag executeTag = new ExecuteTag();
|
||||||
|
ItemTag itemTag = new ItemTag();
|
||||||
|
MetaTag metaTag = new MetaTag();
|
||||||
|
TargetTag targetTag = new TargetTag();
|
||||||
|
Document document;
|
||||||
|
Element dependencyElement;
|
||||||
|
targetTag.setLocURI(operationCode.replace(replaceOld, replaceNew));
|
||||||
|
metaTag.setFormat(Constants.META_FORMAT_XML);
|
||||||
|
try {
|
||||||
|
if (PluginConstants.ApplicationInstallProperties.TYPE_APPX.equals(appType)) {
|
||||||
|
document = SyncmlGenerator.generateDocument();
|
||||||
|
Element applicationElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.APPLICATION);
|
||||||
|
applicationElement.setAttribute(PluginConstants.ApplicationInstallProperties.PACKAGE_URI,
|
||||||
|
getHostedAppxApplication().getpackageUri());
|
||||||
|
if (!isNullOrEmpty(getHostedAppxApplication().getDependencyPackageUri())) {
|
||||||
|
Element dependenciesElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.DEPENDENCIES);
|
||||||
|
for (String dependency : getHostedAppxApplication().getDependencyPackageUri()) {
|
||||||
|
dependencyElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.DEPENDENCY);
|
||||||
|
dependencyElement
|
||||||
|
.setAttribute(PluginConstants.ApplicationInstallProperties.PACKAGE_URI, dependency);
|
||||||
|
dependenciesElement.appendChild(dependencyElement);
|
||||||
|
}
|
||||||
|
applicationElement.appendChild(dependenciesElement);
|
||||||
|
}
|
||||||
|
itemTag.setElementData(applicationElement);
|
||||||
|
} else if (PluginConstants.ApplicationInstallProperties.TYPE_MSI.equals(appType)) {
|
||||||
|
metaTag.setType(Constants.META_TYPE_TEXT_PLAIN);
|
||||||
|
document = SyncmlGenerator.generateDocument();
|
||||||
|
Element contentURLElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.CONTENT_URL);
|
||||||
|
contentURLElement.setTextContent(getHostedMSIApplication().getContentUrl());
|
||||||
|
Element contentURLListElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.CONTENT_URL_LIST);
|
||||||
|
contentURLListElement.appendChild(contentURLElement);
|
||||||
|
Element downloadElement = document.createElement(PluginConstants.ApplicationInstallProperties.DOWNLOAD);
|
||||||
|
downloadElement.appendChild(contentURLListElement);
|
||||||
|
Element fileHashElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.FILE_HASH);
|
||||||
|
fileHashElement.setTextContent(getHostedMSIApplication().getFileHash());
|
||||||
|
Element validationElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.VALIDATION);
|
||||||
|
validationElement.appendChild(fileHashElement);
|
||||||
|
Element enforcementElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.ENFORCEMENT);
|
||||||
|
Element commandLineElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.COMMAND_LINE);
|
||||||
|
commandLineElement.setTextContent(PluginConstants.ApplicationInstallProperties.COMMAND_LINE_VALUE);
|
||||||
|
enforcementElement.appendChild(commandLineElement);
|
||||||
|
Element timeOutElement = document.createElement(PluginConstants.ApplicationInstallProperties.TIMEOUT);
|
||||||
|
timeOutElement.setTextContent(PluginConstants.ApplicationInstallProperties.TIMEOUT_VALUE);
|
||||||
|
enforcementElement.appendChild(timeOutElement);
|
||||||
|
Element retryCountElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.RETRY_COUNT);
|
||||||
|
retryCountElement.setTextContent(PluginConstants.ApplicationInstallProperties.RETRY_COUNT_VALUE);
|
||||||
|
enforcementElement.appendChild(retryCountElement);
|
||||||
|
Element retryIntervalElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.RETRY_INTERVAL);
|
||||||
|
retryIntervalElement.setTextContent(PluginConstants.ApplicationInstallProperties.RETRY_INTERVAL_VALUE);
|
||||||
|
enforcementElement.appendChild(retryIntervalElement);
|
||||||
|
Element productElement = document.createElement(PluginConstants.ApplicationInstallProperties.PRODUCT);
|
||||||
|
productElement.setAttribute(PluginConstants.ApplicationInstallProperties.VERSION,
|
||||||
|
PluginConstants.ApplicationInstallProperties.VERSION_VALUE);
|
||||||
|
productElement.appendChild(downloadElement);
|
||||||
|
productElement.appendChild(validationElement);
|
||||||
|
productElement.appendChild(enforcementElement);
|
||||||
|
Element msiInstallJobElement = document
|
||||||
|
.createElement(PluginConstants.ApplicationInstallProperties.MSI_INSTALL_JOB);
|
||||||
|
msiInstallJobElement.setAttribute(PluginConstants.ApplicationInstallProperties.ID,
|
||||||
|
PluginConstants.ApplicationInstallProperties.URL_ESCAPED_OPEN_CURLY + getHostedMSIApplication()
|
||||||
|
.getProductId() + PluginConstants.ApplicationInstallProperties.URL_ESCAPED_CLOSE_CURLY);
|
||||||
|
msiInstallJobElement.appendChild(productElement);
|
||||||
|
itemTag.setElementData(msiInstallJobElement);
|
||||||
|
}
|
||||||
|
} catch (SyncmlOperationException e) {
|
||||||
|
String errorMsg = "Error occurred while generating a document to add as a node to Data element of Execute "
|
||||||
|
+ "command which is required to Install " + appType + " application.";
|
||||||
|
log.error(errorMsg);
|
||||||
|
throw new WindowsOperationException(errorMsg, e);
|
||||||
|
}
|
||||||
|
itemTag.setTarget(targetTag);
|
||||||
|
itemTag.setMeta(metaTag);
|
||||||
|
itemTagList.add(itemTag);
|
||||||
|
executeTag.setCommandId(operationId);
|
||||||
|
executeTag.setItems(itemTagList);
|
||||||
|
executeTagList.add(executeTag);
|
||||||
|
return executeTagList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.bean;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class HostedAppxApplication {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "packageUri", value = "Package URL.", required = true)
|
||||||
|
private String packageUri;
|
||||||
|
@ApiModelProperty(name = "packageFamilyName", value = "Package family name.", required = true)
|
||||||
|
private String packageFamilyName;
|
||||||
|
@ApiModelProperty(name = "dependencyPackageURLs", value = "Dependency Package URLs.")
|
||||||
|
private List<String> dependencyPackageUri;
|
||||||
|
@ApiModelProperty(name = "certificateHash", value = "Application signed SHA1 certificate hash.")
|
||||||
|
private String certificateHash;
|
||||||
|
@ApiModelProperty(name = "encodedCertificate", value = "Application signed Base64 encoded certificate.")
|
||||||
|
private String encodedCertificate;
|
||||||
|
|
||||||
|
public String getpackageUri() {
|
||||||
|
return packageUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setpackageUri (String packageUri) {
|
||||||
|
this.packageUri = packageUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getpackageFamilyName() {
|
||||||
|
return packageFamilyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setpackageFamilyName(String packageFamilyName) {
|
||||||
|
this.packageFamilyName = packageFamilyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getDependencyPackageUri() {
|
||||||
|
return dependencyPackageUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDependencyPackageUri(List<String> dependencyPackageUri) {
|
||||||
|
this.dependencyPackageUri = dependencyPackageUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificateHash() {
|
||||||
|
return certificateHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCertificateHash(String certificateHash) {
|
||||||
|
this.certificateHash = certificateHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEncodedCertificate() {
|
||||||
|
return encodedCertificate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEncodedCertificate(String encodedCertificate) {
|
||||||
|
this.encodedCertificate = encodedCertificate;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.bean;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
public class HostedMSIApplication {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "productId", value = "Product ID.", required = true)
|
||||||
|
private String productId;
|
||||||
|
@ApiModelProperty(name = "contentUrl", value = "Content URL.", required = true)
|
||||||
|
private String contentUrl;
|
||||||
|
@ApiModelProperty(name = "fileHash", value = "File Hash.", required = true)
|
||||||
|
private String fileHash;
|
||||||
|
|
||||||
|
public String getProductId() {
|
||||||
|
return productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductId(String productId) {
|
||||||
|
this.productId = productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getContentUrl() {
|
||||||
|
return contentUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContentUrl(String contentUrl) {
|
||||||
|
this.contentUrl = contentUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileHash() {
|
||||||
|
return fileHash;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileHash(String fileHash) {
|
||||||
|
this.fileHash = fileHash;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.bean;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.operations.WindowsOperationException;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* This abstract class is used for extending generic functions with regard to operation.
|
||||||
|
*/
|
||||||
|
public abstract class WindowsOperation {
|
||||||
|
|
||||||
|
public abstract List<Object> createOperationContent(Operation operation) throws WindowsOperationException;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Converts operation object to a json format.
|
||||||
|
*
|
||||||
|
* @return JSON formatted String
|
||||||
|
*/
|
||||||
|
public String toJSON() {
|
||||||
|
Gson gson = new Gson();
|
||||||
|
return gson.toJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given string is null or empty
|
||||||
|
*
|
||||||
|
* @param value string value to check
|
||||||
|
* @return boolean value of null or empty
|
||||||
|
*/
|
||||||
|
public boolean isNullOrEmpty(String value) {
|
||||||
|
return value == null || value.trim().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Checks if the given list is null or empty
|
||||||
|
*
|
||||||
|
* @param value string list value to check
|
||||||
|
* @return boolean value of null or empty
|
||||||
|
*/
|
||||||
|
public boolean isNullOrEmpty(List<String> value) {
|
||||||
|
return value == null || value.isEmpty();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.bean.wrapper;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.wso2.carbon.device.mgt.mobile.windows.api.bean.EnterpriseApplication;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@ApiModel(value = "EnterpriseApplicationBeanWrapper",
|
||||||
|
description = "Information related to Enterprise Application.")
|
||||||
|
public class EnterpriseApplicationBeanWrapper {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "deviceIDs",
|
||||||
|
value = "List of device Ids to be need to execute operation.", required = true)
|
||||||
|
private List<String> deviceIDs;
|
||||||
|
@ApiModelProperty(name = "operation",
|
||||||
|
value = "Enterprise Application.", required = true)
|
||||||
|
private EnterpriseApplication operation;
|
||||||
|
|
||||||
|
public List<String> getDeviceIDs() {
|
||||||
|
return deviceIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceIDs(List<String> deviceIDs) {
|
||||||
|
this.deviceIDs = deviceIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EnterpriseApplication getOperation() {
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOperation(EnterpriseApplication operation) {
|
||||||
|
this.operation = operation;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, 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 org.wso2.carbon.device.mgt.mobile.windows.api.common.exceptions;
|
||||||
|
|
||||||
|
public class ProfileConfigurationException extends Exception {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 8025559931927889261L;
|
||||||
|
|
||||||
|
public ProfileConfigurationException(String errorMsg) {
|
||||||
|
super(errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProfileConfigurationException(String errorMsg, Throwable throwable) {
|
||||||
|
super(errorMsg, throwable);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue