Skip to content

Commit 6018ef6

Browse files
Fix the startup error log with FileUploadExecutorManager
1 parent 6175982 commit 6018ef6

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/internal/CarbonUIServiceComponent.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import org.wso2.carbon.ui.tracker.AuthenticatorRegistry;
6767
import org.wso2.carbon.ui.transports.FileDownloadServlet;
6868
import org.wso2.carbon.ui.transports.FileUploadServlet;
69+
import org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager;
6970
import org.wso2.carbon.ui.util.UIAnnouncementDeployer;
7071
import org.wso2.carbon.user.core.service.RealmService;
7172
import org.wso2.carbon.utils.ConfigurationContextService;
@@ -228,6 +229,14 @@ public void start(BundleContext context) throws Exception {
228229
uiResourceRegistry.setDefaultUIResourceProvider(
229230
uiBundleDeployer.getBundleBasedUIResourcePrvider());
230231

232+
// Create FileUploadExecutorManager early and register it as an OSGi service
233+
// This must be done BEFORE uiBundleDeployer.deploy() so that bundles with
234+
// FileUploadExecutor configurations can be processed properly
235+
ConfigurationContext contextForUpload = isLocalTransportMode ? serverConfigContext : clientConfigContext;
236+
FileUploadExecutorManager fileUploadExecutorManager =
237+
new FileUploadExecutorManager(context, contextForUpload, webContext);
238+
context.registerService(FileUploadExecutorManager.class.getName(), fileUploadExecutorManager, null);
239+
231240
HttpContext commonContext =
232241
new CarbonSecuredHttpContext(context.getBundle(), "/web", uiResourceRegistry, registry);
233242

@@ -251,12 +260,8 @@ public void start(BundleContext context) throws Exception {
251260
context.registerService(Servlet.class, fileDownloadServlet, fileDownloadServletProperties);
252261

253262
// Register file upload servlet using HTTP Whiteboard pattern
254-
Servlet fileUploadServlet;
255-
if (isLocalTransportMode) {
256-
fileUploadServlet = new FileUploadServlet(context, serverConfigContext, webContext);
257-
} else {
258-
fileUploadServlet = new FileUploadServlet(context, clientConfigContext, webContext);
259-
}
263+
// Use the already-created fileUploadExecutorManager
264+
Servlet fileUploadServlet = new FileUploadServlet(context, contextForUpload, webContext, fileUploadExecutorManager);
260265
Dictionary<String, String> fileUploadServletProperties = new Hashtable<>();
261266
fileUploadServletProperties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN,
262267
"/carbon/fileupload/*");

core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/transports/FileUploadServlet.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ public FileUploadServlet(BundleContext context, ConfigurationContext configCtx,
5050
this.webContext = webContext;
5151
}
5252

53+
/**
54+
* Constructor that accepts a pre-created FileUploadExecutorManager.
55+
* This is used when the manager needs to be registered as an OSGi service before
56+
* bundle deployment occurs.
57+
*/
58+
public FileUploadServlet(BundleContext context, ConfigurationContext configCtx,
59+
String webContext, FileUploadExecutorManager executorManager) {
60+
this.bundleContext = context;
61+
this.configContext = configCtx;
62+
this.webContext = webContext;
63+
this.fileUploadExecutorManager = executorManager;
64+
}
65+
5366
protected void doPost(HttpServletRequest request,
5467
HttpServletResponse response) throws ServletException, IOException {
5568

@@ -71,9 +84,12 @@ protected void doGet(HttpServletRequest req, HttpServletResponse res)
7184
public void init(ServletConfig servletConfig) throws ServletException {
7285
this.servletConfig = servletConfig;
7386
try {
74-
fileUploadExecutorManager = new FileUploadExecutorManager(bundleContext, configContext, webContext);
75-
//Registering FileUploadExecutor Manager as an OSGi service
76-
bundleContext.registerService(FileUploadExecutorManager.class.getName(), fileUploadExecutorManager, null);
87+
// Only create a new FileUploadExecutorManager if one wasn't provided via constructor
88+
if (fileUploadExecutorManager == null) {
89+
fileUploadExecutorManager = new FileUploadExecutorManager(bundleContext, configContext, webContext);
90+
//Registering FileUploadExecutor Manager as an OSGi service
91+
bundleContext.registerService(FileUploadExecutorManager.class.getName(), fileUploadExecutorManager, null);
92+
}
7793
} catch (CarbonException e) {
7894
log.error("Exception occurred while trying to initialize FileUploadServlet", e);
7995
throw new ServletException(e);
@@ -83,4 +99,4 @@ public void init(ServletConfig servletConfig) throws ServletException {
8399
public ServletConfig getServletConfig() {
84100
return this.servletConfig;
85101
}
86-
}
102+
}

0 commit comments

Comments
 (0)