From abdc438b8d07ca59a6dbc87bb8a2656cb69f4edb Mon Sep 17 00:00:00 2001 From: Arunan Date: Thu, 30 Jan 2025 23:03:47 +0530 Subject: [PATCH 1/3] Revert https://github.com/wso2/product-micro-integrator/pull/3835 --- .../deployer/CarbonApplication.java | 7 ------ .../synapse/deployer/SynapseAppDeployer.java | 24 ++++++------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/CarbonApplication.java b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/CarbonApplication.java index c9e00c20e2..3a3c279beb 100644 --- a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/CarbonApplication.java +++ b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/CarbonApplication.java @@ -111,12 +111,5 @@ public void setMainSequence(String mainSequence) { this.mainSequence = mainSequence; } - public ClassLoader getClassLoader() { - return classLoader; - } - - public void setClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader; - } } diff --git a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java index 30a2a6b967..f848661321 100644 --- a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java +++ b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java @@ -132,12 +132,8 @@ public void deployArtifacts(CarbonApplication carbonApp, AxisConfiguration axisC List artifacts = carbonApp.getAppConfig().getApplicationArtifact() .getDependencies(); - if (carbonApp.getClassLoader() == null) { - carbonApp.setClassLoader(new LibClassLoader(new URL[0], Utils.getClassLoader - (LibDeployerUtils.class.getClassLoader(), carbonApp.getExtractedPath(), false))); - } - deployClassMediators(artifacts, axisConfig, carbonApp); - deploySynapseLibrary(artifacts, axisConfig, carbonApp); + deployClassMediators(artifacts, axisConfig); + deploySynapseLibrary(artifacts, axisConfig); Map> artifactTypeMap = getOrderedArtifactsMap(artifacts); //deploy artifacts @@ -361,9 +357,7 @@ private void deployClassMediators(List artifacts, AxisConfi String artifactPath = artifact.getExtractedPath() + File.separator + fileName; try { - DeploymentFileData deploymentFileData = new DeploymentFileData(new File(artifactPath), deployer); - deploymentFileData.setClassLoader(carbonApplication.getClassLoader()); - deployer.deploy(deploymentFileData); + deployer.deploy(new DeploymentFileData(new File(artifactPath), deployer)); artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_DEPLOYED); } catch (DeploymentException e) { artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_FAILED); @@ -381,8 +375,8 @@ private void deployClassMediators(List artifacts, AxisConfi * @param axisConfig AxisConfiguration of the current tenant * @throws DeploymentException if something goes wrong while deployment */ - private void deploySynapseLibrary(List artifacts, AxisConfiguration axisConfig, - CarbonApplication carbonApplication) throws DeploymentException { + private void deploySynapseLibrary(List artifacts, AxisConfiguration axisConfig) + throws DeploymentException { for (Artifact.Dependency dependency : artifacts) { Artifact artifact = dependency.getArtifact(); @@ -406,9 +400,7 @@ private void deploySynapseLibrary(List artifacts, AxisConfi artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_DEPLOYED); } else { try { - DeploymentFileData deploymentFileData = new DeploymentFileData(new File(artifactPath), deployer); - deploymentFileData.setClassLoader(carbonApplication.getClassLoader()); - deployer.deploy(deploymentFileData); + deployer.deploy(new DeploymentFileData(new File(artifactPath), deployer)); artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_DEPLOYED); try { String artifactName = getArtifactName(artifactPath, axisConfig); @@ -1133,9 +1125,7 @@ public void deployArtifactType(List artifacts, CarbonApplic } else { try { setCustomLogContent(deployer, carbonApp); - DeploymentFileData deploymentFileData = new DeploymentFileData(new File(artifactPath), deployer); - deploymentFileData.setClassLoader(carbonApp.getClassLoader()); - deployer.deploy(deploymentFileData); + deployer.deploy(new DeploymentFileData(new File(artifactPath), deployer)); artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_DEPLOYED); } catch (DeploymentException e) { artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_FAILED); From cd1a7244da83b34c6eb4f27992a6ead65229dc18 Mon Sep 17 00:00:00 2001 From: Arunan Date: Thu, 30 Jan 2025 23:05:54 +0530 Subject: [PATCH 2/3] Improve connector dependency deployment Related PR https://github.com/wso2/wso2-synapse/pulls --- .../deployer/AppDeployerUtils.java | 1 + .../application/deployer/config/Artifact.java | 10 ++++ .../deployer/handler/DefaultAppDeployer.java | 8 +++- .../synapse/deployer/SynapseAppDeployer.java | 46 +++++++++++++++++-- .../deployer/SynapseAppDeployerConstants.java | 1 + 5 files changed, 59 insertions(+), 7 deletions(-) diff --git a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/AppDeployerUtils.java b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/AppDeployerUtils.java index 935e8b3c9c..7af884078c 100644 --- a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/AppDeployerUtils.java +++ b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/AppDeployerUtils.java @@ -265,6 +265,7 @@ public static Artifact populateArtifact(OMElement artifactEle) { artifact.setMainSequence(readAttribute(artifactEle, Artifact.MAIN_SEQUENCE)); artifact.setType(readAttribute(artifactEle, Artifact.TYPE)); artifact.setServerRole(readAttribute(artifactEle, Artifact.SERVER_ROLE)); + artifact.setConnector(readAttribute(artifactEle, Artifact.CONNECTOR)); // read the dependencies Iterator itr = artifactEle.getChildrenWithLocalName(Artifact.DEPENDENCY); diff --git a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/config/Artifact.java b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/config/Artifact.java index 4308dc2ae3..ba0cfd3600 100644 --- a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/config/Artifact.java +++ b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/config/Artifact.java @@ -36,6 +36,7 @@ public class Artifact { public static final String ARTIFACT = "artifact"; public static final String DEPENDENCY = "dependency"; public static final String SERVER_ROLE = "serverRole"; + public static final String CONNECTOR = "connector"; public static final String SUB_ARTIFACTS = "subArtifacts"; public static final String FILE = "file"; @@ -50,6 +51,7 @@ public class Artifact { private String runtimeObjectName; private String deploymentStatus; private String mainSequence; + private String connector; private List dependencies; private List subArtifacts; @@ -166,6 +168,14 @@ public void setMainSequence(String mainSequence) { this.mainSequence = mainSequence; } + public String getConnector() { + return connector; + } + + public void setConnector(String connector) { + this.connector = connector; + } + public static class Dependency { private String name; private String version; diff --git a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/handler/DefaultAppDeployer.java b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/handler/DefaultAppDeployer.java index a79fdefe7d..860de40bb5 100644 --- a/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/handler/DefaultAppDeployer.java +++ b/components/org.wso2.micro.integrator.core/src/main/java/org/wso2/micro/application/deployer/handler/DefaultAppDeployer.java @@ -50,6 +50,7 @@ public class DefaultAppDeployer implements AppDeploymentHandler { public static final String DS_TYPE = "service/dataservice"; public static final String BUNDLE_TYPE = "bundle"; public static final String MEDIATOR_TYPE = "lib/synapse/mediator"; + public static final String CONNECTOR_DEPENDENCY_TYPE = "lib/connector/dependency"; public static final String DS_DIR = "dataservices"; @@ -172,7 +173,9 @@ private void deployRecursively(List deps, AxisConfiguration artifact.setDeploymentStatus(org.wso2.micro.application.deployer.AppDeployerConstants.DEPLOYMENT_STATUS_FAILED); throw e; } - } else if (MEDIATOR_TYPE.equals(artifact.getType())) { // skip bundle installation for mediators + } else if (MEDIATOR_TYPE.equals(artifact.getType()) || + CONNECTOR_DEPENDENCY_TYPE.equals(artifact.getType())) { + // skip bundle installation for mediators & connector dependencies continue; } else if ((artifact.getType().startsWith("lib/") || BUNDLE_TYPE. equals(artifact.getType())) @@ -236,7 +239,8 @@ private void undeployRecursively(List deps, artifact.setDeploymentStatus(org.wso2.micro.application.deployer.AppDeployerConstants.DEPLOYMENT_STATUS_FAILED); log.error("Error while undeploying artifact : " + artifactPath, e); } - } else if (MEDIATOR_TYPE.equals(artifact.getType())) { + } else if (MEDIATOR_TYPE.equals(artifact.getType()) || + CONNECTOR_DEPENDENCY_TYPE.equals(artifact.getType())) { continue; } else if (artifact.getType() != null && (artifact.getType().startsWith("lib/") || BUNDLE_TYPE.equals(artifact.getType())) diff --git a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java index f848661321..81ea617efd 100644 --- a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java +++ b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployer.java @@ -28,7 +28,6 @@ import org.apache.axis2.deployment.DeploymentEngine; import org.apache.axis2.deployment.DeploymentException; import org.apache.axis2.deployment.repository.util.DeploymentFileData; -import org.apache.axis2.deployment.util.Utils; import org.apache.axis2.description.Parameter; import org.apache.axis2.engine.AxisConfiguration; import org.apache.commons.io.FileUtils; @@ -61,7 +60,6 @@ import org.apache.synapse.endpoints.Endpoint; import org.apache.synapse.endpoints.Template; import org.apache.synapse.inbound.InboundEndpoint; -import org.apache.synapse.libraries.LibClassLoader; import org.apache.synapse.libraries.imports.SynapseImport; import org.apache.synapse.libraries.model.Library; import org.apache.synapse.libraries.util.LibDeployerUtils; @@ -91,7 +89,6 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -133,6 +130,7 @@ public void deployArtifacts(CarbonApplication carbonApp, AxisConfiguration axisC .getDependencies(); deployClassMediators(artifacts, axisConfig); + deployConnectorDependencies(artifacts, axisConfig); deploySynapseLibrary(artifacts, axisConfig); Map> artifactTypeMap = getOrderedArtifactsMap(artifacts); @@ -338,8 +336,8 @@ && handleMainFaultSeqUndeployment(artifact, axisConfig)) { * @param axisConfig AxisConfiguration of the current tenant * @throws DeploymentException if something goes wrong while deployment */ - private void deployClassMediators(List artifacts, AxisConfiguration axisConfig, - CarbonApplication carbonApplication) throws DeploymentException { + private void deployClassMediators(List artifacts, AxisConfiguration axisConfig) + throws DeploymentException { for (Artifact.Dependency dependency : artifacts) { Artifact artifact = dependency.getArtifact(); @@ -368,6 +366,44 @@ private void deployClassMediators(List artifacts, AxisConfi } } + /** + * Deploy the connector dependencies contains in the CApp + * + * @param artifacts List of Artifacts contains in the capp + * @param axisConfig AxisConfiguration of the current tenant + * @throws DeploymentException + */ + private void deployConnectorDependencies(List artifacts, AxisConfiguration axisConfig) + throws DeploymentException { + + for (Artifact.Dependency dependency : artifacts) { + + Artifact artifact = dependency.getArtifact(); + if (!validateArtifact(artifact)) { + continue; + } + if (SynapseAppDeployerConstants.CONNECTOR_DEPENDENCY_TYPE.equals(artifact.getType())) { + Deployer deployer = getSynapseLibraryDeployer(axisConfig); + if (deployer != null) { + artifact.setRuntimeObjectName(artifact.getName()); + String fileName = artifact.getFiles().get(0).getName(); + String artifactPath = artifact.getExtractedPath() + File.separator + fileName; + + try { + if (deployer instanceof LibraryArtifactDeployer) { + ((LibraryArtifactDeployer) deployer).deployLibraryDependency( + new DeploymentFileData(new File(artifactPath), deployer), artifact.getConnector()); + } + artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_DEPLOYED); + } catch (DeploymentException e) { + artifact.setDeploymentStatus(AppDeployerConstants.DEPLOYMENT_STATUS_FAILED); + throw e; + } + } + } + } + } + /** * Deploy synapse libraries contains in the CApp * diff --git a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployerConstants.java b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployerConstants.java index 1888acbd8d..1dc3755a49 100644 --- a/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployerConstants.java +++ b/components/org.wso2.micro.integrator.initializer/src/main/java/org/wso2/micro/integrator/initializer/deployment/synapse/deployer/SynapseAppDeployerConstants.java @@ -29,6 +29,7 @@ public class SynapseAppDeployerConstants { public static final String MESSAGE_STORE_TYPE = "synapse/message-store"; public static final String MESSAGE_PROCESSOR_TYPE="synapse/message-processors"; public static final String MEDIATOR_TYPE = "lib/synapse/mediator"; + public static final String CONNECTOR_DEPENDENCY_TYPE = "lib/connector/dependency"; public static final String API_TYPE = "synapse/api"; public static final String TEMPLATE_TYPE = "synapse/template"; public static final String INBOUND_ENDPOINT_TYPE = "synapse/inbound-endpoint"; From 153348920ab480e6b788829c4a1ff9049ba2aa46 Mon Sep 17 00:00:00 2001 From: Arunan Date: Fri, 31 Jan 2025 16:28:08 +0530 Subject: [PATCH 3/3] Upgrade synapse version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 41cbb573fa..eba85007a0 100644 --- a/pom.xml +++ b/pom.xml @@ -1617,7 +1617,7 @@ 2.4.0-b180830.0359 2.3.0 2.3.1 - 4.0.0-wso2v194 + 4.0.0-wso2v200 [4.0.0, 4.0.1) 4.7.231 1.1.3