Project

General

Profile

Actions

Bug #12354

open

product-uem 7.0.0 GA - Task #12355: windows App locker policy related issues

Windows device sync fail when app locker content is empty/ App locker content must not be empty

Added by Arshana Atapattu 2 months ago. Updated 8 days ago.

Status:
QA
Priority:
Critical
Start date:
10/01/2025
Due date:
20/01/2025 (32 days late)
% Done:

100%

Estimated time:
Device Type:
Component:
Type:
Windows

Description

Environment details
620 staging server

Prerequisites
Enrolled windows device

Steps
create a empty windows app locker policy [2]

Description
When a empty app locker policy is applied on the device, syncing is breaking due to empty app locker policy.
Error from carbon log: [1]

Result
[2]
[2]

[1]
TID: [-1234] [api/device-mgt/windows/v1.0] [2024-12-17 07:12:06,692] ERROR {org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/api/device-mgt/windows/v1.0].[JAXServlet-windows]} - Servlet.service() for servlet [JAXServlet-windows] in context with path [/api/device-mgt/windows/v1.0] threw exception com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 22 path $.appLockerContent
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:270)
at com.google.gson.Gson.fromJson(Gson.java:1058)
at com.google.gson.Gson.fromJson(Gson.java:1016)
at com.google.gson.Gson.fromJson(Gson.java:959)
at com.google.gson.Gson.fromJson(Gson.java:927)
at io.entgra.proprietary.uem.platform.windows.api.operations.util.OperationReply.buildSequence(OperationReply.java:954)
at io.entgra.proprietary.uem.platform.windows.api.operations.util.OperationReply.appendOperations(OperationReply.java:306)
at io.entgra.proprietary.uem.platform.windows.api.operations.util.OperationReply.generateBody(OperationReply.java:191)
at io.entgra.proprietary.uem.platform.windows.api.operations.util.OperationReply.generateReply(OperationReply.java:145)
at io.entgra.proprietary.uem.platform.windows.api.operations.util.OperationReply.generateReply(OperationReply.java:138)
at io.entgra.proprietary.uem.platform.windows.api.services.impl.DeviceManagementServiceImpl.getResponse(DeviceManagementServiceImpl.java:175)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:279)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:119)
at org.wso2.carbon.identity.context.rewrite.valve.OrganizationContextRewriteValve.invoke(OrganizationContextRewriteValve.java:116)
at org.wso2.carbon.tomcat.ext.valves.SameSiteCookieValve.invoke(SameSiteCookieValve.java:38)
at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:165)
at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:118)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:106)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at io.entgra.device.mgt.core.webapp.authenticator.framework.WebappAuthenticationValve.invoke(WebappAuthenticationValve.java:103)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:67)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:152)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:63)
at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:137)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 22 path $.appLockerContent
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:360)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:161)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:266)


Files

Screenshot from 2024-12-17 12-46-54.png (110 KB) Screenshot from 2024-12-17 12-46-54.png [2] Arshana Atapattu, 17/12/2024 07:17 AM
Actions #1

Updated by Arshana Atapattu 2 months ago

  • Parent task set to #12355
Actions #2

Updated by Navod Zoysa 2 months ago

  • Assignee set to Sathira Perera
Actions #3

Updated by Sathira Perera about 2 months ago

  • Type changed from UI to Windows
Actions #4

Updated by Sathira Perera about 1 month ago

  • Status changed from New to Implementation
  • Start date changed from 17/12/2024 to 10/01/2025
  • % Done changed from 0 to 90
Actions #5

Updated by Sathira Perera about 1 month ago

  • Due date set to 20/01/2025
  • % Done changed from 90 to 100
Actions #7

Updated by Sathira Perera about 1 month ago

  • Status changed from Implementation to QA
Actions #8

Updated by Diniru Banuka 22 days ago

  • Status changed from QA to Closed
Actions #9

Updated by Arshana Atapattu 18 days ago

  • Project changed from product-uem 7.1.0 GA to product-uem 7.0.0 GA
Actions #10

Updated by Diniru Banuka 18 days ago

  • Status changed from Closed to Needs Improvement
Actions #11

Updated by Diniru Banuka 18 days ago

Just make sure only the fields that are necessary are marked as required. Don’t mark all the fields as required, only the ones that actually need to be filled in

Actions #12

Updated by Sathira Perera 15 days ago

  • Status changed from Needs Improvement to Implementation
  • % Done changed from 100 to 90
Actions #13

Updated by Sathira Perera 15 days ago

  • % Done changed from 90 to 100

Required tags should be removed from non-required tags. The back end should be able to handle empty data that the user has not entered when filling the form. This is for app locker policy under Windows policies.
https://github.com/entgra-proprietary/emm-proprietary-plugins/pull/92

Actions #14

Updated by Arshana Atapattu 14 days ago

  • Project changed from product-uem 7.0.0 GA to product-uem 6.4.0 GA
Actions #15

Updated by Rajitha Kumara 8 days ago

  • Status changed from Implementation to QA
Actions

Also available in: Atom PDF