From 4efbcaa4ab71c1a04d3b8314f77f90ea958cf022 Mon Sep 17 00:00:00 2001 From: Chamila Adhikarinayake Date: Thu, 18 Dec 2025 13:31:53 +0530 Subject: [PATCH] Initial Commit --- .../org.wso2.carbon.feature.mgt.core/pom.xml | 28 +- .../pom.xml | 10 +- .../org.wso2.carbon.p2.touchpoint/pom.xml | 4 +- .../main/java/javax/cache/CacheManager.java | 17 +- .../caching/impl/CarbonCacheManager.java | 29 +- .../pom.xml | 2 +- core/org.wso2.carbon.base/pom.xml | 14 +- .../base/api/ServerConfigurationService.java | 1 + .../base/internal/CarbonBaseActivator.java | 10 +- .../wso2/carbon/base/CarbonBaseUtilsTest.java | 2 +- .../carbon/base/ServerConfigurationTest.java | 1 + .../src/test/resources/testng.xml | 32 + .../bootstrap/CarbonSecurityManager.java | 10 +- .../org.wso2.carbon.coordination.core/pom.xml | 1 - core/org.wso2.carbon.core.common/pom.xml | 2 +- core/org.wso2.carbon.core.services/pom.xml | 6 +- core/org.wso2.carbon.core/pom.xml | 30 +- .../carbon/core/init/CarbonServerManager.java | 59 +- .../core/internal/CarbonCoreActivator.java | 40 +- .../core/internal/CarbonCoreDataHolder.java | 16 + .../carbon/core/transports/CarbonServlet.java | 10 +- .../carbon/core/util/KeyStoreUtilTest.java | 215 ++++ core/org.wso2.carbon.http.bridge/pom.xml | 2 +- .../ndatasource/core/DataSourceService.java | 8 + core/org.wso2.carbon.osgi.security/pom.xml | 10 +- .../pom.xml | 10 - .../log4j2/plugins/AppNameConverterTest.java | 14 +- core/org.wso2.carbon.registry.api/pom.xml | 3 + core/org.wso2.carbon.registry.core/pom.xml | 41 +- .../registry/app/RemoteRegistryService.java | 2 + .../core/jdbc/EmbeddedRegistryService.java | 4 +- .../jdbc/InMemoryEmbeddedRegistryService.java | 3 + .../core/secure/AuthorizeRoleListener.java | 8 + .../src/test/resources/testng.xml | 29 + .../src/main/java/java/sql/NClob.java | 25 - .../src/main/java/java/sql/RowId.java | 25 - .../src/main/java/java/sql/SQLXML.java | 25 - core/org.wso2.carbon.securevault/pom.xml | 5 +- .../pom.xml | 3 + .../server/admin/service/ServerAdmin.java | 8 + core/org.wso2.carbon.tomcat.ext/pom.xml | 12 +- core/org.wso2.carbon.tomcat/pom.xml | 7 +- core/org.wso2.carbon.ui/pom.xml | 43 +- .../carbon/ui/BundleEntryHttpContext.java | 114 ++ .../carbon/ui/CarbonSSOSessionManager.java | 8 + .../carbon/ui/CarbonSecuredHttpContext.java | 7 +- .../org/wso2/carbon/ui/CarbonUILoginUtil.java | 14 +- .../carbon/ui/ContextPathServletAdaptor.java | 382 ++++++ .../carbon/ui/CustomTilesInitializer.java | 26 + .../ui/CustomTilesInitializerListener.java | 65 + .../ui/DefaultComponentEntryHttpContext.java | 1 - .../wso2/carbon/ui/FilterServletAdaptor.java | 89 ++ .../java/org/wso2/carbon/ui/JspServlet.java | 1 + .../ui/SecuredComponentEntryHttpContext.java | 1 - .../org/wso2/carbon/ui/TilesJspServlet.java | 99 +- .../wso2/carbon/ui/UIResourceRegistry.java | 57 +- .../wso2/carbon/ui/action/ActionHelper.java | 25 +- .../ui/deployment/UIBundleDeployer.java | 24 +- .../ui/internal/CarbonUIServiceComponent.java | 88 +- .../carbon/ui/util/UIResourceProvider.java | 4 +- .../{tiles/main_defs.xml => tiles.xml} | 0 .../resources/web/WEB-INF/tlds/tiles-jsp.tld | 1136 +++++++++-------- .../src/main/resources/web/WEB-INF/web.xml | 18 +- core/org.wso2.carbon.user.core/pom.xml | 5 + .../carbon/user/core/common/DefaultRealm.java | 8 + core/org.wso2.carbon.utils/pom.xml | 3 + core/pom.xml | 4 +- .../org.wso2.carbon.roles.mgt/pom.xml | 2 +- core/server-role-manager/pom.xml | 1 - .../features/feature-licensed/1.0.0/pom.xml | 3 +- .../features/feature-unlicensed/pom.xml | 3 +- .../features/feature1/1.0.0/pom.xml | 3 +- .../features/feature1/1.0.1/pom.xml | 3 +- .../features/feature2/1.0.0/pom.xml | 3 +- .../features/feature2/1.0.1/pom.xml | 3 +- .../features/feature3/1.0.0/pom.xml | 3 +- .../features/feature3/1.0.1/pom.xml | 3 +- .../licensed-unlicensed-features/pom.xml | 3 +- .../sample-feature-repo1/repository/pom.xml | 3 +- .../tests-integration/tests/pom.xml | 33 +- .../CarbonServerBasicOperationTestCase.java | 11 +- .../addressing-1.6.1-wso2v116-SNAPSHOT.mar | Bin 0 -> 31565 bytes .../kernel/carbon-home/bin/wso2server.sh | 2 +- distribution/kernel/pom.xml | 31 +- .../org.wso2.carbon.styles.feature/pom.xml | 1 + .../product/modules/p2-profile-gen/pom.xml | 8 + .../pom.xml | 13 +- features/org.wso2.carbon.core.feature/pom.xml | 1 + .../pom.xml | 277 ++-- .../pom.xml | 6 + .../org.wso2.carbon.core.ui.feature/pom.xml | 2 + .../org.wso2.carbon.hazelcast.feature/pom.xml | 1 + parent/pom.xml | 439 ++++--- samples/pom.xml | 2 +- .../org.wso2.carbon.student.mgt.ui/pom.xml | 1 - .../pom.xml | 7 +- .../pom.xml | 3 +- .../pom.xml | 3 +- samples/student-manager/features/pom.xml | 4 - samples/student-manager/pom.xml | 2 +- samples/student-manager/repository/pom.xml | 1 + tests/caching/pom.xml | 4 +- 102 files changed, 2743 insertions(+), 1147 deletions(-) create mode 100644 core/org.wso2.carbon.base/src/test/resources/testng.xml create mode 100644 core/org.wso2.carbon.core/src/test/java/org/wso2/carbon/core/util/KeyStoreUtilTest.java create mode 100644 core/org.wso2.carbon.registry.core/src/test/resources/testng.xml delete mode 100644 core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/NClob.java delete mode 100644 core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/RowId.java delete mode 100644 core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/SQLXML.java create mode 100644 core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/BundleEntryHttpContext.java create mode 100644 core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/ContextPathServletAdaptor.java create mode 100644 core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializer.java create mode 100644 core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializerListener.java create mode 100644 core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/FilterServletAdaptor.java rename core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/{tiles/main_defs.xml => tiles.xml} (100%) create mode 100644 distribution/integration/tests-integration/tests/src/test/resources/client/modules/addressing-1.6.1-wso2v116-SNAPSHOT.mar diff --git a/core/feature-manager/org.wso2.carbon.feature.mgt.core/pom.xml b/core/feature-manager/org.wso2.carbon.feature.mgt.core/pom.xml index 8ad8294e3e2..c2a843181a3 100644 --- a/core/feature-manager/org.wso2.carbon.feature.mgt.core/pom.xml +++ b/core/feature-manager/org.wso2.carbon.feature.mgt.core/pom.xml @@ -40,7 +40,7 @@ org.wso2.carbon.utils - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.artifact.repository @@ -48,7 +48,7 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services @@ -68,7 +68,7 @@ org.eclipse.equinox.http.servlet - org.eclipse.osgi + org.eclipse.platform org.eclipse.equinox.jsp.jasper @@ -90,39 +90,39 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.core - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.director - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.engine - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata.repository - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.simpleconfigurator @@ -162,6 +162,10 @@ org.wso2.carbon.feature.mgt.core.* + + + osgi.service;objectClass=org.eclipse.equinox.p2.core.IProvisioningAgentProvider + diff --git a/core/feature-manager/org.wso2.carbon.feature.mgt.services/pom.xml b/core/feature-manager/org.wso2.carbon.feature.mgt.services/pom.xml index 3c28f34f958..54f341d1013 100644 --- a/core/feature-manager/org.wso2.carbon.feature.mgt.services/pom.xml +++ b/core/feature-manager/org.wso2.carbon.feature.mgt.services/pom.xml @@ -54,23 +54,23 @@ org.wso2.carbon.feature.mgt.core - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.core - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.engine - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common diff --git a/core/feature-manager/org.wso2.carbon.p2.touchpoint/pom.xml b/core/feature-manager/org.wso2.carbon.p2.touchpoint/pom.xml index 092fc6a3513..1b77f11487a 100644 --- a/core/feature-manager/org.wso2.carbon.p2.touchpoint/pom.xml +++ b/core/feature-manager/org.wso2.carbon.p2.touchpoint/pom.xml @@ -16,11 +16,11 @@ - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.engine diff --git a/core/javax.cache/src/main/java/javax/cache/CacheManager.java b/core/javax.cache/src/main/java/javax/cache/CacheManager.java index ba48b75ecb3..9e8eddda562 100644 --- a/core/javax.cache/src/main/java/javax/cache/CacheManager.java +++ b/core/javax.cache/src/main/java/javax/cache/CacheManager.java @@ -7,8 +7,6 @@ package javax.cache; -import javax.transaction.UserTransaction; - /** * A CacheManager is used for looking up Caches and controls their lifecycle. It represents a collection of caches. *

@@ -127,13 +125,14 @@ public interface CacheManager { */ boolean removeCache(String cacheName); - /** - * This method will return a UserTransaction. - * - * @return the UserTransaction. - * @throws UnsupportedOperationException if JTA is not supported - */ - UserTransaction getUserTransaction(); + // TODO javax.transaction package is no longer available. Need to find a way to add this back +// /** +// * This method will return a UserTransaction. +// * +// * @return the UserTransaction. +// * @throws UnsupportedOperationException if JTA is not supported +// */ +// UserTransaction getUserTransaction(); /** * Indicates whether a optional feature is supported by this CacheManager. diff --git a/core/javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java b/core/javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java index 66329c8344e..14f27cf9ddc 100644 --- a/core/javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java +++ b/core/javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java @@ -17,16 +17,10 @@ */ package org.wso2.carbon.caching.impl; -import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.base.ServerConfiguration; +import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; -import javax.cache.Cache; -import javax.cache.CacheBuilder; -import javax.cache.CacheException; -import javax.cache.CacheManager; -import javax.cache.OptionalFeature; -import javax.cache.Status; import java.util.Collections; import java.util.HashSet; import java.util.Map; @@ -34,6 +28,13 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.cache.Cache; +import javax.cache.CacheBuilder; +import javax.cache.CacheException; +import javax.cache.CacheManager; +import javax.cache.OptionalFeature; +import javax.cache.Status; + import static org.wso2.carbon.caching.impl.CachingConstants.ILLEGAL_STATE_EXCEPTION_MESSAGE; /** @@ -202,13 +203,13 @@ boolean removeLocalCaches() { return this.caches.isEmpty(); } - @Override - public javax.transaction.UserTransaction getUserTransaction() { - Util.checkAccess(ownerTenantDomain, ownerTenantId); - checkStatusStarted(); - touch(); - return null; //To change body of implemented methods use File | Settings | File Templates. - } +// @Override +// public javax.transaction.UserTransaction getUserTransaction() { +// Util.checkAccess(ownerTenantDomain, ownerTenantId); +// checkStatusStarted(); +// touch(); +// return null; //To change body of implemented methods use File | Settings | File Templates. +// } @Override public boolean isSupported(OptionalFeature optionalFeature) { diff --git a/core/org.wso2.carbon.application.deployer/pom.xml b/core/org.wso2.carbon.application.deployer/pom.xml index a18d3c3f103..c9e451aa455 100644 --- a/core/org.wso2.carbon.application.deployer/pom.xml +++ b/core/org.wso2.carbon.application.deployer/pom.xml @@ -37,7 +37,7 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services diff --git a/core/org.wso2.carbon.base/pom.xml b/core/org.wso2.carbon.base/pom.xml index ec034afc811..8cd7923070d 100644 --- a/core/org.wso2.carbon.base/pom.xml +++ b/core/org.wso2.carbon.base/pom.xml @@ -36,7 +36,6 @@ org.apache.felix maven-bundle-plugin - true @@ -48,7 +47,7 @@ org.wso2.carbon.base.*; version="1.0.0" - javax.activation.*;version="[0.0.0, 1.0.0)", + javax.activation.*;version="[1.0.0, 2.0.0)", javax.servlet; version="${imp.pkg.version.javax.servlet}", javax.servlet.http; version="${imp.pkg.version.javax.servlet}", org.wso2.securevault.*, @@ -59,6 +58,9 @@ *;resolution:=optional + + osgi.service;objectClass=org.wso2.carbon.base.api.ServerConfigurationService + @@ -67,12 +69,19 @@ maven-surefire-plugin true + + --add-opens=java.base/java.lang=ALL-UNNAMED + --add-opens=java.base/java.util=ALL-UNNAMED + org.wso2.org.ops4j.pax.logging:pax-logging-api org.apache.logging.log4j.jul.LogManager + + src/test/resources/testng.xml + @@ -118,6 +127,7 @@ org.eclipse.equinox javax.servlet + org.wso2.orbit.xerces xercesImpl diff --git a/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/api/ServerConfigurationService.java b/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/api/ServerConfigurationService.java index ba5d1238c4e..76987f80810 100644 --- a/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/api/ServerConfigurationService.java +++ b/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/api/ServerConfigurationService.java @@ -1,5 +1,6 @@ package org.wso2.carbon.base.api; +import org.osgi.service.component.annotations.Component; import org.w3c.dom.Element; import java.util.Set; diff --git a/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/internal/CarbonBaseActivator.java b/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/internal/CarbonBaseActivator.java index 6d1cec0bbb3..cd53af91503 100644 --- a/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/internal/CarbonBaseActivator.java +++ b/core/org.wso2.carbon.base/src/main/java/org/wso2/carbon/base/internal/CarbonBaseActivator.java @@ -22,16 +22,19 @@ import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; -import org.wso2.carbon.base.CarbonBaseConstants; import org.wso2.carbon.base.CarbonBaseUtils; import org.wso2.carbon.base.ServerConfiguration; import org.wso2.carbon.base.ServerConfigurationException; import org.wso2.carbon.base.api.ServerConfigurationService; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + import javax.servlet.ServletException; -import java.io.*; /** * Activator of the {@link org.wso2.carbon.base} bundle @@ -52,7 +55,6 @@ public void start(BundleContext bundleContext) throws Exception { System.setProperty("portOffset", portOffset); //register carbon server confg as an OSGi service registration = bundleContext.registerService(ServerConfigurationService.class.getName(), carbonServerConfiguration, null); - } @Override diff --git a/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/CarbonBaseUtilsTest.java b/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/CarbonBaseUtilsTest.java index 2f0937898cb..2d2a5729106 100644 --- a/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/CarbonBaseUtilsTest.java +++ b/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/CarbonBaseUtilsTest.java @@ -50,7 +50,7 @@ public void setSecurityManager() { String resourcePath = resourceURL.getPath(); resourcePath = resourcePath + "policy-test.policy"; System.setProperty("java.security.policy", resourcePath); - System.setSecurityManager(new SecurityManager()); +// System.setSecurityManager(new SecurityManager()); } } diff --git a/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/ServerConfigurationTest.java b/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/ServerConfigurationTest.java index 9ee214c727e..f2abc748d79 100644 --- a/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/ServerConfigurationTest.java +++ b/core/org.wso2.carbon.base/src/test/java/org/wso2/carbon/base/ServerConfigurationTest.java @@ -54,6 +54,7 @@ public void createInstance() throws ServerConfigurationException, NoSuchFieldExc IllegalAccessException { assertFalse(getIsInitialized(ServerConfiguration.getInstance(), "isInitialized")); InputStream inputStream = readFile("carbon.xml"); + //TODO carbon.home is not set ServerConfiguration.getInstance().forceInit(inputStream); assertTrue(getIsInitialized(ServerConfiguration.getInstance(), "isInitialized")); } diff --git a/core/org.wso2.carbon.base/src/test/resources/testng.xml b/core/org.wso2.carbon.base/src/test/resources/testng.xml new file mode 100644 index 00000000000..10e44e3d88c --- /dev/null +++ b/core/org.wso2.carbon.base/src/test/resources/testng.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + diff --git a/core/org.wso2.carbon.bootstrap/src/main/java/org/wso2/carbon/bootstrap/CarbonSecurityManager.java b/core/org.wso2.carbon.bootstrap/src/main/java/org/wso2/carbon/bootstrap/CarbonSecurityManager.java index d1f2977fb74..fe5129217d0 100644 --- a/core/org.wso2.carbon.bootstrap/src/main/java/org/wso2/carbon/bootstrap/CarbonSecurityManager.java +++ b/core/org.wso2.carbon.bootstrap/src/main/java/org/wso2/carbon/bootstrap/CarbonSecurityManager.java @@ -18,8 +18,6 @@ package org.wso2.carbon.bootstrap; -import sun.security.util.SecurityConstants; - import java.security.AccessControlContext; import java.security.AccessControlException; import java.security.Policy; @@ -33,7 +31,9 @@ public class CarbonSecurityManager extends SecurityManager { private List deniedProperties = new ArrayList(); - + // String replacement of sun.security.util.SecurityConstants.MODIFY_THREADGROUP_PERMISSION + private static final RuntimePermission MODIFY_THREADGROUP_PERMISSION = + new RuntimePermission("modifyThreadGroup"); public CarbonSecurityManager() { super(); String deniedSystemPropertyString = System.getProperty("denied.system.properties"); @@ -86,7 +86,7 @@ public void checkAccess(ThreadGroup g) { throw new NullPointerException("thread group can't be null"); } - checkPermission(SecurityConstants.MODIFY_THREADGROUP_PERMISSION); + checkPermission(MODIFY_THREADGROUP_PERMISSION); } /** @@ -100,7 +100,7 @@ public void checkAccess(Thread t) { throw new NullPointerException("thread can't be null"); } - checkPermission(SecurityConstants.MODIFY_THREADGROUP_PERMISSION); + checkPermission(MODIFY_THREADGROUP_PERMISSION); } diff --git a/core/org.wso2.carbon.coordination.core/pom.xml b/core/org.wso2.carbon.coordination.core/pom.xml index 7e3ceeeabb1..200d9e8329e 100644 --- a/core/org.wso2.carbon.coordination.core/pom.xml +++ b/core/org.wso2.carbon.coordination.core/pom.xml @@ -89,7 +89,6 @@ org.apache.felix maven-bundle-plugin - 1.4.0 true diff --git a/core/org.wso2.carbon.core.common/pom.xml b/core/org.wso2.carbon.core.common/pom.xml index 5928d5b058b..a8cabfd088e 100644 --- a/core/org.wso2.carbon.core.common/pom.xml +++ b/core/org.wso2.carbon.core.common/pom.xml @@ -57,7 +57,7 @@ !org.wso2.carbon.core.common.*, - javax.activation.*;version="[0.0.0, 1.0.0)" + javax.activation.*;version="[1.0.0, 2.0.0)" diff --git a/core/org.wso2.carbon.core.services/pom.xml b/core/org.wso2.carbon.core.services/pom.xml index 6e3c52e6053..b7e1163c160 100644 --- a/core/org.wso2.carbon.core.services/pom.xml +++ b/core/org.wso2.carbon.core.services/pom.xml @@ -37,7 +37,11 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.equinox + javax.servlet + + + org.eclipse.platform org.eclipse.osgi.services diff --git a/core/org.wso2.carbon.core/pom.xml b/core/org.wso2.carbon.core/pom.xml index aea60f45b3b..610bd0dda3c 100644 --- a/core/org.wso2.carbon.core/pom.xml +++ b/core/org.wso2.carbon.core/pom.xml @@ -37,13 +37,24 @@ org.eclipse.osgi - org.wso2.eclipse.osgi - org.eclipse.osgi.services + org.eclipse.equinox + javax.servlet + ${version.equinox.javax.servlet} - org.eclipse.equinox - org.eclipse.equinox.http.helper + org.eclipse.platform + org.eclipse.osgi.services + + + org.eclipse.jetty.toolchain + jetty-servlet + + + + + + junit junit @@ -118,6 +129,11 @@ com.google.code.gson gson + + org.mockito + mockito-core + test + org.apache.tomcat tomcat-catalina-ha @@ -243,6 +259,9 @@ naming-factory|naming-resources|commons-collections;scope=compile|runtime;inline=false + + osgi.service;objectClass=org.wso2.carbon.utils.ConfigurationContextService + true * @@ -269,6 +288,9 @@ org.apache.logging.log4j.jul.LogManager + + src/test/resources/testng.xml + diff --git a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java index f9d5dc02b1d..acf0dcdcc81 100644 --- a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java +++ b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java @@ -36,19 +36,21 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.core.runtime.adaptor.EclipseStarter; -import org.eclipse.equinox.http.helper.FilterServletAdaptor; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceEvent; import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; import org.osgi.service.http.HttpContext; import org.osgi.service.http.HttpService; -import org.osgi.service.http.NamespaceException; +import org.osgi.service.http.context.ServletContextHelper; +import org.osgi.service.http.whiteboard.HttpWhiteboardConstants; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.CarbonBaseConstants; import org.wso2.carbon.base.CarbonContextHolderBase; import org.wso2.carbon.base.api.ServerConfigurationService; +import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.core.CarbonAxisConfigurator; import org.wso2.carbon.core.CarbonConfigurationContextFactory; import org.wso2.carbon.core.CarbonThreadCleanup; @@ -61,10 +63,9 @@ import org.wso2.carbon.core.deployment.RegistryBasedRepositoryUpdater; import org.wso2.carbon.core.internal.CarbonCoreDataHolder; import org.wso2.carbon.core.internal.CarbonCoreServiceComponent; -import org.wso2.carbon.core.multitenancy.GenericArtifactUnloader; import org.wso2.carbon.core.internal.HTTPGetProcessorListener; +import org.wso2.carbon.core.multitenancy.GenericArtifactUnloader; import org.wso2.carbon.core.multitenancy.MultitenantServerManager; -import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils; import org.wso2.carbon.core.security.CarbonJMXAuthenticator; import org.wso2.carbon.core.transports.CarbonServlet; @@ -92,8 +93,6 @@ import org.wso2.carbon.utils.deployment.GhostDeployerUtils; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; -import javax.servlet.Filter; -import javax.servlet.ServletException; import java.io.File; import java.io.IOException; import java.io.OutputStream; @@ -102,6 +101,7 @@ import java.util.Date; import java.util.Dictionary; import java.util.Enumeration; +import java.util.Hashtable; import java.util.Map; import java.util.Timer; import java.util.TimerTask; @@ -116,6 +116,10 @@ import java.util.logging.Logger; import java.util.logging.SimpleFormatter; +import javax.servlet.Filter; +import javax.servlet.Servlet; +import javax.servlet.ServletException; + import static org.apache.axis2.transport.TransportListener.HOST_ADDRESS; /** @@ -487,9 +491,10 @@ private void initializeCarbon() { } HttpService httpService = CarbonCoreDataHolder.getInstance().getHttpService(); + // TODO might want to do this differently HttpContext defaultHttpContext = httpService.createDefaultHttpContext(); - registerCarbonServlet(httpService, defaultHttpContext); + registerCarbonServlet(defaultHttpContext); RealmService realmService = CarbonCoreDataHolder.getInstance().getRealmService(); UserRealm teannt0Realm = realmService.getBootstrapRealm(); @@ -539,8 +544,8 @@ private void initializeCarbon() { } } - private void registerCarbonServlet(HttpService httpService, HttpContext defaultHttpContext) - throws ServletException, NamespaceException, InvalidSyntaxException { + private void registerCarbonServlet(HttpContext defaultHttpContext) throws InvalidSyntaxException { + if (!"false".equals(serverConfig.getFirstProperty("RequireCarbonServlet"))) { CarbonServlet carbonServlet = new CarbonServlet(serverConfigContext); String servicePath = "/services"; @@ -552,11 +557,30 @@ private void registerCarbonServlet(HttpService httpService, HttpContext defaultH servicePath = "/" + servicePath; } ServiceReference filterServiceReference = bundleContext.getServiceReference(Filter.class.getName()); + + Dictionary resourceProps = new Hashtable<>(); + resourceProps.put("osgi.http.whiteboard.context.name", "serviceContext"); + resourceProps.put("osgi.http.whiteboard.context.path", servicePath); + resourceProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN, servicePath + "/*"); + ServiceRegistration servletContextHelperServiceRegistration = + bundleContext.registerService(ServletContextHelper.class, (ServletContextHelper) defaultHttpContext, + resourceProps); + CarbonCoreDataHolder.getInstance().addServiceRegistration(servletContextHelperServiceRegistration); + + Dictionary carbonServletProperties = new Hashtable<>(); + carbonServletProperties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/*"); + carbonServletProperties.put("osgi.http.whiteboard.context.select", "(osgi.http.whiteboard.context.name=serviceContext)"); + ServiceRegistration servletServiceRegistration = + bundleContext.registerService(Servlet.class, carbonServlet, carbonServletProperties); + CarbonCoreDataHolder.getInstance().addServiceRegistration(servletServiceRegistration); + if (filterServiceReference != null) { Filter filter = (Filter) bundleContext.getService(filterServiceReference); - httpService.registerServlet(servicePath, new FilterServletAdaptor(filter, null, carbonServlet), null, defaultHttpContext); - } else { - httpService.registerServlet(servicePath, carbonServlet, null, defaultHttpContext); + Dictionary props = new Hashtable<>(); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_PATTERN, servicePath); + ServiceRegistration filterServiceRegistration = + bundleContext.registerService(Filter.class, filter, props); + CarbonCoreDataHolder.getInstance().addServiceRegistration(filterServiceRegistration); } HTTPGetProcessorListener getProcessorListener = new HTTPGetProcessorListener(carbonServlet, bundleContext); @@ -941,17 +965,8 @@ public void stop() throws Exception { ((Map) property).clear(); } - // un-registering the carbonServlet - String servicePath = "/services"; // default path - String path = serverConfigContext.getServicePath(); - if (path != null) { - servicePath = path.trim(); - } - if (!servicePath.startsWith("/")) { - servicePath = "/" + servicePath; - } try { - CarbonCoreDataHolder.getInstance().getHttpService().unregister(servicePath); + CarbonCoreDataHolder.getInstance().unregisterServiceRegistrations(); } catch (Exception e) { log.error("Failed to Un-register Servlets ", e); } diff --git a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreActivator.java b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreActivator.java index 3d61f6575bb..1dfb2cc62bb 100644 --- a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreActivator.java +++ b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreActivator.java @@ -38,10 +38,10 @@ public class CarbonCoreActivator implements BundleActivator { public void start(BundleContext context) throws Exception { // Need permissions in order to activate Carbon Core - SecurityManager secMan = System.getSecurityManager(); - if (secMan != null) { - secMan.checkPermission(new ManagementPermission("control")); - } +// SecurityManager secMan = System.getSecurityManager(); +// if (secMan != null) { +// secMan.checkPermission(new ManagementPermission("control")); +// } // We assume it's super tenant during the deployment time PrivilegedCarbonContext privilegedCarbonContext = PrivilegedCarbonContext .getThreadLocalCarbonContext(); @@ -70,12 +70,32 @@ public void start(BundleContext context) throws Exception { System.getProperty("user.language") + "-" + System.getProperty("user.country") + ", " + System.getProperty("user.timezone")); - String cryptoProviderIdentifier = getPreferredJceProviderIdentifier(); - String cryptoProviderClass = getPreferredJceProviderClass(cryptoProviderIdentifier); - Security.addProvider((Provider) Class.forName(cryptoProviderClass).getDeclaredConstructor().newInstance()); - if(log.isDebugEnabled()){ - log.debug(cryptoProviderClass + " security provider is successfully registered in JVM."); - } +// String providerName = ServerConfiguration.getInstance().getFirstProperty(ServerConstants.JCE_PROVIDER); +// Provider provider; +// if (StringUtils.isBlank(providerName) || providerName.equals(ServerConstants.JCE_PROVIDER_BC)) { +// provider = (Provider) (Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider")). +// getDeclaredConstructor().newInstance(); +// +// // Add BouncyCastle JSSE provider and preferred named groups for outbound communication. +// String jsseProviderName = ServerConfiguration.getInstance().getFirstProperty(ServerConstants.JSSE_PROVIDER); +// if (ServerConstants.JSSE_PROVIDER_BC.equals(jsseProviderName)) { +// Provider jsseProvider = (Provider) +// (Class.forName("org.bouncycastle.jsse.provider.BouncyCastleJsseProvider")). +// getDeclaredConstructor().newInstance(); +// Security.insertProviderAt(jsseProvider, 1); +// } +// +// } else if (providerName.equals(ServerConstants.JCE_PROVIDER_BCFIPS)) { +// provider = (Provider) (Class.forName("org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider")). +// getDeclaredConstructor().newInstance(); +// +// } else { +// throw new NoSuchProviderException("Configured JCE provider is not supported."); +// } +// Security.addProvider(provider); +// if (log.isDebugEnabled()) { +// log.debug(providerName + " security provider is successfully registered in JVM."); +// } } public void stop(BundleContext context) throws Exception { diff --git a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreDataHolder.java b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreDataHolder.java index 00c1e8272b3..86cb2276f7c 100644 --- a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreDataHolder.java +++ b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/internal/CarbonCoreDataHolder.java @@ -20,7 +20,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; import org.osgi.service.http.HttpService; +import org.osgi.service.http.context.ServletContextHelper; import org.wso2.carbon.base.api.ServerConfigurationService; import org.wso2.carbon.crypto.api.CryptoService; import org.wso2.carbon.registry.core.service.RegistryService; @@ -47,6 +49,8 @@ public class CarbonCoreDataHolder { private ServerConfigurationService serverConfigurationService; private TenantRegistryLoader tenantRegistryLoader; + private List> serviceRegistrations = new ArrayList<>(); + private List coordinatedActivities = new ArrayList() ; private CryptoService cryptoService; @@ -166,4 +170,16 @@ public CryptoService getCryptoService() { return cryptoService; } + + public void addServiceRegistration(ServiceRegistration serviceRegistration) { + + serviceRegistrations.add(serviceRegistration); + } + + public void unregisterServiceRegistrations() { + + for (ServiceRegistration serviceRegistration : serviceRegistrations) { + serviceRegistration.unregister(); + } + } } diff --git a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/transports/CarbonServlet.java b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/transports/CarbonServlet.java index d322bb36a45..c9471794ffe 100644 --- a/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/transports/CarbonServlet.java +++ b/core/org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/transports/CarbonServlet.java @@ -83,15 +83,21 @@ public void init(ServletConfig config) throws ServletException { configContext.setProperty("GETRequestProcessorMap", getRequestProcessors); initParams(); String isMeteringEnabledStr = ServerConfiguration.getInstance().getFirstProperty("EnableMetering"); - if(isMeteringEnabledStr!=null){ + if (isMeteringEnabledStr != null) { isMeteringEnabled = Boolean.parseBoolean(isMeteringEnabledStr); } - if(isMeteringEnabled){ + if (isMeteringEnabled) { requestDataPersister = new RequestDataPersisterTask(); new Thread(requestDataPersister).start(); requestDataPersisterScheduler.scheduleWithFixedDelay(requestDataPersister, 5, 5, TimeUnit.SECONDS); } + contextRoot = this.configContext.getContextRoot(); + } + + public ServletConfig getServletConfig() { + + return servletConfig; } private void populateGetRequestProcessors() throws ServletException { diff --git a/core/org.wso2.carbon.core/src/test/java/org/wso2/carbon/core/util/KeyStoreUtilTest.java b/core/org.wso2.carbon.core/src/test/java/org/wso2/carbon/core/util/KeyStoreUtilTest.java new file mode 100644 index 00000000000..3b0c93d272b --- /dev/null +++ b/core/org.wso2.carbon.core/src/test/java/org/wso2/carbon/core/util/KeyStoreUtilTest.java @@ -0,0 +1,215 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). + * + * WSO2 LLC. 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.core.util; + +import org.apache.axiom.om.OMElement; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; +import org.wso2.carbon.CarbonException; +import org.wso2.carbon.base.CarbonBaseConstants; +import org.wso2.carbon.base.ServerConfiguration; +import org.wso2.carbon.base.api.ServerConfigurationService; +import org.wso2.carbon.core.RegistryResources; +import org.wso2.carbon.core.internal.CarbonCoreDataHolder; +import org.wso2.carbon.utils.ServerConstants; + +import java.nio.file.Paths; + +import javax.xml.namespace.QName; + +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.fail; + +public class KeyStoreUtilTest { + + private static final String basedir = Paths.get("").toAbsolutePath().toString(); + private static final String testDir = Paths.get(basedir, "src", "test", "resources").toString(); + + @Mock + private ServerConfigurationService serverConfigurationService; + @Mock + private CarbonCoreDataHolder carbonCoreDataHolder; + + @BeforeClass + public void setUp() throws Exception { + + initMocks(this); + System.setProperty(CarbonBaseConstants.CARBON_HOME, + Paths.get(System.getProperty("user.dir"), "src", "test", "resources").toString()); + } + + @DataProvider(name = "PrimaryStoreDataProvider") + public Object[][] primaryStoreDataProvider() { + return new Object[][] { + {"wso2carbon.jks", true}, + {"", false}, + {"nonexistent.jks", false} + }; + } + + @Test(dataProvider = "PrimaryStoreDataProvider") + public void isPrimaryStore(String keyStoreId, boolean expectedResult) { + + String primaryKeystoreFile = testDir + "/wso2carbon.jks"; + try (MockedStatic carbonCoreDataHolder = mockStatic(CarbonCoreDataHolder.class)) { + + carbonCoreDataHolder.when(CarbonCoreDataHolder::getInstance).thenReturn(this.carbonCoreDataHolder); + when(this.carbonCoreDataHolder.getServerConfigurationService()).thenReturn(serverConfigurationService); + when(serverConfigurationService.getFirstProperty( + RegistryResources.SecurityManagement.SERVER_PRIMARY_KEYSTORE_FILE)).thenReturn(primaryKeystoreFile); + assertEquals(KeyStoreUtil.isPrimaryStore(keyStoreId), expectedResult); + } + } + + @DataProvider(name = "TrustStoreDataProvider") + public Object[][] trustStoreDataProvider() { + return new Object[][] { + {"client-truststore.p12", true}, + {"", false}, + {"nonexistent.jks", false} + }; + } + + @Test(dataProvider = "TrustStoreDataProvider") + public void isTrustStore(String keyStoreId, boolean expectedResult) { + + String trustStoreFile = testDir + "/client-truststore.p12"; + try (MockedStatic carbonCoreDataHolder = mockStatic(CarbonCoreDataHolder.class)) { + + carbonCoreDataHolder.when(CarbonCoreDataHolder::getInstance).thenReturn(this.carbonCoreDataHolder); + when(this.carbonCoreDataHolder.getServerConfigurationService()).thenReturn(serverConfigurationService); + when(serverConfigurationService.getFirstProperty( + RegistryResources.SecurityManagement.SERVER_TRUSTSTORE_FILE)).thenReturn(trustStoreFile); + assertEquals(KeyStoreUtil.isTrustStore(keyStoreId), expectedResult); + } + } + + @DataProvider(name = "KeyStoreNameDataProvider") + public Object[][] keyStoreNameDataProvider() { + + return new Object[][] { + {"CUSTOM/myKeyStore", true}, + {"CUSTOM/@#$_keyStore", true}, + {"abcd", false}, + {"", false}, + {" ", false}, + }; + } + + @Test(dataProvider = "KeyStoreNameDataProvider") + public void testIsCustomKeyStore(String keyStoreName, boolean expectedResult) { + + assertEquals(KeyStoreUtil.isCustomKeyStore(keyStoreName), expectedResult); + } + + @DataProvider(name = "QNameWithCarbonNSDataProvider") + public String[] qNameWithCarbonNSDataProvider() { + + return new String[] { + "localPart", + "", + }; + } + + @Test(dataProvider = "QNameWithCarbonNSDataProvider") + public void testGetQNameWithCarbonNS(String localPart) { + + QName qName = KeyStoreUtil.getQNameWithCarbonNS(localPart); + assertEquals(ServerConstants.CARBON_SERVER_XML_NAMESPACE, qName.getNamespaceURI()); + assertEquals(localPart, qName.getLocalPart()); + } + + @DataProvider(name = "CustomKeyStoreConfigDataProvider") + public String[][] customKeyStoreConfigDataProvider() { + + return new String[][] { + {"custom.jks", "Location", basedir + "/./repository/resources/security/custom.jks"}, + {"custom.jks", "Type", "JKS"}, + {"custom.jks", "Password", "customPassword"}, + {"custom.jks", "KeyAlias", "customAlias"}, + {"custom.jks", "KeyPassword", "customKeyPass"}, + {"testKey.jks", "Location", basedir + "/./repository/resources/security/testKey.jks"}, + {"testKey.jks", "Type", "JKS"}, + {"testKey.jks", "Password", "testPass"}, + {"testKey.jks", "KeyAlias", "testKey"}, + {"testKey.jks", "KeyPassword", "testKeyPass"} + }; + } + + // This test covers both getCustomKeyStoreConfigElement and getCustomKeyStoreConfig methods + @Test(dataProvider = "CustomKeyStoreConfigDataProvider") + public void testReadCustomKeyStoreConfigs(String keyStoreName, String configName, String expectedValue) { + + try { + String serverConfigPath = Paths.get(testDir, "carbon.xml").toString(); + ServerConfiguration serverConfiguration = ServerConfiguration.getInstance(); + serverConfiguration.forceInit(serverConfigPath); + OMElement keyStoreConfigElement = KeyStoreUtil.getCustomKeyStoreConfigElement(keyStoreName, serverConfiguration); + assertEquals(KeyStoreUtil.getCustomKeyStoreConfig(keyStoreConfigElement, configName), expectedValue); + } catch (Exception e) { + System.out.println("Exception occurred: " + e.getMessage()); + e.printStackTrace(); + fail(); + } + } + + @DataProvider(name = "CorrectKeyStoreConfigDataProvider") + public String[] correctKeyStoreConfigDataProvider() { + + return new String[] { + "Location", + "Type", + "Password", + "KeyAlias", + "KeyPassword" + }; + } + + @Test(dataProvider = "CorrectKeyStoreConfigDataProvider") + public void testValidateCorrectKeyStoreConfigNames(String configName) { + + try { + KeyStoreUtil.validateKeyStoreConfigName(configName); + } catch (CarbonException e) { + fail(); + } + } + + @DataProvider(name = "IncorrectKeyStoreConfigDataProvider") + public String[] incorrectKeyStoreConfigDataProvider() { + + return new String[] { + "ABCD", + "", + " " + }; + } + + @Test(dataProvider = "IncorrectKeyStoreConfigDataProvider", expectedExceptions = CarbonException.class) + public void testValidateIncorrectKeyStoreConfigName(String configName) throws Exception { + + KeyStoreUtil.validateKeyStoreConfigName(configName); + } +} diff --git a/core/org.wso2.carbon.http.bridge/pom.xml b/core/org.wso2.carbon.http.bridge/pom.xml index cd04527f8ae..b6b396c80ad 100644 --- a/core/org.wso2.carbon.http.bridge/pom.xml +++ b/core/org.wso2.carbon.http.bridge/pom.xml @@ -54,7 +54,7 @@ org.wso2.carbon.bridge - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.http.servlet diff --git a/core/org.wso2.carbon.ndatasource.core/src/main/java/org/wso2/carbon/ndatasource/core/DataSourceService.java b/core/org.wso2.carbon.ndatasource.core/src/main/java/org/wso2/carbon/ndatasource/core/DataSourceService.java index 2ec5ac60802..31ec0719bae 100644 --- a/core/org.wso2.carbon.ndatasource.core/src/main/java/org/wso2/carbon/ndatasource/core/DataSourceService.java +++ b/core/org.wso2.carbon.ndatasource.core/src/main/java/org/wso2/carbon/ndatasource/core/DataSourceService.java @@ -18,11 +18,19 @@ import java.util.ArrayList; import java.util.List; +import org.osgi.annotation.bundle.Capability; import org.wso2.carbon.ndatasource.common.DataSourceException; /** * This class represents the data source OSGi service. */ +@Capability( + namespace = "osgi.service", + attribute = { + "objectClass=org.wso2.carbon.ndatasource.core.DataSourceService", + "service.scope=singleton" + } +) public class DataSourceService { public List getAllDataSources() throws DataSourceException { diff --git a/core/org.wso2.carbon.osgi.security/pom.xml b/core/org.wso2.carbon.osgi.security/pom.xml index 299b23772b6..8767a007132 100644 --- a/core/org.wso2.carbon.osgi.security/pom.xml +++ b/core/org.wso2.carbon.osgi.security/pom.xml @@ -39,13 +39,13 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services - - org.eclipse.equinox - org.eclipse.equinox.http.helper - + + + + junit junit diff --git a/core/org.wso2.carbon.pax-logging-log4j2-plugins/pom.xml b/core/org.wso2.carbon.pax-logging-log4j2-plugins/pom.xml index 58e3f0f94b6..cd8774abb53 100644 --- a/core/org.wso2.carbon.pax-logging-log4j2-plugins/pom.xml +++ b/core/org.wso2.carbon.pax-logging-log4j2-plugins/pom.xml @@ -63,16 +63,6 @@ mockito-core test - - org.powermock - powermock-module-testng - test - - - org.powermock - powermock-api-mockito2 - test - org.apache.logging.log4j log4j-jul diff --git a/core/org.wso2.carbon.pax-logging-log4j2-plugins/src/test/java/org/wso2/carbon/log4j2/plugins/AppNameConverterTest.java b/core/org.wso2.carbon.pax-logging-log4j2-plugins/src/test/java/org/wso2/carbon/log4j2/plugins/AppNameConverterTest.java index 4dafc9798c5..a6ce6895308 100644 --- a/core/org.wso2.carbon.pax-logging-log4j2-plugins/src/test/java/org/wso2/carbon/log4j2/plugins/AppNameConverterTest.java +++ b/core/org.wso2.carbon.pax-logging-log4j2-plugins/src/test/java/org/wso2/carbon/log4j2/plugins/AppNameConverterTest.java @@ -21,32 +21,20 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.apache.logging.log4j.message.Message; import org.apache.logging.log4j.message.SimpleMessage; -import org.powermock.modules.testng.PowerMockTestCase; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.wso2.carbon.context.PrivilegedCarbonContext; - -import java.io.File; import static org.testng.Assert.assertEquals; /** * Tests AppNameConverter class. */ -public class AppNameConverterTest extends PowerMockTestCase { +public class AppNameConverterTest { private AppNameConverter appNameConverter; private LogEvent logEvent; private static final String APP_NAME = "appName"; - public AppNameConverterTest() { - System.setProperty("carbon.home", new File(".").getAbsolutePath()); - PrivilegedCarbonContext cc = PrivilegedCarbonContext.getThreadLocalCarbonContext(); - cc.setTenantDomain("carbon.super"); - cc.setTenantId(-1234); - PrivilegedCarbonContext.startTenantFlow(); - } - /** * Creates a log event to test appending of the AppName. */ diff --git a/core/org.wso2.carbon.registry.api/pom.xml b/core/org.wso2.carbon.registry.api/pom.xml index 8bb5d432ac7..c4a153ed89b 100644 --- a/core/org.wso2.carbon.registry.api/pom.xml +++ b/core/org.wso2.carbon.registry.api/pom.xml @@ -46,6 +46,9 @@ !javax.servlet.http, org.wso2.carbon.registry.api.*;version=1.0.1, + + !* + diff --git a/core/org.wso2.carbon.registry.core/pom.xml b/core/org.wso2.carbon.registry.core/pom.xml index 964eb47c953..ac95d17865a 100644 --- a/core/org.wso2.carbon.registry.core/pom.xml +++ b/core/org.wso2.carbon.registry.core/pom.xml @@ -54,7 +54,7 @@ org.wso2.carbon.user.*, org.wso2.carbon.utils.*, !javax.xml.namespace, - javax.activation.*;version="[0.0.0, 1.0.0)", + javax.activation.*;version="[1.0.0, 2.0.0)", org.apache.abdera.*; version="${imp.pkg.version.abdera}", javax.xml.namespace; version=0.0.0, javax.servlet; version="${imp.pkg.version.javax.servlet}", @@ -68,6 +68,11 @@ *;resolution:=optional * + + osgi.service;objectClass=org.wso2.carbon.registry.core.service.RegistryService, + osgi.service;objectClass=org.wso2.carbon.registry.api.RegistryService, + osgi.service;objectClass=org.wso2.carbon.registry.core.service.TenantRegistryLoader + acegi-security;scope=compile|runtime;inline=false @@ -102,7 +107,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-0 @@ -126,7 +132,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-1 @@ -150,7 +157,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-2 @@ -174,7 +182,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-3 @@ -198,7 +207,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-4 @@ -226,7 +236,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-5 @@ -254,7 +265,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-6 @@ -282,7 +294,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-7 @@ -310,7 +323,8 @@ false - pertest + 1 + false -enableassertions false ${project.build.directory}/surefire-reports-8 @@ -376,9 +390,14 @@ annotations - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services + + + + + junit junit diff --git a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/app/RemoteRegistryService.java b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/app/RemoteRegistryService.java index d4cc7baa286..40a620805a2 100644 --- a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/app/RemoteRegistryService.java +++ b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/app/RemoteRegistryService.java @@ -19,6 +19,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.service.component.annotations.Component; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.registry.core.Registry; import org.wso2.carbon.registry.core.RegistryConstants; @@ -42,6 +43,7 @@ * to create remote registry instances for user sessions. The class acts in a manner that is similar * to an {@link EmbeddedRegistryService}. */ +//@Component(service = RegistryService.class) public class RemoteRegistryService implements RegistryService { private static final Log log = LogFactory.getLog(RemoteRegistryService.class); diff --git a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/EmbeddedRegistryService.java b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/EmbeddedRegistryService.java index da4a63516e4..dc38fd42161 100644 --- a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/EmbeddedRegistryService.java +++ b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/EmbeddedRegistryService.java @@ -18,6 +18,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.service.component.annotations.Component; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.registry.core.RegistryConstants; import org.wso2.carbon.registry.core.clustering.NodeGroupLock; @@ -25,7 +26,6 @@ import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.dataaccess.DataAccessManager; import org.wso2.carbon.registry.core.exceptions.RegistryException; -import org.wso2.carbon.registry.core.internal.RegistryCoreServiceComponent; import org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCDataAccessManager; import org.wso2.carbon.registry.core.jdbc.realm.RegistryRealm; import org.wso2.carbon.registry.core.jdbc.utils.Transaction; @@ -35,7 +35,6 @@ import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.user.core.UserRealm; import org.wso2.carbon.user.core.service.RealmService; -import org.wso2.carbon.user.core.util.UserCoreUtil; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import org.wso2.carbon.utils.multitenancy.MultitenantUtils; @@ -71,6 +70,7 @@ * @see EmbeddedRegistry * @see UserRegistry */ +//@Component(service = RegistryService.class) public class EmbeddedRegistryService implements RegistryService { private static final Log log = LogFactory.getLog(EmbeddedRegistryService.class); diff --git a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/InMemoryEmbeddedRegistryService.java b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/InMemoryEmbeddedRegistryService.java index 27552d76c1f..cb2c9de1a3f 100644 --- a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/InMemoryEmbeddedRegistryService.java +++ b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/jdbc/InMemoryEmbeddedRegistryService.java @@ -16,9 +16,11 @@ package org.wso2.carbon.registry.core.jdbc; +import org.osgi.service.component.annotations.Component; import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService; +import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.user.api.RealmConfiguration; import org.wso2.carbon.user.core.service.RealmService; @@ -28,6 +30,7 @@ * This is an extension to the {@link EmbeddedRegistryService} which is tailored to expose {@link * InMemoryEmbeddedRegistry} instances as OSGi services. */ +//@Component(service = RegistryService.class) public class InMemoryEmbeddedRegistryService extends EmbeddedRegistryService { private RealmService realmService; diff --git a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/secure/AuthorizeRoleListener.java b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/secure/AuthorizeRoleListener.java index 03c934118e4..cdb6a415f55 100644 --- a/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/secure/AuthorizeRoleListener.java +++ b/core/org.wso2.carbon.registry.core/src/main/java/org/wso2/carbon/registry/core/secure/AuthorizeRoleListener.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.annotation.bundle.Capability; import org.wso2.carbon.registry.core.ActionConstants; import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.utils.RegistryUtils; @@ -37,6 +38,13 @@ * permissions to registry resource permissions and thereby manage accessibility to various resource * paths based on the amount of permissions available to a given role. */ +@Capability( + namespace = "osgi.service", + attribute = { + "objectClass=org.wso2.carbon.user.core.listener.AuthorizationManagerListener", + "service.scope=singleton" + } +) public class AuthorizeRoleListener extends AbstractAuthorizationManagerListener implements AuthorizationManagerListener { diff --git a/core/org.wso2.carbon.registry.core/src/test/resources/testng.xml b/core/org.wso2.carbon.registry.core/src/test/resources/testng.xml new file mode 100644 index 00000000000..9e60b4c8c4c --- /dev/null +++ b/core/org.wso2.carbon.registry.core/src/test/resources/testng.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/NClob.java b/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/NClob.java deleted file mode 100644 index 7571e44674a..00000000000 --- a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/NClob.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 java.sql; - -/** - * Dummy implementation of NClob in JDK6 - */ -public interface NClob { -} diff --git a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/RowId.java b/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/RowId.java deleted file mode 100644 index bd125b8bc40..00000000000 --- a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/RowId.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 java.sql; - -/** - * Dummy implementation of RowId in JDK6 - */ -public interface RowId { -} diff --git a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/SQLXML.java b/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/SQLXML.java deleted file mode 100644 index 0947067d332..00000000000 --- a/core/org.wso2.carbon.registry.xboot/src/main/java/java/sql/SQLXML.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. - * - * WSO2 Inc. 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 java.sql; - -/** - * Dummy implementation of SQLXML in JDK6 - */ -public interface SQLXML { -} diff --git a/core/org.wso2.carbon.securevault/pom.xml b/core/org.wso2.carbon.securevault/pom.xml index ec5baafdbe7..3c59e336e08 100644 --- a/core/org.wso2.carbon.securevault/pom.xml +++ b/core/org.wso2.carbon.securevault/pom.xml @@ -36,7 +36,7 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services @@ -86,6 +86,9 @@ *;resolution:=optional * + + osgi.service;objectClass=org.wso2.carbon.securevault.SecretCallbackHandlerService + diff --git a/core/org.wso2.carbon.server.admin.common/pom.xml b/core/org.wso2.carbon.server.admin.common/pom.xml index 17f7bbb614f..7a8aac1ef13 100644 --- a/core/org.wso2.carbon.server.admin.common/pom.xml +++ b/core/org.wso2.carbon.server.admin.common/pom.xml @@ -55,6 +55,9 @@ org.wso2.carbon.server.admin.common.* + + !* + diff --git a/core/org.wso2.carbon.server.admin/src/main/java/org/wso2/carbon/server/admin/service/ServerAdmin.java b/core/org.wso2.carbon.server.admin/src/main/java/org/wso2/carbon/server/admin/service/ServerAdmin.java index 3c07b2b46b8..cd0a9e6e13d 100644 --- a/core/org.wso2.carbon.server.admin/src/main/java/org/wso2/carbon/server/admin/service/ServerAdmin.java +++ b/core/org.wso2.carbon.server.admin/src/main/java/org/wso2/carbon/server/admin/service/ServerAdmin.java @@ -24,6 +24,7 @@ import org.apache.axis2.transport.http.HTTPConstants; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.annotation.bundle.Capability; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.ServerConfiguration; import org.wso2.carbon.base.api.ServerConfigurationService; @@ -55,6 +56,13 @@ /** * Admin service to manage server related operations */ +@Capability( + namespace = "osgi.service", + attribute = { + "objectClass=org.wso2.carbon.server.admin.common.IServerAdmin", + "service.scope=singleton" + } +) public class ServerAdmin extends AbstractAdmin implements ServerAdminMBean, IServerAdmin { private static final Log log = LogFactory.getLog(ServerAdmin.class); private static final int SECONDS_PER_DAY = 3600 * 24; diff --git a/core/org.wso2.carbon.tomcat.ext/pom.xml b/core/org.wso2.carbon.tomcat.ext/pom.xml index c82ea8ae81b..0190c4db9c2 100644 --- a/core/org.wso2.carbon.tomcat.ext/pom.xml +++ b/core/org.wso2.carbon.tomcat.ext/pom.xml @@ -36,7 +36,7 @@ org.eclipse.osgi - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common @@ -91,16 +91,6 @@ mockito-core test - - org.powermock - powermock-api-mockito2 - test - - - org.powermock - powermock-module-testng - test - org.osgi org.osgi.service.component.annotations diff --git a/core/org.wso2.carbon.tomcat/pom.xml b/core/org.wso2.carbon.tomcat/pom.xml index 4e562c3156a..99b285b9bfe 100644 --- a/core/org.wso2.carbon.tomcat/pom.xml +++ b/core/org.wso2.carbon.tomcat/pom.xml @@ -36,11 +36,11 @@ org.eclipse.osgi - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.http.servlet - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common @@ -119,6 +119,9 @@ *;resolution:=optional * + + osgi.service;objectClass=org.wso2.carbon.tomcat.api.CarbonTomcatService + diff --git a/core/org.wso2.carbon.ui/pom.xml b/core/org.wso2.carbon.ui/pom.xml index 6466424036b..095060c5370 100644 --- a/core/org.wso2.carbon.ui/pom.xml +++ b/core/org.wso2.carbon.ui/pom.xml @@ -37,21 +37,32 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.equinox + javax.servlet + ${version.equinox.javax.servlet} + + + org.eclipse.platform org.eclipse.osgi.services + + + org.eclipse.jetty.toolchain + jetty-servlet + + org.apache.ws.commons.axiom.wso2 axiom - org.apache.tiles.wso2 + org.wso2.orbit.org.apache.tiles tiles-jsp - - org.apache.tiles - tiles-jsp - + + + + commons-digester commons-digester @@ -62,6 +73,17 @@ + + + + + + + + + + + org.wso2.carbon org.wso2.carbon.core @@ -111,7 +133,7 @@ axis2 - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.http.servlet @@ -146,10 +168,6 @@ - - org.eclipse.equinox - javax.servlet - commons-lang.wso2 commons-lang @@ -222,8 +240,7 @@ javax.servlet.http; version="${imp.pkg.version.javax.servlet}", javax.servlet.jsp; version="${imp.pkg.version.javax.servlet.jsp}" javax.servlet.jsp.tagext; version="${imp.pkg.version.javax.servlet.jsp}", - org.eclipse.equinox.http.helper, - org.apache.tiles.*;version="2.0.5", + org.apache.tiles.*;version="3.0.7", org.wso2.carbon.registry.core.service, org.owasp.csrfguard.tag.*; version="${orbit.version.csrfguard}", org.owasp.encoder.*;version="${owasp.encoder.wso2.imp.pkg.version}", diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/BundleEntryHttpContext.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/BundleEntryHttpContext.java new file mode 100644 index 00000000000..db6bb09e365 --- /dev/null +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/BundleEntryHttpContext.java @@ -0,0 +1,114 @@ +package org.wso2.carbon.ui; + +import java.io.IOException; +import java.net.URL; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.osgi.framework.Bundle; +import org.osgi.service.http.HttpContext; +import org.osgi.service.http.context.ServletContextHelper; + +public class BundleEntryHttpContext extends ServletContextHelper implements HttpContext { + private Bundle bundle; + private String bundlePath; + + public BundleEntryHttpContext(Bundle bundle) { + this.bundle = bundle; + } + + public BundleEntryHttpContext(Bundle b, String bundlePath) { + this(b); + if (bundlePath != null) { + if (bundlePath.endsWith("/")) { + bundlePath = bundlePath.substring(0, bundlePath.length() - 1); + } + + if (bundlePath.length() == 0) { + bundlePath = null; + } + } + + this.bundlePath = bundlePath; + } + + public String getMimeType(String arg0) { + return null; + } + + public boolean handleSecurity(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException { + return true; + } + + public URL getResource(String resourceName) { + if (this.bundlePath != null) { + resourceName = this.bundlePath + resourceName; + } + + int lastSlash = resourceName.lastIndexOf(47); + if (lastSlash == -1) { + return null; + } else { + String path = resourceName.substring(0, lastSlash); + if (path.length() == 0) { + path = "/"; + } + + String file = this.sanitizeEntryName(resourceName.substring(lastSlash + 1)); + Enumeration entryPaths = this.bundle.findEntries(path, file, false); + return entryPaths != null && entryPaths.hasMoreElements() ? (URL)entryPaths.nextElement() : null; + } + } + + private String sanitizeEntryName(String name) { + StringBuffer buffer = null; + + for(int i = 0; i < name.length(); ++i) { + char c = name.charAt(i); + switch (c) { + case '*': + case '\\': + if (buffer == null) { + buffer = new StringBuffer(name.length() + 16); + buffer.append(name.substring(0, i)); + } + + buffer.append('\\').append(c); + break; + default: + if (buffer != null) { + buffer.append(c); + } + } + } + + return buffer == null ? name : buffer.toString(); + } + + public Set getResourcePaths(String path) { + if (this.bundlePath != null) { + path = this.bundlePath + path; + } + + Enumeration entryPaths = this.bundle.findEntries(path, (String)null, false); + if (entryPaths == null) { + return null; + } else { + Set result = new HashSet(); + + while(entryPaths.hasMoreElements()) { + URL entryURL = (URL)entryPaths.nextElement(); + String entryPath = entryURL.getFile(); + if (this.bundlePath == null) { + result.add(entryPath); + } else { + result.add(entryPath.substring(this.bundlePath.length())); + } + } + + return result; + } + } +} diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSSOSessionManager.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSSOSessionManager.java index 3ab2212678d..554775bea92 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSSOSessionManager.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSSOSessionManager.java @@ -19,6 +19,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.annotation.bundle.Capability; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -41,6 +42,13 @@ * This class maintains two maps to maintain valid sessions and invalid sessions. This class is * implemented as a singleton because there should be only one SSOSessionManager per instance. */ +@Capability( + namespace = "osgi.service", + attribute = { + "objectClass=org.wso2.carbon.ui.CarbonSSOSessionManager", + "service.scope=singleton" + } +) public class CarbonSSOSessionManager { private static Log log = LogFactory.getLog(CarbonSSOSessionManager.class); diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSecuredHttpContext.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSecuredHttpContext.java index 8806d125655..18be6d524d5 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSecuredHttpContext.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonSecuredHttpContext.java @@ -274,10 +274,11 @@ public boolean handleSecurity(HttpServletRequest request, HttpServletResponse re } if (request.getSession().isNew()) { if (skipLoginPage) { - response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, "/carbon/admin/login_action.jsp", - request)); + response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, + "/admin/login_action.jsp", request)); } else { - response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, "/carbon/admin/login.jsp", request)); + response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, "/admin/login.jsp", + request)); } return false; diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java index 92397bbffe9..4c78a12aab4 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java @@ -165,10 +165,10 @@ protected static boolean saveOriginalUrl(CarbonUIAuthenticator authenticator, } else { if (skipLoginPage) { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login_action.jsp", request)); + "/admin/login_action.jsp", request)); } else { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login.jsp", request)); + "/admin/login.jsp", request)); } } @@ -468,6 +468,7 @@ protected static boolean handleLogin(CarbonUIAuthenticator authenticator, response.addCookie(rmeCookie); } } catch (Exception e) { + // TODO might need to remove contextPath response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, indexPageURL + (indexPageURL.indexOf('?') == -1 ? "?" : "&") + "loginStatus=false", request)); if (log.isDebugEnabled()) { @@ -488,6 +489,7 @@ protected static boolean handleLogin(CarbonUIAuthenticator authenticator, indexPageURL = indexPageURL.substring(5); } + // TODO might need to remove contextPath response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, indexPageURL + (indexPageURL.indexOf('?') == -1 ? "?" : "&") + "loginStatus=true", request)); } @@ -507,16 +509,16 @@ protected static boolean handleLogin(CarbonUIAuthenticator authenticator, if (e.getCause().getMessage().contains(ACCOUNT_LOCK_ERROR_CODE) || e.getCause().getMessage() .contains(ACCOUNT_LOCK_ERROR_MESSAGE)) { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login.jsp?loginStatus=false&errorCode=error" + + "/admin/login.jsp?loginStatus=false&errorCode=error" + ".code.17003", request)); return false; } else if (e.getCause().getMessage().contains(USER_NOT_FOUND_ERROR_CODE)) { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login.jsp?loginStatus=false&errorCode=error.code.17001", request)); + "/admin/login.jsp?loginStatus=false&errorCode=error.code.17001", request)); return false; } else if (e.getCause().getMessage().contains(INVALID_CREDENTIALS_ERROR_CODE)) { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login.jsp?loginStatus=false&errorCode=error.code.17002", request)); + "/admin/login.jsp?loginStatus=false&errorCode=error.code.17002", request)); return false; } } @@ -525,7 +527,7 @@ protected static boolean handleLogin(CarbonUIAuthenticator authenticator, return false; } else { response.sendRedirect(CarbonUIUtil.resolveAdminConsoleBaseURL(contextPath, - "/carbon/admin/login.jsp?loginStatus=false", request)); + "/admin/login.jsp?loginStatus=false", request)); return false; } } catch (Exception e1) { diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/ContextPathServletAdaptor.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/ContextPathServletAdaptor.java new file mode 100644 index 00000000000..d2764e23b75 --- /dev/null +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/ContextPathServletAdaptor.java @@ -0,0 +1,382 @@ +package org.wso2.carbon.ui; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +public class ContextPathServletAdaptor implements Servlet { + private Servlet delegate; + String contextPath; + + public ContextPathServletAdaptor(Servlet delegate, String contextPath) { + this.delegate = delegate; + this.contextPath = contextPath != null && !contextPath.equals("/") ? contextPath : ""; + } + + public void init(ServletConfig config) throws ServletException { + this.delegate.init(new ContextPathServletAdaptor.ServletConfigAdaptor(config)); + } + + public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { + this.delegate.service(new ContextPathServletAdaptor.HttpServletRequestAdaptor((HttpServletRequest)request), response); + } + + public void destroy() { + this.delegate.destroy(); + } + + public ServletConfig getServletConfig() { + return this.delegate.getServletConfig(); + } + + public String getServletInfo() { + return this.delegate.getServletInfo(); + } + + private class RequestDispatcherAdaptor implements RequestDispatcher { + private RequestDispatcher requestDispatcher; + + public RequestDispatcherAdaptor(RequestDispatcher requestDispatcher) { + this.requestDispatcher = requestDispatcher; + } + + public void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException { + if (req instanceof ContextPathServletAdaptor.HttpServletRequestAdaptor) { + req = ((ContextPathServletAdaptor.HttpServletRequestAdaptor)req).getRequest(); + } + + this.requestDispatcher.forward(req, resp); + } + + public void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException { + if (req instanceof ContextPathServletAdaptor.HttpServletRequestAdaptor) { + req = ((ContextPathServletAdaptor.HttpServletRequestAdaptor)req).getRequest(); + } + + this.requestDispatcher.include(req, resp); + } + } + + private class HttpServletRequestAdaptor extends HttpServletRequestWrapper { + static final String INCLUDE_REQUEST_URI_ATTRIBUTE = "javax.servlet.include.request_uri"; + static final String INCLUDE_CONTEXT_PATH_ATTRIBUTE = "javax.servlet.include.context_path"; + static final String INCLUDE_SERVLET_PATH_ATTRIBUTE = "javax.servlet.include.servlet_path"; + static final String INCLUDE_PATH_INFO_ATTRIBUTE = "javax.servlet.include.path_info"; + private boolean isRequestDispatcherInclude; + + public HttpServletRequestAdaptor(HttpServletRequest req) { + super(req); + this.isRequestDispatcherInclude = req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) != null; + } + + public String getServletPath() { + if (this.isRequestDispatcherInclude) { + return super.getServletPath(); + } else { + String fullPath = super.getServletPath(); + return fullPath.substring( + ContextPathServletAdaptor.this.contextPath.length()); + } + } + + public String getContextPath() { + return this.isRequestDispatcherInclude ? super.getContextPath() : super.getContextPath() + ContextPathServletAdaptor.this.contextPath; + } + + public Object getAttribute(String attributeName) { + if (this.isRequestDispatcherInclude) { + String servletPath; + if (attributeName.equals(INCLUDE_CONTEXT_PATH_ATTRIBUTE)) { + servletPath = (String)super.getAttribute(INCLUDE_CONTEXT_PATH_ATTRIBUTE); + if (servletPath != null && !servletPath.equals("/")) { + return servletPath + ContextPathServletAdaptor.this.contextPath; + } + + return ContextPathServletAdaptor.this.contextPath; + } + + if (attributeName.equals(INCLUDE_SERVLET_PATH_ATTRIBUTE)) { + servletPath = (String)super.getAttribute(INCLUDE_SERVLET_PATH_ATTRIBUTE); + return servletPath.substring( + ContextPathServletAdaptor.this.contextPath.length()); + } + } + + return super.getAttribute(attributeName); + } + + public RequestDispatcher getRequestDispatcher(String arg0) { + return ContextPathServletAdaptor.this.new RequestDispatcherAdaptor(super.getRequestDispatcher( + ContextPathServletAdaptor.this.contextPath + arg0)); + } + } + + private class ServletContextAdaptor implements ServletContext { + private ServletContext delegate; + + public ServletContextAdaptor(ServletContext delegate) { + this.delegate = delegate; + } + + public RequestDispatcher getRequestDispatcher(String path) { + return ContextPathServletAdaptor.this.contextPath.equals("/") ? ContextPathServletAdaptor.this.new RequestDispatcherAdaptor(this.delegate.getRequestDispatcher(path)) : ContextPathServletAdaptor.this.new RequestDispatcherAdaptor(this.delegate.getRequestDispatcher( + ContextPathServletAdaptor.this.contextPath + path)); + } + + public URL getResource(String name) throws MalformedURLException { + return this.delegate.getResource(name); + } + + public InputStream getResourceAsStream(String name) { + return this.delegate.getResourceAsStream(name); + } + + public Set getResourcePaths(String name) { + return this.delegate.getResourcePaths(name); + } + + public Object getAttribute(String arg0) { + return this.delegate.getAttribute(arg0); + } + + public Enumeration getAttributeNames() { + return this.delegate.getAttributeNames(); + } + + public ServletContext getContext(String arg0) { + return this.delegate.getContext(arg0); + } + + public String getInitParameter(String arg0) { + return this.delegate.getInitParameter(arg0); + } + + public Enumeration getInitParameterNames() { + return this.delegate.getInitParameterNames(); + } + + public boolean setInitParameter(String s, String s1) { + return this.delegate.setInitParameter(s, s1); + } + + public int getMajorVersion() { + return this.delegate.getMajorVersion(); + } + + public String getMimeType(String arg0) { + return this.delegate.getMimeType(arg0); + } + + public int getMinorVersion() { + return this.delegate.getMinorVersion(); + } + + public int getEffectiveMajorVersion() { + return this.delegate.getEffectiveMajorVersion(); + } + + public int getEffectiveMinorVersion() { + return this.delegate.getEffectiveMinorVersion(); + } + + public RequestDispatcher getNamedDispatcher(String arg0) { + return ContextPathServletAdaptor.this.new RequestDispatcherAdaptor(this.delegate.getNamedDispatcher(arg0)); + } + + public String getRealPath(String arg0) { + return this.delegate.getRealPath(arg0); + } + + public String getServerInfo() { + return this.delegate.getServerInfo(); + } + + /** @deprecated */ + public Servlet getServlet(String arg0) throws ServletException { + return this.delegate.getServlet(arg0); + } + + public String getServletContextName() { + return this.delegate.getServletContextName(); + } + + public ServletRegistration.Dynamic addServlet(String s, String s1) { + return this.delegate.addServlet(s, s1); + } + + public ServletRegistration.Dynamic addServlet(String s, Servlet servlet) { + return this.delegate.addServlet(s, servlet); + } + + public ServletRegistration.Dynamic addServlet(String s, Class aClass) { + return this.delegate.addServlet(s, aClass); + } + + public T createServlet(Class tClass) throws ServletException { + return this.delegate.createServlet(tClass); + } + + public ServletRegistration getServletRegistration(String s) { + return this.delegate.getServletRegistration(s); + } + + public Map getServletRegistrations() { + return this.delegate.getServletRegistrations(); + } + + public FilterRegistration.Dynamic addFilter(String s, String s1) { + return this.delegate.addFilter(s, s1); + } + + public FilterRegistration.Dynamic addFilter(String s, Filter filter) { + return this.delegate.addFilter(s, filter); + } + + public FilterRegistration.Dynamic addFilter(String s, Class aClass) { + return this.delegate.addFilter(s, aClass); + } + + public T createFilter(Class tClass) throws ServletException { + return this.delegate.createFilter(tClass); + } + + public FilterRegistration getFilterRegistration(String s) { + return this.delegate.getFilterRegistration(s); + } + + public Map getFilterRegistrations() { + return this.delegate.getFilterRegistrations(); + } + + public SessionCookieConfig getSessionCookieConfig() { + return this.delegate.getSessionCookieConfig(); + } + + public void setSessionTrackingModes(Set sessionTrackingModes) throws IllegalStateException, IllegalArgumentException { + this.delegate.setSessionTrackingModes(sessionTrackingModes); + } + + public Set getDefaultSessionTrackingModes() { + return this.delegate.getDefaultSessionTrackingModes(); + } + + public Set getEffectiveSessionTrackingModes() { + return this.delegate.getEffectiveSessionTrackingModes(); + } + + public void addListener(Class aClass) { + this.delegate.addListener(aClass); + } + + public void addListener(String s) { + this.delegate.addListener(s); + } + + public void addListener(T t) { + this.delegate.addListener(t); + } + + public T createListener(Class tClass) throws ServletException { + return this.delegate.createListener(tClass); + } + + public void declareRoles(String... strings) { + this.delegate.declareRoles(strings); + } + + public ClassLoader getClassLoader() { + return this.delegate.getClassLoader(); + } + + public JspConfigDescriptor getJspConfigDescriptor() { + return this.delegate.getJspConfigDescriptor(); + } + + /** @deprecated */ + public Enumeration getServletNames() { + return this.delegate.getServletNames(); + } + + /** @deprecated */ + public Enumeration getServlets() { + return this.delegate.getServlets(); + } + + /** @deprecated */ + public void log(Exception arg0, String arg1) { + this.delegate.log(arg0, arg1); + } + + public void log(String arg0, Throwable arg1) { + this.delegate.log(arg0, arg1); + } + + public void log(String arg0) { + this.delegate.log(arg0); + } + + public void removeAttribute(String arg0) { + this.delegate.removeAttribute(arg0); + } + + public void setAttribute(String arg0, Object arg1) { + this.delegate.setAttribute(arg0, arg1); + } + + public String getContextPath() { + try { + Method getContextPathMethod = this.delegate.getClass().getMethod("getContextPath", (Class[])null); + return (String)getContextPathMethod.invoke(this.delegate, (Object[])null); + } catch (Exception var2) { + return null; + } + } + } + + private class ServletConfigAdaptor implements ServletConfig { + private ServletConfig config; + private ServletContext context; + + public ServletConfigAdaptor(ServletConfig config) { + this.config = config; + this.context = ContextPathServletAdaptor.this.new ServletContextAdaptor(config.getServletContext()); + } + + public String getInitParameter(String arg0) { + return this.config.getInitParameter(arg0); + } + + public Enumeration getInitParameterNames() { + return this.config.getInitParameterNames(); + } + + public ServletContext getServletContext() { + return this.context; + } + + public String getServletName() { + return this.config.getServletName(); + } + } +} diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializer.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializer.java new file mode 100644 index 00000000000..c6bc9a57895 --- /dev/null +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializer.java @@ -0,0 +1,26 @@ +package org.wso2.carbon.ui; + +import org.apache.tiles.factory.AbstractTilesContainerFactory; +import org.apache.tiles.factory.BasicTilesContainerFactory; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.servlet.ServletApplicationContext; +import org.apache.tiles.startup.AbstractTilesInitializer; +import org.apache.tiles.startup.TilesInitializer; +import org.apache.tiles.web.startup.AbstractTilesListener; + +import javax.servlet.ServletContext; + +public class CustomTilesInitializer extends AbstractTilesInitializer { + + @Override + protected AbstractTilesContainerFactory createContainerFactory(ApplicationContext applicationContext) { + + return new BasicTilesContainerFactory(); + } + + @Override + protected ApplicationContext createTilesApplicationContext(ApplicationContext context) { + + return new ServletApplicationContext((ServletContext) context.getContext()); + } +} diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializerListener.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializerListener.java new file mode 100644 index 00000000000..d5371c0df76 --- /dev/null +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CustomTilesInitializerListener.java @@ -0,0 +1,65 @@ +package org.wso2.carbon.ui; + +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import org.apache.tiles.factory.BasicTilesContainerFactory; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.servlet.ServletApplicationContext; +import org.apache.tiles.startup.TilesInitializer; +import org.apache.tiles.startup.AbstractTilesInitializer; +import org.apache.tiles.TilesContainer; +import org.apache.tiles.request.servlet.ServletUtil; +import org.apache.tiles.web.startup.AbstractTilesListener; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.http.whiteboard.HttpWhiteboardConstants; + +@Component( + service = ServletContextListener.class, + property = { + HttpWhiteboardConstants.HTTP_WHITEBOARD_LISTENER + "=true", + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT + "=(" + HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME + "=tilesContext)" + } +) +public class CustomTilesInitializerListener extends AbstractTilesListener { + + @Override + protected TilesInitializer createTilesInitializer() { + + return new CustomTilesInitializer(); + } + +// @Override +// public void contextInitialized(ServletContextEvent sce) { +// ServletApplicationContext application = new ServletApplicationContext(sce.getServletContext()); +// TilesInitializer initializer = new AbstractTilesInitializer() { +// @Override +// protected ApplicationContext createTilesApplicationContext(ApplicationContext context) { +// return new ServletApplicationContext((ServletContext)context.getContext()); +// } +// +//// @Override +//// protected ApplicationContext createApplicationContext(Object context) { +//// return new ServletApplicationContext((javax.servlet.ServletContext) context); +//// } +// +// @Override +// protected BasicTilesContainerFactory createContainerFactory(ApplicationContext context) { +// return new BasicTilesContainerFactory(); +// } +// }; +//// TilesContainer container = initializer.createContainer(application); +//// ServletUtil.setContainer(sce.getServletContext(), container); +// +// initializer.initialize(application); +//// ServletUtil.setContainer(sce.getServletContext(), container); +// } +// +// @Override +// public void contextDestroyed(ServletContextEvent sce) { +// // Clean up resources if necessary +// } + + +} + diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/DefaultComponentEntryHttpContext.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/DefaultComponentEntryHttpContext.java index db7d1999876..b58c3dcfd58 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/DefaultComponentEntryHttpContext.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/DefaultComponentEntryHttpContext.java @@ -15,7 +15,6 @@ */ package org.wso2.carbon.ui; -import org.eclipse.equinox.http.helper.BundleEntryHttpContext; import org.osgi.framework.Bundle; import java.net.MalformedURLException; diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/FilterServletAdaptor.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/FilterServletAdaptor.java new file mode 100644 index 00000000000..c546293a100 --- /dev/null +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/FilterServletAdaptor.java @@ -0,0 +1,89 @@ +package org.wso2.carbon.ui; + +import java.io.IOException; +import java.util.Enumeration; +import java.util.Properties; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class FilterServletAdaptor implements Servlet { + ServletConfig config; + Servlet delegate; + Filter filter; + Properties filterInitParameters; + private FilterChain filterChain; + + public FilterServletAdaptor(Filter filter, Properties filterInitParameters, Servlet delegate) { + this.delegate = delegate; + this.filter = filter; + this.filterInitParameters = filterInitParameters == null ? new Properties() : filterInitParameters; + this.filterChain = new FilterServletAdaptor.FilterChainImpl(); + } + + public void init(ServletConfig config) throws ServletException { + this.config = config; + this.filter.init(new FilterServletAdaptor.FilterConfigImpl()); + this.delegate.init(config); + } + + public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { + this.filter.doFilter(request, response, this.filterChain); + } + + public void destroy() { + this.delegate.destroy(); + this.filter.destroy(); + this.config = null; + } + + public ServletConfig getServletConfig() { + return this.config; + } + + public String getServletInfo() { + return ""; + } + + class FilterConfigImpl implements FilterConfig { + FilterConfigImpl() { + } + + public String getFilterName() { + String filterName = FilterServletAdaptor.this.filterInitParameters.getProperty("filter-name"); + if (filterName == null) { + filterName = FilterServletAdaptor.this.filter.getClass().getName(); + } + + return filterName; + } + + public String getInitParameter(String name) { + return FilterServletAdaptor.this.filterInitParameters.getProperty(name); + } + + public Enumeration getInitParameterNames() { + return FilterServletAdaptor.this.filterInitParameters.propertyNames(); + } + + public ServletContext getServletContext() { + return FilterServletAdaptor.this.config.getServletContext(); + } + } + + public class FilterChainImpl implements FilterChain { + public FilterChainImpl() { + } + + public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { + FilterServletAdaptor.this.delegate.service(request, response); + } + } +} + diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/JspServlet.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/JspServlet.java index f8376f97b28..bb3fd058571 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/JspServlet.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/JspServlet.java @@ -195,6 +195,7 @@ public void destroy() { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String pathInfo = request.getPathInfo(); if (pathInfo != null && pathInfo.startsWith("/WEB-INF/")) { //$NON-NLS-1$ response.sendError(HttpServletResponse.SC_NOT_FOUND); diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/SecuredComponentEntryHttpContext.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/SecuredComponentEntryHttpContext.java index ca5b2af9f20..c441980904a 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/SecuredComponentEntryHttpContext.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/SecuredComponentEntryHttpContext.java @@ -20,7 +20,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.eclipse.equinox.http.helper.BundleEntryHttpContext; import org.osgi.framework.Bundle; import org.wso2.carbon.registry.core.Registry; diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/TilesJspServlet.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/TilesJspServlet.java index 0b6773e6576..0b1b4708c08 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/TilesJspServlet.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/TilesJspServlet.java @@ -19,6 +19,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.tiles.AttributeContext; +import org.apache.tiles.request.reflect.ClassUtil; +import org.apache.tiles.web.util.AttributeContextMutator; +import org.apache.tiles.web.util.TilesDispatchServlet; import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; import org.wso2.carbon.ui.action.ActionHelper; @@ -35,16 +39,42 @@ public class TilesJspServlet extends JspServlet { private static final long serialVersionUID = 1L; private static Log log = LogFactory.getLog(TilesJspServlet.class); + public static final String CONTAINER_KEY_INIT_PARAMETER = + "org.apache.tiles.web.util.TilesDispatchServlet.CONTAINER_KEY"; + + private String containerKey; + private AttributeContextMutator mutator; + public TilesJspServlet(Bundle bundle, UIResourceRegistry uiResourceRegistry) { super(bundle, uiResourceRegistry); } + //TODO check if this is needed + @Override + public void init() throws ServletException { + super.init(); + + containerKey = getServletConfig().getInitParameter(CONTAINER_KEY_INIT_PARAMETER); + + String temp = getInitParameter("mutator"); + if (temp != null) { + try { + mutator = (AttributeContextMutator) ClassUtil.instantiate(temp); + } catch (Exception e) { + throw new ServletException("Unable to instantiate specified context mutator.", e); + } + } else { + mutator = new DefaultMutator(); + } + } + public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String actionUrl = request.getRequestURI(); //This is the layout page defined in - //"/org.wso2.carbon.component/src/main/resources/web/WEB-INF/tiles/main_defs.xml" + //"/org.wso2.carbon.component/src/main/resources/web/WEB-INF/tiles/tiles.xml" //Need to serve http requests other than to tiles body page, //using the normal OSGi way @@ -73,10 +103,10 @@ public void service(HttpServletRequest request, HttpServletResponse response) } } - if ((actionUrl.lastIndexOf("/admin/layout/template.jsp") > -1) || actionUrl.lastIndexOf("ajaxprocessor.jsp") > -1 - || actionUrl.indexOf("gadgets/js") > -1) { + || actionUrl.indexOf("gadgets/js") > -1 + || "INCLUDE".equals(request.getDispatcherType().toString())) { super.service(request, response); } else if (actionUrl.startsWith("/carbon/registry/web/resources/foo/bar")) { //TODO : consider the renamed ROOT war scenario @@ -104,4 +134,67 @@ public void service(HttpServletRequest request, HttpServletResponse response) } } } + + class DefaultMutator implements AttributeContextMutator { + + /** {@inheritDoc} */ + public void mutate(AttributeContext context, javax.servlet.ServletRequest request) { + // noop; + } + } + + protected static final String canonicalURI(String s) { + if (s == null) { + return null; + } else { + StringBuilder result = new StringBuilder(); + int len = s.length(); + int pos = 0; + + while(pos < len) { + char c = s.charAt(pos); + if (isPathSeparator(c)) { + while(pos + 1 < len && isPathSeparator(s.charAt(pos + 1))) { + ++pos; + } + + if (pos + 1 < len && s.charAt(pos + 1) == '.') { + if (pos + 2 >= len) { + break; + } + + switch (s.charAt(pos + 2)) { + case '.': + if (pos + 3 < len && isPathSeparator(s.charAt(pos + 3))) { + pos += 3; + + int separatorPos; + for(separatorPos = result.length() - 1; separatorPos >= 0 && !isPathSeparator(result.charAt(separatorPos)); --separatorPos) { + } + + if (separatorPos >= 0) { + result.setLength(separatorPos); + } + continue; + } + break; + case '/': + case '\\': + pos += 2; + continue; + } + } + } + + result.append(c); + ++pos; + } + + return result.toString(); + } + } + + protected static final boolean isPathSeparator(char c) { + return c == '/' || c == '\\'; + } } diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/UIResourceRegistry.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/UIResourceRegistry.java index 232b908e894..d8a24759522 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/UIResourceRegistry.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/UIResourceRegistry.java @@ -63,7 +63,7 @@ public void initialize(BundleContext bundleContext) { } public URL getUIResource(String path) { - URL url = defaultUIResourceProvider.getUIResource(path); + URL url = defaultUIResourceProvider.getUIResource(canonicalURI(path)); if (url == null) { for (UIResourceProvider resourceProvider : resourceProviderSet) { url = resourceProvider.getUIResource(path); @@ -104,4 +104,59 @@ public void serviceChanged(ServiceEvent serviceEvent) { resourceProviderSet.remove(uiResourceProvider); } } + + protected static final String canonicalURI(String s) { + if (s == null) { + return null; + } else { + StringBuilder result = new StringBuilder(); + int len = s.length(); + int pos = 0; + + while(pos < len) { + char c = s.charAt(pos); + if (isPathSeparator(c)) { + while(pos + 1 < len && isPathSeparator(s.charAt(pos + 1))) { + ++pos; + } + + if (pos + 1 < len && s.charAt(pos + 1) == '.') { + if (pos + 2 >= len) { + break; + } + + switch (s.charAt(pos + 2)) { + case '.': + if (pos + 3 < len && isPathSeparator(s.charAt(pos + 3))) { + pos += 3; + + int separatorPos; + for(separatorPos = result.length() - 1; separatorPos >= 0 && !isPathSeparator(result.charAt(separatorPos)); --separatorPos) { + } + + if (separatorPos >= 0) { + result.setLength(separatorPos); + } + continue; + } + break; + case '/': + case '\\': + pos += 2; + continue; + } + } + } + + result.append(c); + ++pos; + } + + return result.toString(); + } + } + + protected static final boolean isPathSeparator(char c) { + return c == '/' || c == '\\'; + } } diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/action/ActionHelper.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/action/ActionHelper.java index 99d3455b230..79f355a948d 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/action/ActionHelper.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/action/ActionHelper.java @@ -21,7 +21,12 @@ import org.apache.tiles.AttributeContext; import org.apache.tiles.TilesContainer; import org.apache.tiles.access.TilesAccess; +import org.apache.tiles.request.ApplicationContext; +import org.apache.tiles.request.Request; +import org.apache.tiles.request.servlet.ServletRequest; +import org.apache.tiles.request.servlet.ServletUtil; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -40,21 +45,25 @@ public class ActionHelper { */ public static void render(String actionUrl, HttpServletRequest request, HttpServletResponse response) throws Exception { - TilesContainer container = TilesAccess.getContainer( - request.getSession().getServletContext()); - if(log.isDebugEnabled()){ - log.debug("Rendering tiles main.layout with page : "+actionUrl+"("+request.getSession().getId()+")"); + + ServletContext servletContext = request.getSession().getServletContext(); + ApplicationContext applicationContext = ServletUtil.getApplicationContext(servletContext); + TilesContainer container = TilesAccess.getContainer(applicationContext); + if (log.isDebugEnabled()) { + log.debug( + "Rendering tiles main.layout with page : " + actionUrl + "(" + request.getSession().getId() + ")"); } - AttributeContext attributeContext = container.startContext(request, response); + Request requestContext = new ServletRequest(container.getApplicationContext(), request, response); + AttributeContext attributeContext = container.startContext(requestContext); Attribute attr = new Attribute(actionUrl); attributeContext.putAttribute("body", attr); try { - container.render("main.layout", request, response); - container.endContext(request, response); + container.render("main.layout", requestContext); + container.endContext(requestContext); } catch (Exception e) { if (log.isDebugEnabled()) { // Intentionally logged at debug level log.debug("Error occurred while rendering." + - " We generally see this 'harmless' exception on WebLogic. Hiding it.", e); + " We generally see this 'harmless' exception on WebLogic. Hiding it.", e); } } } diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/deployment/UIBundleDeployer.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/deployment/UIBundleDeployer.java index 0394aada225..4675d974825 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/deployment/UIBundleDeployer.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/deployment/UIBundleDeployer.java @@ -17,8 +17,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.eclipse.equinox.http.helper.ContextPathServletAdaptor; -import org.eclipse.equinox.http.helper.FilterServletAdaptor; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -30,11 +28,14 @@ import org.osgi.service.http.HttpContext; import org.osgi.service.http.HttpService; import org.osgi.service.http.NamespaceException; +import org.osgi.service.http.whiteboard.HttpWhiteboardConstants; import org.osgi.util.tracker.ServiceTracker; import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.CarbonException; import org.wso2.carbon.base.ServerConfiguration; import org.wso2.carbon.ui.BundleBasedUIResourceProvider; +import org.wso2.carbon.ui.ContextPathServletAdaptor; +import org.wso2.carbon.ui.FilterServletAdaptor; import org.wso2.carbon.ui.deployment.beans.CarbonUIDefinitions; import org.wso2.carbon.ui.deployment.beans.Component; import org.wso2.carbon.ui.deployment.beans.CustomUIDefenitions; @@ -44,9 +45,6 @@ import org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager; import org.wso2.carbon.ui.util.UIResourceProvider; -import javax.servlet.Servlet; -import javax.servlet.ServletException; - import java.util.ArrayList; import java.util.Arrays; import java.util.Dictionary; @@ -55,6 +53,10 @@ import java.util.Iterator; import java.util.List; +import javax.servlet.Filter; +import javax.servlet.Servlet; +import javax.servlet.ServletException; + public class UIBundleDeployer implements SynchronousBundleListener { private static Log log = LogFactory.getLog(UIBundleDeployer.class); @@ -425,6 +427,18 @@ public void registerServlet(Servlet servlet, String urlPattern, Dictionary param httpService.registerServlet(urlPattern, new FilterServletAdaptor(associatedFilter, null, adaptedJspServlet), params, httpContext); } +// Dictionary properties = new Hashtable<>(); +// properties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, urlPattern); +// for (Enumeration enm = params.keys(); enm.hasMoreElements();) { +// String key = (String) enm.nextElement(); +// properties.put("servlet.init." + key, params.get(key)); +// } +// CarbonUIServiceComponent.getBundleContext().registerService(Servlet.class, servlet, properties); +// if (associatedFilter != null) { +// Dictionary props = new Hashtable<>(); +// props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_PATTERN, urlPattern); +// CarbonUIServiceComponent.getBundleContext().registerService(Filter.class, associatedFilter, props); +// } if (servletAttrs != null) { for (Enumeration enm = servletAttrs.keys(); enm.hasMoreElements();) { String key = (String) enm.nextElement(); diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/internal/CarbonUIServiceComponent.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/internal/CarbonUIServiceComponent.java index b2af9a372df..b8bd7066d4b 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/internal/CarbonUIServiceComponent.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/internal/CarbonUIServiceComponent.java @@ -25,7 +25,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tomcat.InstanceManager; -import org.eclipse.equinox.http.helper.ContextPathServletAdaptor; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @@ -38,6 +37,8 @@ import org.osgi.service.component.annotations.ReferencePolicy; import org.osgi.service.http.HttpContext; import org.osgi.service.http.HttpService; +import org.osgi.service.http.context.ServletContextHelper; +import org.osgi.service.http.whiteboard.HttpWhiteboardConstants; import org.osgi.service.packageadmin.PackageAdmin; import org.osgi.service.url.URLConstants; import org.osgi.service.url.URLStreamHandlerService; @@ -52,6 +53,7 @@ import org.wso2.carbon.ui.CarbonSecuredHttpContext; import org.wso2.carbon.ui.CarbonUIAuthenticator; import org.wso2.carbon.ui.CarbonUIUtil; +import org.wso2.carbon.ui.ContextPathServletAdaptor; import org.wso2.carbon.ui.DefaultCarbonAuthenticator; import org.wso2.carbon.ui.TextJavascriptHandler; import org.wso2.carbon.ui.TilesJspServlet; @@ -68,13 +70,6 @@ import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.utils.ConfigurationContextService; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.xml.namespace.QName; -import javax.xml.stream.FactoryConfigurationError; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; import java.io.IOException; import java.io.InputStream; import java.net.ContentHandler; @@ -90,6 +85,14 @@ import java.util.Map; import java.util.StringTokenizer; +import javax.servlet.Servlet; +import javax.servlet.ServletContext; +import javax.xml.namespace.QName; +import javax.xml.stream.FactoryConfigurationError; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + import static org.wso2.carbon.CarbonConstants.PRODUCT_XML; import static org.wso2.carbon.CarbonConstants.PRODUCT_XML_PROPERTIES; import static org.wso2.carbon.CarbonConstants.PRODUCT_XML_PROPERTY; @@ -108,8 +111,7 @@ public class CarbonUIServiceComponent { private static ServerConfigurationService serverConfiguration; private static RealmService realmService; private static CarbonTomcatService carbonTomcatService; - private static List authenticationExtenders = - new LinkedList(); + private static List authenticationExtenders = new LinkedList<>(); private BundleContext bundleContext; @@ -233,15 +235,6 @@ public void start(BundleContext context) throws Exception { final HttpService httpService = getHttpService(); - Dictionary initparams = new Hashtable(); - initparams.put("servlet-name", "TilesServlet"); - initparams.put("definitions-config", "/WEB-INF/tiles/main_defs.xml"); - initparams.put("org.apache.tiles.context.TilesContextFactory", - "org.apache.tiles.context.enhanced.EnhancedContextFactory"); - initparams.put("org.apache.tiles.factory.TilesContainerFactory.MUTABLE", "true"); - initparams.put("org.apache.tiles.definition.DefinitionsFactory", - "org.wso2.carbon.tiles.CarbonUrlDefinitionsFactory"); - String webContext = "carbon"; // The subcontext for the Carbon Mgt Console String serverURL = CarbonUIUtil.getServerURL(serverConfig); @@ -265,6 +258,9 @@ public void start(BundleContext context) throws Exception { //Registering filedownload servlet Servlet fileDownloadServlet = new ContextPathServletAdaptor(new FileDownloadServlet( context, getConfigurationContextService()), "/filedownload"); +// Dictionary fileDownloadServletProperties = new Hashtable<>(); +// fileDownloadServletProperties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/filedownload"); +// context.registerService(Servlet.class, fileDownloadServlet, fileDownloadServletProperties); httpService.registerServlet("/filedownload", fileDownloadServlet, null, commonContext); fileDownloadServlet.getServletConfig().getServletContext().setAttribute( CarbonConstants.SERVER_URL, serverURL); @@ -282,6 +278,9 @@ public void start(BundleContext context) throws Exception { } httpService.registerServlet("/fileupload", fileUploadServlet, null, commonContext); +// Dictionary fileUploadServletProperties = new Hashtable<>(); +// fileUploadServletProperties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/fileupload"); +// context.registerService(Servlet.class, fileUploadServlet, fileUploadServletProperties); fileUploadServlet.getServletConfig().getServletContext().setAttribute( CarbonConstants.SERVER_URL, serverURL); fileUploadServlet.getServletConfig().getServletContext().setAttribute( @@ -290,30 +289,44 @@ public void start(BundleContext context) throws Exception { uiBundleDeployer.deploy(bundleContext, commonContext); context.addBundleListener(uiBundleDeployer); - httpService.registerServlet("/", new org.apache.tiles.web.startup.TilesServlet(), - initparams, - commonContext); - httpService.registerResources("/" + webContext, "/", commonContext); - - adaptedJspServlet = new ContextPathServletAdaptor( - new TilesJspServlet(context.getBundle(), uiResourceRegistry), "/" + webContext); + Dictionary props = new Hashtable<>(); + props.put("osgi.http.whiteboard.context.name", "tilesContext"); + props.put("osgi.http.whiteboard.context.path", "/carbon"); - Dictionary carbonInitparams = new Hashtable(); - carbonInitparams.put("strictQuoteEscaping", "false"); - httpService.registerServlet("/" + webContext + "/*.jsp", adaptedJspServlet, carbonInitparams, commonContext); - - ServletContext jspServletContext = - adaptedJspServlet.getServletConfig().getServletContext(); - - jspServletContext.setAttribute( - InstanceManager.class.getName(), getTomcatInstanceManager()); + context.registerService(ServletContextHelper.class, (ServletContextHelper) commonContext, props); + HttpContext resourceContext = + new CarbonSecuredHttpContext(context.getBundle(), "/web", uiResourceRegistry, registry); + Dictionary resourceProps = new Hashtable<>(); + resourceProps.put("osgi.http.whiteboard.context.name", "resourceContext"); + resourceProps.put("osgi.http.whiteboard.context.path", "/carbon"); + resourceProps.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN, "/" + webContext + "/*"); + context.registerService(ServletContextHelper.class, (ServletContextHelper) resourceContext, resourceProps); + Dictionary properties = new Hashtable<>(); + properties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PATTERN, "/*"); + properties.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX, "/"); + properties.put("osgi.http.whiteboard.context.select", "(osgi.http.whiteboard.context.name=resourceContext)"); + properties.put("osgi.http.whiteboard.context.httpservice", true); + + // Replacement for httpService.registerResources with whiteboard + bundleContext.registerService(String.class, "resource", properties); + + adaptedJspServlet = new TilesJspServlet(context.getBundle(), uiResourceRegistry); + + Dictionary carbonInitparams = new Hashtable<>(); + carbonInitparams.put("servlet.init.strictQuoteEscaping", "false"); + carbonInitparams.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/*.jsp"); + carbonInitparams.put("osgi.http.whiteboard.context.select", "(osgi.http.whiteboard.context.name=tilesContext)"); + context.registerService(Servlet.class, adaptedJspServlet, carbonInitparams); + + ServletContext jspServletContext = adaptedJspServlet.getServletConfig().getServletContext(); + + jspServletContext.setAttribute(InstanceManager.class.getName(), getTomcatInstanceManager()); jspServletContext.setAttribute("registry", registryService); - jspServletContext.setAttribute(CarbonConstants.SERVER_CONFIGURATION, serverConfig); jspServletContext.setAttribute(CarbonConstants.CLIENT_CONFIGURATION_CONTEXT, clientConfigContext); //If the UI is running on local transport mode, then we use the server-side config context. - if(isLocalTransportMode) { + if (isLocalTransportMode) { jspServletContext.setAttribute(CarbonConstants.CONFIGURATION_CONTEXT, serverConfigContext); } else { jspServletContext.setAttribute(CarbonConstants.CONFIGURATION_CONTEXT, clientConfigContext); @@ -331,6 +344,7 @@ public void start(BundleContext context) throws Exception { .setAttribute(CustomUIDefenitions.CUSTOM_UI_DEFENITIONS, customUIDefenitions); // Registering jspServletContext as a service so that UI components can use it + // TODO why do we need to register this again? bundleContext.registerService(ServletContext.class.getName(), jspServletContext, null); //saving bundle context for future reference within CarbonUI Generation diff --git a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/util/UIResourceProvider.java b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/util/UIResourceProvider.java index fafb0815672..55f1be6075b 100644 --- a/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/util/UIResourceProvider.java +++ b/core/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/util/UIResourceProvider.java @@ -45,11 +45,11 @@ public interface UIResourceProvider { * /WEB_INF * /WEB-INF/web.xml * /WEB-INF/tiles - * /WEB-INF/tiles/main_defs.xml + * /WEB-INF/tiles/tiles.xml * * getResourcePaths("/") returns {"/welcome.html", "/WEB_INF"}. * getResourcePaths("/WEB_INF/") returns {"/WEB-INF/web.xml", "/WEB-INF/tiles/"}. - * getResourcePaths("/WEB-INF/tiles/") returns {"/WEB-INF/tiles/main_defs.xml"}. + * getResourcePaths("/WEB-INF/tiles/") returns {"/WEB-INF/tiles/tiles.xml"}. * * @param path partial path used to match the resources, which must start with a / * @return a Set containing the directory listing, or null if there are no resources whose path begins with the diff --git a/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tiles/main_defs.xml b/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tiles.xml similarity index 100% rename from core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tiles/main_defs.xml rename to core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tiles.xml diff --git a/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tlds/tiles-jsp.tld b/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tlds/tiles-jsp.tld index 5250bb20799..effdb62e203 100644 --- a/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tlds/tiles-jsp.tld +++ b/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/tlds/tiles-jsp.tld @@ -1,801 +1,921 @@ - - - - 2.0 - 1.2 - tiles - http://tiles.apache.org/tags-tiles + + + - This tag library provides Tiles tags.

+ + 1.2 + tiles + http://tiles.apache.org/tags-tiles - insertTemplate - org.apache.tiles.jsp.taglib.InsertTemplateTag - JSP - Insert a template.

-

Insert a template with the possibility to pass - parameters (called attributes). - A template can be seen as a procedure that can take parameters or attributes. - <tiles:insertTemplate> allows to define these attributes - and pass them to the inserted jsp page, called template. - Attributes are defined using nested tag <tiles:put> or - <tiles:putList>. + + Insert a template. +

+

+ Insert a template with the possibility to pass parameters (called + attributes). A template can be seen as a procedure that can take parameters + or attributes. <tiles:insertTemplate> allows to define + these attributes and pass them to the inserted jsp page, called template. + Attributes are defined using nested tag + <tiles:putAttribute> or + <tiles:putListAttribute>. +

+

+ You must specify template attribute, for inserting a template +

+ +

+ Example :

-

You must specify

  • template attribute, for inserting a template

    - -

    Example :

    +
    -        
    -          <tiles:insertTemplate template="/basic/myLayout.jsp" flush="true">
    -             <tiles:put name="title" value="My first page" />
    -             <tiles:put name="header" value="/common/header.jsp" />
    -             <tiles:put name="footer" value="/common/footer.jsp" />
    -             <tiles:put name="menu" value="/basic/menu.jsp" />
    -             <tiles:put name="body" value="/basic/helloBody.jsp" />
    -          </tiles:insert>
    -        
    +      <code>
    +                <tiles:insertTemplate template="/basic/myLayout.jsp" flush="true">
    +                   <tiles:putAttribute name="title" value="My first page" />
    +                   <tiles:putAttribute name="header" value="/common/header.jsp" />
    +                   <tiles:putAttribute name="footer" value="/common/footer.jsp" />
    +                   <tiles:putAttribute name="menu" value="/basic/menu.jsp" />
    +                   <tiles:putAttribute name="body" value="/basic/helloBody.jsp" />
    +                </tiles:insertTemplate>
    +              </code>
           
    ]]> + insertTemplate + org.apache.tiles.jsp.taglib.InsertTemplateTag + scriptless + + + template true true + java.lang.String + + - A string representing the URI of a template (for example, a JSP - page). -

    +
    + templateType + false + true + java.lang.String
    - flush - false - false - boolean - True or false. If true, current page out stream is flushed - before insertion.

    +
    -
    - - ignore + templateExpression false true - boolean + java.lang.String + + - If this attribute is set to true, and the attribute specified by the - name does not exist, simply return without writing anything. The - default value is false, which will cause a runtime exception to be - thrown.

    +
    -
    - role false true + java.lang.String + + - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped).

    +
    + preparer + false + true + java.lang.String
    - - preparer + + true, the response will be flushed after the insert. + ]]> + + flush false true - - The fully qualified class name of the preparer. - + boolean - insertDefinition - org.apache.tiles.jsp.taglib.InsertDefinitionTag - JSP - Insert a definition.

    -

    Insert a definition with the possibility to override and specify - parameters (called attributes). - A definition can be seen as a (partially or totally) filled template that - can override or complete attribute values. - <tiles:insertDefinition> allows to define these attributes - and pass them to the inserted jsp page, called template. - Attributes are defined using nested tag <tiles:put> or - <tiles:putList>. + + Insert a definition. +

    +

    + Insert a definition with the possibility to override and specify parameters + (called attributes). A definition can be seen as a (partially or totally) + filled template that can override or complete attribute values. + <tiles:insertDefinition> allows to define these attributes + and pass them to the inserted jsp page, called template. Attributes are + defined using nested tag <tiles:putAttribute> or + <tiles:putListAttribute>. +

    +

    + You must specify name tag attribute, for inserting a definition + from definitions factory. +

    +

    + Example :

    -

    You must specify name tag attribute, for inserting a definition from - definitions factory.

    -

    Example :

    +
    -        
    -          <tiles:insertDefinition name=".my.tiles.defininition flush="true">
    -             <tiles:put name="title" value="My first page" />
    -             <tiles:put name="header" value="/common/header.jsp" />
    -             <tiles:put name="footer" value="/common/footer.jsp" />
    -             <tiles:put name="menu" value="/basic/menu.jsp" />
    -             <tiles:put name="body" value="/basic/helloBody.jsp" />
    -          </tiles:insertDefinition>
    -        
    +      <code>
    +                <tiles:insertDefinition name=".my.tiles.defininition flush="true">
    +                   <tiles:putAttribute name="title" value="My first page" />
    +                   <tiles:putAttribute name="header" value="/common/header.jsp" />
    +                   <tiles:putAttribute name="footer" value="/common/footer.jsp" />
    +                   <tiles:putAttribute name="menu" value="/basic/menu.jsp" />
    +                   <tiles:putAttribute name="body" value="/basic/helloBody.jsp" />
    +                </tiles:insertDefinition>
    +              </code>
           
    ]]>
    + insertDefinition + org.apache.tiles.jsp.taglib.InsertDefinitionTag + scriptless + + + name true true + java.lang.String + + - Name of the definition to insert.

    +
    + template + false + true + java.lang.String
    - flush - false - false - boolean - True or false. If true, current page out stream is flushed - before insertion.

    +
    -
    - - ignore + templateType false true - boolean + java.lang.String + + - If this attribute is set to true, and the attribute specified by the - name does not exist, simply return without writing anything. The - default value is false, which will cause a runtime exception to be - thrown.

    +
    + templateExpression + false + true + java.lang.String
    + + + role false true + java.lang.String + + - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped).

    +
    + preparer + false + true + java.lang.String
    - - preparer + + true, the response will be flushed after the insert. + ]]> + + flush false true - - The fully qualified class name of preparer. - + boolean
    - insertAttribute - org.apache.tiles.jsp.taglib.InsertAttributeTag - JSP - Inserts the value of an attribute into the page.

    -

    This tag can be flexibly used to insert the value of an attribute into a page. - As in other usages in Tiles, every attribute can be determined to have a "type", - either set explicitly when it was defined, or "computed". If the type is not explicit, then - if the attribute value is a valid definition, it will be inserted as such. Otherwise, - if it begins with a "/" character, it will be treated as a "template". Finally, if it - has not otherwise been assigned a type, it will be treated as a String and included without - any special handling.

    - -

    Example :

    -
    -        
    -          
    -        
    -      
    + + Declare a list that will be pass as an attribute. +

    +

    + Declare a list that will be pass as an attribute . List elements are added + using the tag 'addAttribute' or 'addListAttribute'. This tag can only be used + inside 'insertTemplate', 'insertDefinition' or 'definition' tag. +

    ]]>
    + addListAttribute + org.apache.tiles.jsp.taglib.AddListAttributeTag + scriptless - name - false - true - Name of the attribute to insert. This attribute will be ignored if - the value attribute is specified.

    +
    + role + false + true + java.lang.String
    +
    + + + + Import attribute(s) in specified context. +

    +

    + Import attribute(s) to requested scope. Attribute name and scope are + optional. If not specified, all attributes are imported in page scope. Once + imported, an attribute can be used as any other beans from jsp contexts. +

    + ]]> +
    + importAttribute + org.apache.tiles.jsp.taglib.ImportAttributeTag + empty - value + + null, all the attributes will be imported. + ]]> + + name false true - java.lang.Object + java.lang.String + + - Attribute object to render directly. If it specified, the name - attribute will be ignored.

    + null, the import will go in page scope. ]]>
    + scope + false + true + java.lang.String
    - flush - false - false - boolean - True or false. If true, current page out stream is flushed - before insertion.

    + name. If + null, the value of name will be used. ]]>
    + toName + false + true + java.lang.String
    + + true, if the attribute is not present, the + problem will be ignored. + ]]> + ignore false true boolean - + +
    + + If this attribute is set to true, and the attribute specified by the - name does not exist, simply return without writing anything. The - default value is false, which will cause a runtime exception to be - thrown.

    +

    + Declare a list that will be pass as attribute to tile. +

    +

    + Declare a list that will be pass as attribute to tile. List elements are + added using the tags 'addAttribute' or 'addListAttribute'. This tag can only + be used inside 'insertTemplate', 'insertDefinition', 'definition' tags. +

    + ]]> +
    + putListAttribute + org.apache.tiles.jsp.taglib.PutListAttributeTag + scriptless + + + + name + true + true + java.lang.String + + + role false true + java.lang.String + + - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped).

    + true, the list attribute will use, as first elements, the + list contained in the list attribute, put with the same name, of the containing definition. ]]>
    + inherit + false + true + boolean
    - preparer + + true the attribute will be cascaded to all nested attributes. + ]]> + + cascade false true - - The fully qualified name of the preparer. - + boolean
    - definition - org.apache.tiles.jsp.taglib.definition.DefinitionTag - JSP Create a definition at runtime. -

    -

    Create a new definition at runtime. - Newly created definition will be available across the entire request. -

    ]]> -
    +

    + Create a definition at runtime. +

    +

    + Create a new definition at runtime. Newly created definition will be + available across the entire request. +

    + ]]> + + definition + org.apache.tiles.jsp.taglib.DefinitionTag + scriptless - name - true - true - Specifies the name under which the newly created definition bean - will be saved.

    +
    + name + false + true + java.lang.String
    + + + template false true + java.lang.String + + - A string representing the URI of a template - (a JSP page).

    +
    -
    - role false true + java.lang.String + + - Role to check before inserting this definition. If role is not - defined for current user, definition is not inserted. Checking is - done at insert time, not during definition process.

    +
    -
    - extends false true + java.lang.String + + - Name of a parent definition that is used to initialize this new - definition. Parent definition is searched in definitions factory.

    +
    -
    - preparer false true - - Specifies the preparer name to use. The specified preparer will - be executed before rendering this newly created definition.

    - ]]> -
    + java.lang.String
    - putAttribute - org.apache.tiles.jsp.taglib.PutAttributeTag - JSP - Put an attribute in enclosing attribute container tag.

    -

    - Enclosing attribute container tag can be : -

      -
    • <initContainer>
    • -
    • <definition>
    • -
    • <insertAttribute>
    • -
    • <insertDefinition>
    • -
    • <putListAttribute>
    • -
    - (or any other tag which implements the {@link PutAttributeTagParent} interface. - Exception is thrown if no appropriate tag can be found.

    -

    Put tag can have following atributes : -

      -
    • name : Name of the attribute
    • -
    • value : value to put as attribute
    • -
    • type : value type. Only valid if value is a String and is set by - value="something" or by a bean. - Possible type are : string (value is used as direct string), - template (value is used as a page url to insert), - definition (value is used as a definition name to insert)
    • -
    • direct : Specify if value is to be used as a direct string or as a - page url to insert. This is another way to specify the type. It only apply - if value is set as a string, and type is not present.
    • -
    • beanName : Name of a bean used for setting value. Only valid if value is not set. - If property is specified, value come from bean's property. Otherwise, bean - itself is used for value.
    • -
    • beanProperty : Name of the property used for retrieving value.
    • -
    • beanScope : Scope containing bean.
    • -
    • role : Role to check when 'insert' will be called. If enclosing tag is - <insert>, role is checked immediately. If enclosing tag is - <definition>, role will be checked when this definition will be - inserted.
    • -

    -

    Value can also come from tag body. Tag body is taken into account only if - value is not set by one of the tag attributes. In this case Attribute type is - "string", unless tag body define another type.

    +
    + setCurrentContainer + org.apache.tiles.jsp.taglib.SetCurrentContainerTag + empty - name - true - true - Name of the attribute.

    + null, the default one will be used. ]]>
    -
    - - value + containerKey false true - java.lang.Object - + java.lang.String + +
    + + Attribute value. Could be a String or an Object. - Value can come from a direct assignment (value="aValue") or from a bean. - One of 'value' 'content' or 'beanName' must be present.

    +

    + Inserts the value of an attribute into the page. +

    +

    + This tag can be flexibly used to insert the value of an attribute into a + page. As in other usages in Tiles, every attribute can be determined to have + a "type", either set explicitly when it was defined, or "computed". If the + type is not explicit, then if the attribute value is a valid definition, it + will be inserted as such. Otherwise, if it begins with a "/" character, it + will be treated as a "template". Finally, if it has not otherwise been + assigned a type, it will be treated as a String and included without any + special handling. +

    + +

    + Example : +

    + +
    +      <code>
    +                <tiles:insertAttribute name="body" />
    +              </code>
    +      
    + ]]> +
    + insertAttribute + org.apache.tiles.jsp.taglib.InsertAttributeTag + scriptless + + + true, if an exception happens during + rendering, of if the attribute is null, the problem will be ignored. ]]> + ignore + false + true + boolean - type - false - false - Specify content type: string, template or definition.

    -
      -
    • String : Content is printed directly.
    • -
    • template : Content is included from specified URL. Value is used as an URL.
    • -
    • definition : Value is the name of a definition defined in factory (xml file). Definition will be searched - in the inserted tile, in a <tiles:insert attribute="attributeName"> tag, where 'attributeName' - is the name used for this tag.
    • -
    +
    + preparer + false + true + java.lang.String
    + + + role false true + java.lang.String + + - - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped). -

    +
    + defaultValue + false + true + java.lang.Object
    -
    - - putListAttribute - org.apache.tiles.jsp.taglib.PutListAttributeTag - JSP - - Declare a list that will be pass as attribute to tile. -

    -

    Declare a list that will be pass as attribute to tile. - List elements are added using the tag 'add'. - This tag can only be used inside 'insert' or 'definition' tag.

    - ]]> -
    - name - true - true - Name of the list.

    +
    -
    -
    - - addAttribute - - org.apache.tiles.jsp.taglib.AddAttributeTag - JSP - - Add an element to the surrounding list. - Equivalent to 'put', but for list element.

    - -

    Add an element to the surrounding list. - This tag can only be used inside putList tag. - Value can come from a direct assignment (value="aValue") or from a bean. - One of 'value' or 'beanName' must be present.

    - ]]> -
    - - value + defaultValueRole false true - java.lang.Object + java.lang.String + + - Attribute value. Can be a String or Object.

    + -
    + + defaultValueType + false + true + java.lang.String
    - type - false - false - Specify content type: string, template or definition.

    -
      -
    • String : Content is printed directly.
    • -
    • template : Content is included from specified URL. Value is used as an URL.
    • -
    • definition : Value denote a definition defined in factory (xml file). Definition will be searched - in the inserted tile, in a <insert attribute="attributeName"> tag, where 'attributeName' - is the name used for this tag.
    • -
    +
    + name + false + true + java.lang.String
    - role + + + + value false true + org.apache.tiles.Attribute + + - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped).

    -

    The role isn't taken into account if <add> - tag is used in a definition.

    + true, the response will be flushed after the insert. ]]>
    + flush + false + true + boolean
    - addListAttribute - org.apache.tiles.jsp.taglib.AddListAttributeTag - JSP - - Declare a list that will be pass as attribute to tile. -

    -

    Declare a list that will be pass as attribute to tile. - List elements are added using the tag 'add'. - This tag can only be used inside 'insert' or 'definition' tag.

    - ]]> -
    -
    - - getAsString - org.apache.tiles.jsp.taglib.GetAsStringTag - empty - - Render the value of the specified template attribute to the current JspWriter -

    - -

    Retrieve the value of the specified template attribute - property, and render it to the current JspWriter as a String. - The usual toString() conversions is applied on found value.

    -

    Throw a JSPException if named value is not found.

    + + Add an element to the surrounding list. Equivalent to 'putAttribute', + but for list element. +

    + +

    + Add an element to the surrounding list. This tag can only be used inside + 'putListAttribute' or 'addListAttribute' tags. Value can come from a direct + assignment (value="aValue") +

    ]]>
    + addAttribute + org.apache.tiles.jsp.taglib.AddAttributeTag + scriptless - name - true - true - Attribute name.

    +
    -
    - - ignore + value false true - boolean + java.lang.Object + + - - If this attribute is set to true, and the attribute specified by the name - does not exist, simply return without writing anything. The default value is false, which will - cause a runtime exception to be thrown. -

    +
    + expression + false + true + java.lang.String
    + + + role false true + java.lang.String + + - - If the user is in the specified role, the tag is taken into account; - otherwise, the tag is ignored (skipped). -

    +
    + type + false + true + java.lang.String
    - useAttribute - org.apache.tiles.jsp.taglib.UseAttributeTag - org.apache.tiles.jsp.taglib.UseAttributeTag$Tei - empty - Use attribute value inside page.

    -

    Declare a Java variable, and an attribute in the specified scope, - using tile attribute value.

    -

    Java variable and attribute will have the name specified by 'id', - or the original name if not specified.

    + + Put an attribute in enclosing attribute container tag. +

    +

    + Enclosing attribute container tag can be : +

      +
    • <initContainer>
    • +
    • <definition>
    • +
    • <insertAttribute>
    • +
    • <insertDefinition>
    • +
    • <putListAttribute>
    • +
    + (or any other tag which implements the PutAttributeTagParent + interface. Exception is thrown if no appropriate tag can be found. +

    +

    + Put tag can have following atributes : +

      +
    • name : Name of the attribute
    • +
    • value : value to put as attribute
    • +
    • type : value type. Possible type are : string (value is used as direct + string), template (value is used as a page url to insert), definition (value + is used as a definition name to insert), object (value is used as it is)
    • +
    • role : Role to check when 'insertAttribute' will be called.
    • +
    +

    +

    + Value can also come from tag body. Tag body is taken into account only if + value is not set by one of the tag attributes. In this case Attribute type is + "string", unless tag body define another type. +

    ]]>
    + putAttribute + org.apache.tiles.jsp.taglib.PutAttributeTag + scriptless - id - false - true - Declared attribute and variable name.

    +
    + name + true + true + java.lang.String
    - classname - false - true - Class of the declared variable.

    +
    + value + false + true + java.lang.Object
    - scope - false - false - Scope of the declared attribute. Default to 'page'.

    +
    + expression + false + true + java.lang.String
    - name - true - true - Tile's attribute name.

    +
    + role + false + true + java.lang.String
    - ignore + + + + type false true - boolean + java.lang.String + + - - If this attribute is set to true, and the attribute specified by the name - does not exist, simply return without error. The default value is false, which will - cause a runtime exception to be thrown. -

    + true the attribute will be cascaded to all nested attributes. ]]>
    + cascade + false + true + boolean
    - importAttribute - org.apache.tiles.jsp.taglib.ImportAttributeTag - empty - Import Tile's attribute in specified context.

    -

    Import attribute from tile to requested scope. - Attribute name and scope are optional. If not specified, all tile - attributes are imported in page scope. - Once imported, an attribute can be used as any other beans from jsp - contexts.

    + + Render the value of the specified template attribute to the current + Writer +

    + +

    + Retrieve the value of the specified template attribute property, and render + it to the current Writer as a String. The usual toString() conversions is + applied on found value. +

    ]]>
    + getAsString + org.apache.tiles.jsp.taglib.GetAsStringTag + scriptless - name + + true, if an exception happens during + rendering, of if the attribute is null, the problem will be ignored. + ]]> + + ignore false true + boolean + + - Tile's attribute name. If not specified, all attributes are - imported.

    +
    + preparer + false + true + java.lang.String
    - toName + + + + role false true + java.lang.String + + - Name of the destination attribute. If not specified, the name will - be the same as specified in name attribute

    +
    + defaultValue + false + true + java.lang.Object
    - scope - false - false - Scope into which attribute is imported. Default to page.

    +
    + defaultValueRole + false + true + java.lang.String
    - ignore + + + + defaultValueType false true - boolean + java.lang.String + + - If this attribute is set to true, and the attribute specified by - the name does not exist, simply return without error. The default - value is false, which will cause a runtime exception to be thrown.

    +
    + name + true + true + java.lang.String
    -
    - - initContainer - org.apache.tiles.jsp.taglib.definition.InitContainerTag - JSP - - Initialize the TilesContainer.

    -

    - In order to use the Tiles system, a TilesContainer must be instantiated. - This initialization is generally done by the TilesListener (or perhaps the - TilesServlet or TilesFilter). -

    -

    - If the intialization needs to be dynamic, you can initialize the container using - this tag. Realize however, that this tag MUST be executed prior to invoking - any other definitions. Additionally, the initilization may only be done once, - and any subsequent invocations will be ignored. -

    - ]]> -
    - containerFactory + + + + value false true - Container Factory implementation used to instantiate the container.

    ]]>
    + org.apache.tiles.Attribute
    - - - destroyContainer - org.apache.tiles.jsp.taglib.definition.DestroyContainerTag - empty - - Destroy the TilesContainer.

    - ]]> -
    -
    - diff --git a/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/web.xml b/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/web.xml index c493f5e277c..b93f76fa73b 100644 --- a/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/web.xml +++ b/core/org.wso2.carbon.ui/src/main/resources/web/WEB-INF/web.xml @@ -20,15 +20,15 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> - - TilesServlet - org.apache.tiles.web.startup.TilesServlet - - 0 - + + + + + + + + + org.apache.tiles.context.TilesContextFactory diff --git a/core/org.wso2.carbon.user.core/pom.xml b/core/org.wso2.carbon.user.core/pom.xml index 921998786ac..be28d63044e 100644 --- a/core/org.wso2.carbon.user.core/pom.xml +++ b/core/org.wso2.carbon.user.core/pom.xml @@ -151,6 +151,7 @@ + org.apache.maven.plugins maven-resources-plugin @@ -205,6 +206,10 @@ *;resolution:=optional * + + osgi.service;objectClass=org.wso2.carbon.user.core.service.RealmService, + osgi.service;objectClass=org.wso2.carbon.user.api.UserRealmService + diff --git a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common/DefaultRealm.java b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common/DefaultRealm.java index cb5859ae6d2..1d9bb7f92f6 100644 --- a/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common/DefaultRealm.java +++ b/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common/DefaultRealm.java @@ -19,6 +19,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.osgi.annotation.bundle.Capability; import org.wso2.carbon.caching.impl.CachingConstants; import org.wso2.carbon.caching.impl.Util; import org.wso2.carbon.user.api.RealmConfiguration; @@ -51,6 +52,13 @@ import static org.wso2.carbon.user.core.constants.UserCoreErrorConstants.ErrorMessages.ERROR_CODE_DUPLICATE_ERROR_WHILE_ADDING_CLAIM_MAPPINGS; +@Capability( + namespace = "osgi.service", + attribute = { + "objectClass=org.wso2.carbon.user.core.UserRealm", + "service.scope=singleton" + } +) public class DefaultRealm implements UserRealm { private static Log log = LogFactory.getLog(DefaultRealm.class); diff --git a/core/org.wso2.carbon.utils/pom.xml b/core/org.wso2.carbon.utils/pom.xml index c96a01a85b1..8422b201deb 100644 --- a/core/org.wso2.carbon.utils/pom.xml +++ b/core/org.wso2.carbon.utils/pom.xml @@ -273,6 +273,9 @@ *;resolution:=optional * + + osgi.service;objectClass=org.wso2.carbon.context.CarbonCoreInitializedEvent + diff --git a/core/pom.xml b/core/pom.xml index 9f38a464ea9..0252ce2a894 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -113,7 +113,7 @@ org.wso2.carbon.registry.api org.wso2.carbon.user.api org.wso2.carbon.osgi.security - org.wso2.carbon.registry.xboot + org.wso2.carbon.queuing org.wso2.carbon.utils org.wso2.carbon.securevault @@ -147,7 +147,7 @@ org.wso2.carbon.ndatasource.common org.wso2.carbon.ndatasource.core org.wso2.carbon.ndatasource.rdbms - org.wso2.carbon.framework.exporter + org.wso2.carbon.pax-logging-log4j2-plugins org.wso2.carbon.logging.correlation org.wso2.carbon.hazelcast diff --git a/core/server-role-manager/org.wso2.carbon.roles.mgt/pom.xml b/core/server-role-manager/org.wso2.carbon.roles.mgt/pom.xml index d3671075512..3ea75fbadca 100644 --- a/core/server-role-manager/org.wso2.carbon.roles.mgt/pom.xml +++ b/core/server-role-manager/org.wso2.carbon.roles.mgt/pom.xml @@ -53,7 +53,7 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services diff --git a/core/server-role-manager/pom.xml b/core/server-role-manager/pom.xml index b83fe69214f..4105c0b28f0 100644 --- a/core/server-role-manager/pom.xml +++ b/core/server-role-manager/pom.xml @@ -36,4 +36,3 @@ - diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-licensed/1.0.0/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-licensed/1.0.0/pom.xml index 0b6f33897d9..e6a838d4413 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-licensed/1.0.0/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-licensed/1.0.0/pom.xml @@ -27,6 +27,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -53,4 +54,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-unlicensed/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-unlicensed/pom.xml index c9cf236862e..8388b4c960d 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-unlicensed/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature-unlicensed/pom.xml @@ -27,6 +27,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -58,4 +59,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.0/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.0/pom.xml index 7f8187a9b7b..655aeb45d60 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.0/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.0/pom.xml @@ -27,6 +27,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -53,4 +54,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.1/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.1/pom.xml index 25b166f0d72..07684207b5b 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.1/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature1/1.0.1/pom.xml @@ -27,6 +27,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -53,4 +54,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.0/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.0/pom.xml index d6e712a36ff..4f40094132f 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.0/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.0/pom.xml @@ -39,6 +39,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -68,4 +69,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.1/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.1/pom.xml index d8e43cb522f..d921f2f54b9 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.1/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature2/1.0.1/pom.xml @@ -39,6 +39,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -68,4 +69,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.0/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.0/pom.xml index 9fcdcd519c9..795f85abcc1 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.0/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.0/pom.xml @@ -39,6 +39,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -70,4 +71,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.1/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.1/pom.xml index 97b2d3d55b1..179530c0d2e 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.1/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/feature3/1.0.1/pom.xml @@ -39,6 +39,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -70,4 +71,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/licensed-unlicensed-features/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/licensed-unlicensed-features/pom.xml index 982c6bbe3d1..5836bd93643 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/licensed-unlicensed-features/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/features/licensed-unlicensed-features/pom.xml @@ -33,6 +33,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation @@ -59,4 +60,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/repository/pom.xml b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/repository/pom.xml index b8b501f7abe..7410b3d5fdc 100644 --- a/distribution/integration/test-common/common-artifacts/sample-feature-repo1/repository/pom.xml +++ b/distribution/integration/test-common/common-artifacts/sample-feature-repo1/repository/pom.xml @@ -19,6 +19,7 @@ org.wso2.maven carbon-p2-plugin + true 2-p2-repo-generation @@ -67,4 +68,4 @@ - \ No newline at end of file + diff --git a/distribution/integration/tests-integration/tests/pom.xml b/distribution/integration/tests-integration/tests/pom.xml index d4228571e60..a812370491f 100644 --- a/distribution/integration/tests-integration/tests/pom.xml +++ b/distribution/integration/tests-integration/tests/pom.xml @@ -24,7 +24,7 @@ maven-surefire-plugin false - -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m + -Xmx1024m org.wso2.carbon org.wso2.carbon.server.admin.ui @@ -389,6 +406,12 @@ org.wso2.carbon.automationutils org.wso2.carbon.integration.common.utils 4.4.1 + + + org.slf4j + log4j-over-slf4j + + org.apache.logging.log4j diff --git a/distribution/integration/tests-integration/tests/src/test/java/org/wso2/carbon/integration/tests/carbontools/CarbonServerBasicOperationTestCase.java b/distribution/integration/tests-integration/tests/src/test/java/org/wso2/carbon/integration/tests/carbontools/CarbonServerBasicOperationTestCase.java index 1cb445b49d5..af8c7b7a2e2 100755 --- a/distribution/integration/tests-integration/tests/src/test/java/org/wso2/carbon/integration/tests/carbontools/CarbonServerBasicOperationTestCase.java +++ b/distribution/integration/tests-integration/tests/src/test/java/org/wso2/carbon/integration/tests/carbontools/CarbonServerBasicOperationTestCase.java @@ -35,7 +35,6 @@ import org.wso2.carbon.integration.tests.common.utils.CarbonIntegrationBaseTest; import org.wso2.carbon.integration.tests.common.utils.CarbonIntegrationConstants; import org.wso2.carbon.utils.ServerConstants; -import sun.management.VMManagement; import javax.xml.xpath.XPathExpressionException; import java.io.BufferedReader; @@ -208,17 +207,11 @@ public void testCarbonDumpCommandOnWindows() throws Exception { if (CarbonCommandToolsUtil.getCurrentOperatingSystem(). contains(OperatingSystems.WINDOWS.name().toLowerCase())) { - RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); - Field jvmField = runtimeMXBean.getClass().getDeclaredField("jvm"); - jvmField.setAccessible(true); - VMManagement vmManagement = (VMManagement) jvmField.get(runtimeMXBean); - Method getProcessIdMethod = vmManagement.getClass().getDeclaredMethod("getProcessId"); - getProcessIdMethod.setAccessible(true); - Integer processId = (Integer) getProcessIdMethod.invoke(vmManagement); + long pid = ProcessHandle.current().pid(); String[] cmdArray = new String[] {"cmd.exe", "/c", "carbondump.bat", "-carbonHome" - , carbonHome, "-pid", Integer.toString(processId)}; + , carbonHome, "-pid", Long.toString(pid)}; processDump = CarbonCommandToolsUtil.runScript(carbonHome + "/bin", cmdArray); assertTrue(isDumpFileFound(carbonHome), "Couldn't find the dump file"); } else { diff --git a/distribution/integration/tests-integration/tests/src/test/resources/client/modules/addressing-1.6.1-wso2v116-SNAPSHOT.mar b/distribution/integration/tests-integration/tests/src/test/resources/client/modules/addressing-1.6.1-wso2v116-SNAPSHOT.mar new file mode 100644 index 0000000000000000000000000000000000000000..047a78e3588b8d403cce16839c662c26832b3b39 GIT binary patch literal 31565 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

    42F}pCRrb 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 - - org.apache.maven.plugins - maven-dependency-plugin - false - - - unpack-equinox-executable - test - - unpack - - - - - org.eclipse.equinox - org.eclipse.equinox.executable - 3.5.0.v20110530-7P7NFUFFLWUl76mart - zip - true - target - - - - - - org.wso2.maven carbon-p2-plugin + true p2-repo-generation @@ -213,6 +188,7 @@ org.wso2.carbon:org.wso2.carbon.core.runtime.feature:${carbon.kernel.version} + true @@ -224,9 +200,6 @@ ${basedir}/carbon.product - - ${basedir}/target/org.eclipse.equinox.executable_3.5.0.v20110530-7P7NFUFFLWUl76mart - file:${basedir}/target/p2-repo file:${basedir}/target/p2-repo diff --git a/distribution/product/modules/features/org.wso2.carbon.styles.feature/pom.xml b/distribution/product/modules/features/org.wso2.carbon.styles.feature/pom.xml index 43a86f9f091..e23d6416f12 100644 --- a/distribution/product/modules/features/org.wso2.carbon.styles.feature/pom.xml +++ b/distribution/product/modules/features/org.wso2.carbon.styles.feature/pom.xml @@ -42,6 +42,7 @@ org.wso2.maven carbon-p2-plugin + true p2-feature-generation diff --git a/distribution/product/modules/p2-profile-gen/pom.xml b/distribution/product/modules/p2-profile-gen/pom.xml index 2d2b80d32ac..7810ac680a0 100644 --- a/distribution/product/modules/p2-profile-gen/pom.xml +++ b/distribution/product/modules/p2-profile-gen/pom.xml @@ -61,6 +61,7 @@ org.wso2.maven carbon-p2-plugin + true 2-p2-repo-generation @@ -80,6 +81,9 @@ org.wso2.ciphertool:org.wso2.ciphertool.feature:${version.ciphertool} + + + @@ -106,6 +110,10 @@ org.wso2.ciphertool.feature.group ${version.ciphertool} + + + + diff --git a/features/org.wso2.carbon.core.common.feature/pom.xml b/features/org.wso2.carbon.core.common.feature/pom.xml index 0671c986583..eccf0102669 100644 --- a/features/org.wso2.carbon.core.common.feature/pom.xml +++ b/features/org.wso2.carbon.core.common.feature/pom.xml @@ -36,6 +36,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation @@ -54,10 +55,7 @@ - org.eclipse.equinox:org.eclipse.equinox.http.servlet:${version.equinox.http.servlet} - - - org.eclipse.equinox:org.eclipse.equinox.http.helper:${version.equinox.http.helper} + org.eclipse.platform:org.eclipse.equinox.http.servlet:${version.equinox.http.servlet} org.wso2.orbit.org.apache.tomcat:tomcat-jsp-api:${orbit.version.tomcat.jsp.api} @@ -78,7 +76,7 @@ commons-pool.wso2:commons-pool:${orbit.version.commons.pool} org.apache.abdera.wso2:abdera:${orbit.version.abdera} org.apache.axis2.wso2:axis2:${orbit.version.axis2} - org.apache.tiles.wso2:tiles-jsp:${orbit.version.tiles} + org.wso2.orbit.org.apache.tiles:tiles-jsp:${orbit.version.tiles} org.wso2.orbit.org.apache.xmlbeans:xmlbeans:${version.xmlbeans} org.apache.ws.commons.axiom.wso2:axiom:${orbit.version.axiom} org.wso2.orbit.org.apache.neethi:neethi:${neethi.osgi.version} @@ -172,6 +170,11 @@ org.wso2.carbon.crypto:org.wso2.carbon.crypto.provider:${carbon.crypto.version} org.wso2.orbit.sun.xml.bind:jaxb:${version.org.wso2.orbit.javax.xml.bind.jaxb} + + org.wso2.orbit.javax.activation:activation:1.1.1.wso2v4 + + + javax.xml.soap:javax.xml.soap-api:1.4.0 diff --git a/features/org.wso2.carbon.core.feature/pom.xml b/features/org.wso2.carbon.core.feature/pom.xml index 3e4f071a8c7..c63ee8ea823 100644 --- a/features/org.wso2.carbon.core.feature/pom.xml +++ b/features/org.wso2.carbon.core.feature/pom.xml @@ -49,6 +49,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation diff --git a/features/org.wso2.carbon.core.runtime.feature/pom.xml b/features/org.wso2.carbon.core.runtime.feature/pom.xml index afbd9bebf1f..3d476d1ded4 100644 --- a/features/org.wso2.carbon.core.runtime.feature/pom.xml +++ b/features/org.wso2.carbon.core.runtime.feature/pom.xml @@ -38,19 +38,24 @@ org.eclipse.osgi - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services + + + + + - org.wso2.eclipse.equinox - org.eclipse.equinox.launcher.gtk.linux.x86 + org.eclipse.platform + org.eclipse.equinox.launcher.gtk.linux.x86_64 - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.common - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.simpleconfigurator @@ -58,31 +63,39 @@ org.wso2.carbon.osgi.security - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.util - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.ds - org.wso2.eclipse.equinox + org.eclipse.platform + org.eclipse.osgi.util + + + org.apache.felix + org.apache.felix.scr + + + org.eclipse.platform org.eclipse.equinox.launcher - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.app - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.concurrent - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.frameworkadmin - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.frameworkadmin.equinox @@ -102,119 +115,140 @@ org.apache.felix.gogo.runtime - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.artifact.repository - org.wso2.eclipse.equinox + org.tukaani + xz + + + org.eclipse.platform org.eclipse.equinox.p2.console - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.core - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.director - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.director.app - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.directorywatcher - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.engine - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.extensionlocation - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.garbagecollector - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.jarprocessor - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata.repository - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.reconciler.dropins - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository.tools - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.touchpoint.eclipse - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.touchpoint.natives - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.updatechecker - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.updatesite - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.publisher.eclipse - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.preferences - org.wso2.eclipse.equinox + org.osgi + org.osgi.service.prefs + + + + org.bouncycastle + bcpg-jdk18on + + + org.bouncycastle + bcutil-jdk18on + + + org.bouncycastle + bcprov-jdk18on + + + org.eclipse.platform org.eclipse.equinox.registry - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.security - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.simpleconfigurator.manipulator - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.publisher - org.eclipse.core + org.eclipse.platform org.eclipse.core.contenttype - org.eclipse.core + org.eclipse.platform org.eclipse.core.expressions - org.eclipse.core + org.eclipse.platform org.eclipse.core.jobs - org.eclipse.core + org.eclipse.platform org.eclipse.core.runtime @@ -242,7 +276,7 @@ org.sat4j.pb - org.eclipse.osgi + org.eclipse.platform org.eclipse.equinox.p2.transport.ecf @@ -253,6 +287,63 @@ org.wso2.eclipse.osgi org.eclipse.osgi.compatibility.state + + org.osgi + org.osgi.service.component + + + org.osgi + org.osgi.util.promise + + + org.osgi + org.osgi.util.function + + + org.osgi + org.osgi.service.cm + + + org.osgi + org.osgi.service.upnp + + + org.osgi + org.osgi.service.device + + + org.osgi + org.osgi.service.event + + + org.osgi + org.osgi.service.wireadmin + + + org.osgi + org.osgi.service.provisioning + + + org.osgi + org.osgi.service.useradmin + + + org.osgi + org.osgi.service.metatype + + + org.osgi + org.osgi.service.permissionadmin + + + org.osgi + org.osgi.service.http.whiteboard + + + org.eclipse.platform + org.eclipse.equinox.http.service.api + + @@ -260,6 +351,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation @@ -276,62 +368,81 @@ - org.wso2.eclipse.equinox:org.eclipse.equinox.common - org.wso2.eclipse.equinox:org.eclipse.equinox.simpleconfigurator + org.eclipse.platform:org.eclipse.equinox.common + org.eclipse.platform:org.eclipse.equinox.simpleconfigurator org.wso2.carbon:org.wso2.carbon.osgi.security - org.wso2.eclipse.equinox:org.eclipse.equinox.ds - org.wso2.eclipse.equinox:org.eclipse.equinox.launcher - org.wso2.eclipse.equinox:org.eclipse.equinox.util - org.wso2.eclipse.osgi:org.eclipse.osgi.services + org.eclipse.platform:org.eclipse.equinox.ds + + org.eclipse.platform:org.eclipse.equinox.launcher + org.eclipse.platform:org.eclipse.equinox.util + org.eclipse.platform:org.eclipse.osgi.services org.eclipse.platform:org.eclipse.osgi - org.eclipse.equinox:org.eclipse.equinox.app - org.wso2.eclipse.equinox:org.eclipse.equinox.concurrent - org.wso2.eclipse.equinox:org.eclipse.equinox.frameworkadmin - org.wso2.eclipse.equinox:org.eclipse.equinox.frameworkadmin.equinox - org.wso2.eclipse.equinox:org.eclipse.equinox.preferences - org.wso2.eclipse.equinox:org.eclipse.equinox.registry - org.wso2.eclipse.equinox:org.eclipse.equinox.security - org.wso2.eclipse.equinox:org.eclipse.equinox.simpleconfigurator.manipulator + org.eclipse.platform:org.eclipse.equinox.app + org.eclipse.platform:org.eclipse.equinox.concurrent + org.eclipse.platform:org.eclipse.equinox.frameworkadmin + org.eclipse.platform:org.eclipse.equinox.frameworkadmin.equinox + org.eclipse.platform:org.eclipse.equinox.preferences + org.osgi:org.osgi.service.prefs + org.bouncycastle:bcutil-jdk18on + org.bouncycastle:bcprov-jdk18on + org.bouncycastle:bcpg-jdk18on + org.eclipse.platform:org.eclipse.equinox.registry + org.eclipse.platform:org.eclipse.equinox.security + org.eclipse.platform:org.eclipse.equinox.simpleconfigurator.manipulator - + org.apache.felix:org.apache.felix.scr org.eclipse.platform:org.eclipse.equinox.console org.apache.felix:org.apache.felix.gogo.command org.apache.felix:org.apache.felix.gogo.runtime org.apache.felix:org.apache.felix.gogo.shell - org.eclipse.core:org.eclipse.core.contenttype - org.eclipse.core:org.eclipse.core.expressions - org.eclipse.core:org.eclipse.core.jobs - org.eclipse.core:org.eclipse.core.runtime + org.eclipse.platform:org.eclipse.core.contenttype + org.eclipse.platform:org.eclipse.core.expressions + org.eclipse.platform:org.eclipse.core.jobs + org.eclipse.platform:org.eclipse.core.runtime org.eclipse.ecf:org.eclipse.ecf org.eclipse.ecf:org.eclipse.ecf.filetransfer org.eclipse.ecf:org.eclipse.ecf.identity org.eclipse.ecf:org.eclipse.ecf.provider.filetransfer org.eclipse:org.sat4j.core org.eclipse:org.sat4j.pb - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.artifact.repository - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.console - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.core - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.director - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.engine - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.garbagecollector - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.jarprocessor - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.metadata - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.metadata.repository - org.eclipse.equinox:org.eclipse.equinox.p2.publisher - org.eclipse.equinox:org.eclipse.equinox.p2.touchpoint.eclipse - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.touchpoint.natives - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.updatechecker - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.director.app - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.directorywatcher - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.extensionlocation - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.repository.tools - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.repository - org.wso2.eclipse.equinox:org.eclipse.equinox.p2.updatesite - org.eclipse.equinox:org.eclipse.equinox.p2.publisher.eclipse - org.wso2.eclipse.equinox:org.eclipse.equinox.launcher.gtk.linux.x86 - org.eclipse.osgi:org.eclipse.equinox.p2.transport.ecf + org.eclipse.platform:org.eclipse.equinox.p2.artifact.repository + org.tukaani:xz + org.eclipse.platform:org.eclipse.equinox.p2.console + org.eclipse.platform:org.eclipse.equinox.p2.core + org.eclipse.platform:org.eclipse.equinox.p2.director + org.eclipse.platform:org.eclipse.equinox.p2.engine + org.eclipse.platform:org.eclipse.equinox.p2.garbagecollector + org.eclipse.platform:org.eclipse.equinox.p2.jarprocessor + org.eclipse.platform:org.eclipse.equinox.p2.metadata + org.eclipse.platform:org.eclipse.equinox.p2.metadata.repository + org.eclipse.platform:org.eclipse.equinox.p2.publisher + org.eclipse.platform:org.eclipse.equinox.p2.touchpoint.eclipse + org.eclipse.platform:org.eclipse.equinox.p2.touchpoint.natives + org.eclipse.platform:org.eclipse.equinox.p2.updatechecker + org.eclipse.platform:org.eclipse.equinox.p2.director.app + org.eclipse.platform:org.eclipse.equinox.p2.directorywatcher + org.eclipse.platform:org.eclipse.equinox.p2.extensionlocation + org.eclipse.platform:org.eclipse.equinox.p2.repository.tools + org.eclipse.platform:org.eclipse.equinox.p2.repository + org.eclipse.platform:org.eclipse.equinox.p2.updatesite + org.eclipse.platform:org.eclipse.equinox.p2.publisher.eclipse + org.eclipse.platform:org.eclipse.equinox.p2.transport.ecf + org.eclipse.platform:org.eclipse.equinox.http.service.api org.eclipse.ecf.provider.filetransfer:httpclient org.wso2.eclipse.osgi:org.eclipse.osgi.compatibility.state + org.osgi:org.osgi.service.component + org.osgi:org.osgi.util.promise + org.osgi:org.osgi.util.function + org.osgi:org.osgi.service.cm + org.osgi:org.osgi.service.upnp + org.osgi:org.osgi.service.device + org.osgi:org.osgi.service.event + org.osgi:org.osgi.service.wireadmin + org.osgi:org.osgi.service.provisioning + org.osgi:org.osgi.service.useradmin + org.osgi:org.osgi.service.metatype + org.osgi:org.osgi.service.permissionadmin + org.osgi:org.osgi.service.http.whiteboard diff --git a/features/org.wso2.carbon.core.server.feature/pom.xml b/features/org.wso2.carbon.core.server.feature/pom.xml index d5addc79e14..cbec3bda17d 100644 --- a/features/org.wso2.carbon.core.server.feature/pom.xml +++ b/features/org.wso2.carbon.core.server.feature/pom.xml @@ -36,6 +36,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation @@ -76,6 +77,11 @@ org.wso2.orbit.org.apache.poi:poi-ooxml:${orbit.version.poi.ooxml} + javax.annotation:javax.annotation-api:${version.javax.annotation.annotation-api} + + com.google.guava:guava: + com.google.guava:failureaccess:1.0.1 + diff --git a/features/org.wso2.carbon.core.ui.feature/pom.xml b/features/org.wso2.carbon.core.ui.feature/pom.xml index 67c638863f5..1041e4a5d17 100644 --- a/features/org.wso2.carbon.core.ui.feature/pom.xml +++ b/features/org.wso2.carbon.core.ui.feature/pom.xml @@ -36,6 +36,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation @@ -54,6 +55,7 @@ org.eclipse.platform:org.eclipse.equinox.jsp.jasper:${version.equinox.jsp.jasper} + org.glassfish:jakarta.el:3.0.4 org.wso2.carbon:org.wso2.carbon.ui:${carbon.kernel.version} org.wso2.carbon:org.wso2.carbon.core.commons.stub:${carbon.kernel.version} org.wso2.carbon:org.wso2.carbon.ui.menu.general:${carbon.kernel.version} diff --git a/features/org.wso2.carbon.hazelcast.feature/pom.xml b/features/org.wso2.carbon.hazelcast.feature/pom.xml index c283ef84eba..66ab5b9e8b3 100644 --- a/features/org.wso2.carbon.hazelcast.feature/pom.xml +++ b/features/org.wso2.carbon.hazelcast.feature/pom.xml @@ -35,6 +35,7 @@ org.wso2.maven carbon-p2-plugin + true 4-p2-feature-generation diff --git a/parent/pom.xml b/parent/pom.xml index 02ca5342a22..cf063108d89 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -19,6 +19,8 @@ 3.0.0 + + @@ -50,7 +52,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 1.8 + 21 @@ -80,7 +82,6 @@ org.apache.maven.plugins maven-compiler-plugin - ${maven.compiler.plugin.version} org.apache.maven.plugins @@ -108,10 +109,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.12.1 UTF-8 - 1.8 - 1.8 + 21 + 21 @@ -293,6 +295,11 @@ + + org.apache.maven.plugins + maven-resources-plugin + ${maven.resources.plugin.version} + @@ -306,75 +313,73 @@ [${carbon.kernel.version}, 4.10.0) - 1.1.200.v20160504-1450 - 3.8.0.v20160509-1230 - 1.4.400.v20160226-2036 - 1.3.200.v20160318-1642 - 1.0.500.v20130404-1337 - 1.3.100.v20130327-1442 - 1.1.0.v20130327-1442 - 2.0.300.v20160504-1450 - 1.0.700.v20160102-2223 - 3.6.0.v20160120-1756 - 3.6.0.v20150318-1503 - 1.2.100.v20150423-1356 - 2.0.200.v20160504-1450 - 1.1.400.v20160518-1444 - 3.9.0.v20130326-1255 - 3.5.100.v20160504-1419 - 3.14.0 - 3.4.200.v20130326-1255 - 3.4.500.v20130515-1343 - 3.5.300.v20130429-1813 - 1.3.300 + 1.5.200 + 3.19.0 + 1.6.200 + 1.6.700 + 1.1.300 + 1.7.0 + 1.3.0 + 2.3.100 + 1.3.100 + 3.11.0 + 3.12.0 + 1.4.200 + 2.3.100 + 1.1.800 + 3.31.0 + 3.12.0 + 3.19.0 + 3.9.300 + 3.9.300 + 3.15.200 + 1.4.700 1.0.200.v20160504-1419 - 3.2.0.v20130604-1622 - 5.0.0.v20130604-1622 - 3.2.0.v20130604-1622 - 3.2.0.v20130604-1622 + 3.11.0 + 5.1.103 + 3.10.0 + 3.3.0 2.3.5.v201308161310 2.3.5.v201308161310 2.3.0.v20110329 [1.9,2.0) [1.2.0,2.0) - 1.1.400.v20130418-1354 - 1.1.0.wso2v1 - 1.1.200 + 1.8.100 + + 1.2.0 3.0.0.v201112011016 2.2.0.v201108011116 2.2.0.v201112011158 - 2.2.2.v201205150955 - - 1.1.300.v20131211-1531 - 2.3.0.v20131211-1531 - 2.3.100.v20140224-1921 - 1.0.300.v20150129-0838 - 1.1.0.v20131211-1531 - 2.3.0.v20140506-1720 - 1.0.300.v20131113-1212 + + 1.5.300 + 2.11.0 + 2.6.300 + 1.3.300 + 1.4.300 + 2.10.0 + 1.3.300 - 1.2.100.v20131119-0908 - 1.0.200.v20131115-1210 - 1.0.300.v20131211-1531 - 2.2.0.v20131211-1531 - 1.2.100.v20131209-2144 - 1.1.200.v20131119-0908 - 2.1.0.v20131211-1531 - 2.3.0.v20131211-1531 - 2.1.0.v20110511-wso2v1 - - 1.1.100.v20140523-0116 - 1.1.200.v20131119-0908 - 1.0.400.v20131211-1531 - 0.10.0.v201212101605 - 0.10.0.v201209301036 - 0.10.0.v201209301215 - 1.0.0.v20110511 - 1.2.0.v20110511 - 1.0.100.v20110902-0807 + 1.5.300 + 1.3.200 + 1.3.300 + 2.9.0 + 1.5.300 + 1.5.300 + 2.4.300 + 2.8.100 + 2.4.200 + 1.5.200 + 1.4.200 + 1.3.200 + 1.1.4 + 1.1.6 + 1.1.2 + 1.6.0 + 1.9.100 + 1.4.200 4.0.200.v20120319-0616 - 5.1.2 + 5.4.15-SNAPSHOT 1.1.13 @@ -397,9 +402,9 @@ [1.2.1, 1.3.0) - 2.0.5.wso2v3 - 2.0.5 - [2.0.5, 2.2.0) + 3.0.7.wso2v2 + 3.0.7 + 2.2.wso2v1 @@ -409,7 +414,7 @@ 1.0-wso2v2 - 1.0.0.wso2v3 + 1.0.0.wso2v4 1.0.0.wso2v3 [1.0.0.wso2v3, 2) @@ -451,7 +456,7 @@ 3.1.0.RELEASE - 1.6.1-wso2v111 + 1.6.1-wso2v116-SNAPSHOT [1.6.1, 1.7.0) ${version.axis2} ${version.axis2} @@ -482,10 +487,10 @@ 1.1.2.wso2v1 - 9.0.108 - ${version.tomcat}.wso2v1 - ${version.tomcat}.wso2v1 - ${version.tomcat}.wso2v1 + 9.0.85 + ${version.tomcat}.wso2v2 + ${version.tomcat}.wso2v2 + ${version.tomcat}.wso2v2 ${version.tomcat}.wso2v1 ${version.tomcat}.wso2v1 @@ -534,7 +539,7 @@ 1.16.0.wso2v1 0.1.0.wso2v1 3.1.0.wso2v1 - 1.6.0.wso2v1 + 1.5.0.wso2v3 1.5.0.wso2v2 1.8.wso2v1 @@ -543,7 +548,7 @@ 3.1.0.wso2v6 1.5.6.wso2v1 - 1.2.0.wso2v1 + 1.2.0.wso2v3 5.1.1.wso2v1 @@ -566,7 +571,6 @@ 1.0 1.2 1.0 - 2.2.0.v201108011116 0.3.3.wso2v1 3.3.5.wso2v1 2.1 @@ -577,12 +581,12 @@ 1.1.1 2.3.2.wso2v1 1.1.0.wso2v2 - 1.3.2 + 1.3.2 3.8.0 1.3 1.7.4 - 3.2.0 + 5.1.9 2.1.2 2.4 1.7 @@ -603,19 +607,19 @@ 2.4.1 2.11.0 - 4.4.3 - 6.10 + 4.4.16-SNAPSHOT + 7.10.1 1.5.5 - 0.8.2 - 2.22.0 - 2.22.0 - 2.23.4 - 2.0.2 + 0.8.12 + 3.3.0 + 3.3.0 + 5.3.1 + 3.3.1 - 3.1.0.wso2v4 + 3.1.0.wso2v5 [1.2.0,1.3.0) @@ -647,6 +651,7 @@ [4.3.1.wso2v2,5.0.0) + 1.82 @@ -662,193 +667,240 @@ ${version.equinox.osgi} - org.wso2.eclipse.osgi + org.eclipse.platform org.eclipse.osgi.services ${version.equinox.osgi.services} - org.wso2.eclipse.equinox + org.eclipse.platform + org.eclipse.osgi.util + 3.7.300 + + + org.apache.felix + org.apache.felix.scr + 2.2.10 + + + + org.eclipse.platform org.eclipse.equinox.common ${version.equinox.common} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.simpleconfigurator ${version.equinox.simpleconfigurator} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.util ${version.equinox.util} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.ds ${version.equinox.ds} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.launcher ${version.equinox.launcher} + + + + + + - org.wso2.eclipse.equinox - org.eclipse.equinox.launcher.gtk.linux.x86 - ${version.equinox.launcher.gtk.linux.x86} + org.eclipse.platform + org.eclipse.equinox.launcher.gtk.linux.x86_64 + 1.2.900 + - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.app ${version.equinox.app} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.concurrent ${version.equinox.concurrent} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.frameworkadmin ${version.equinox.frameworkadmin} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.frameworkadmin.equinox ${version.equinox.frameworkadmin.equinox} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.artifact.repository ${version.equinox.p2.artifact.repository} + + + org.tukaani + xz + 1.9 + - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.console ${version.equinox.p2.console} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.core ${version.equinox.p2.core} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.director ${version.equinox.p2.director} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.director.app ${version.equinox.p2.director.app} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.directorywatcher ${version.equinox.p2.directorywatcher} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.engine ${version.equinox.p2.engine} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.extensionlocation ${version.equinox.p2.extensionlocation} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.garbagecollector ${version.equinox.p2.garbagecollector} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.jarprocessor ${version.equinox.p2.jarprocessor} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata ${version.equinox.p2.metadata} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.metadata.repository ${version.equinox.p2.metadata.repository} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.reconciler.dropins ${version.equinox.p2.reconciler.dropins} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository.tools ${version.equinox.p2.repository.tools} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.repository ${version.equinox.p2.repository} - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.touchpoint.eclipse ${version.equinox.p2.touchpoint.eclipse} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.touchpoint.natives ${version.equinox.p2.touchpoint.natives} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.updatechecker ${version.equinox.p2.updatechecker} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.updatesite ${version.equinox.p2.updatesite} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.preferences ${version.equinox.preferences} - org.wso2.eclipse.equinox + org.osgi + org.osgi.service.prefs + 1.1.2 + + + + org.bouncycastle + bcpg-jdk18on + 1.82 + + + + org.bouncycastle + bcutil-jdk18on + 1.82 + + + + org.bouncycastle + bcprov-jdk18on + ${bcprov-jdk18on.version} + + + org.eclipse.platform org.eclipse.equinox.registry ${version.equinox.registry} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.security ${version.equinox.security} - org.wso2.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.simpleconfigurator.manipulator ${version.equinox.simpleconfigurator.manipulator} - org.eclipse.core + org.eclipse.platform org.eclipse.core.contenttype ${version.equinox.core.contenttype} - org.eclipse.core + org.eclipse.platform org.eclipse.core.expressions ${version.equinox.core.expressions} - org.eclipse.core + org.eclipse.platform org.eclipse.core.jobs ${version.equinox.core.jobs} - org.eclipse.core + org.eclipse.platform org.eclipse.core.runtime ${version.equinox.core.runtime} @@ -894,14 +946,19 @@ ${version.eclipse.ecj} - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.http.servlet ${version.equinox.http.servlet} + + + + + - org.eclipse.equinox - org.eclipse.equinox.http.helper - ${version.equinox.http.helper} + org.eclipse.platform + org.eclipse.equinox.http.service.api + 1.2.2 org.eclipse.platform @@ -909,27 +966,23 @@ ${version.equinox.jsp.jasper} - org.eclipse.equinox - javax.servlet.jsp - ${version.equinox.javax.servlet.jsp} - - - org.eclipse.equinox - org.apache.jasper.glassfish - ${version.equinox.jasper} + org.glassfish + jakarta.el + 3.0.4 + org.eclipse.equinox - javax.el - ${version.javax.el} + javax.servlet.jsp + ${version.equinox.javax.servlet.jsp} - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.publisher ${version.equinox.p2.publisher} - org.eclipse.equinox + org.eclipse.platform org.eclipse.equinox.p2.publisher.eclipse ${version.equinox.p2.publisher.eclipse} @@ -949,7 +1002,7 @@ ${version.apache.felix.gogo.runtime} - org.eclipse.osgi + org.eclipse.platform org.eclipse.equinox.p2.transport.ecf ${version.equinox.p2.transport.ecf} @@ -968,6 +1021,7 @@ javax.servlet ${version.equinox.javax.servlet} + org.wso2.eclipse.osgi org.eclipse.osgi.compatibility.state @@ -1021,7 +1075,7 @@ javax.annotation javax.annotation-api - ${verion.javax.annotation.annotation-api} + ${version.javax.annotation.annotation-api} org.wso2.orbit.org.apache.geronimo.specs @@ -1034,7 +1088,7 @@ ${version.geronimo.stax.api.spec} - org.apache.tiles.wso2 + org.wso2.orbit.org.apache.tiles tiles-jsp ${orbit.version.tiles} @@ -1723,16 +1777,6 @@ org.wso2.carbon.automation.test.utils ${test.framework.version} - org.wso2.carbon org.wso2.carbon.integration.test.common.integration.test.utils @@ -1770,16 +1814,6 @@ mockito-core ${mockito.version} - - org.powermock - powermock-api-mockito2 - ${powermock.version} - - - org.powermock - powermock-module-testng - ${powermock.version} - javax.xml.bind jaxb-api @@ -1882,6 +1916,72 @@ org.osgi.service.component.annotations ${version.org.osgi.service.component.annotations} + + org.osgi + org.osgi.service.component + 1.5.1 + + + org.osgi + org.osgi.util.promise + 1.3.0 + + + org.osgi + org.osgi.util.function + 1.2.0 + + + org.osgi + org.osgi.service.cm + 1.6.1 + + + org.osgi + org.osgi.service.upnp + 1.2.1 + + + org.osgi + org.osgi.service.device + 1.1.1 + + + org.osgi + org.osgi.service.event + 1.4.1 + + + org.osgi + org.osgi.service.wireadmin + 1.0.2 + + + org.osgi + org.osgi.service.provisioning + 1.2.0 + + + org.osgi + org.osgi.service.useradmin + 1.1.1 + + + org.osgi + org.osgi.service.metatype + 1.4.1 + + + org.osgi + org.osgi.service.permissionadmin + 1.2.1 + + + org.osgi + org.osgi.service.http.whiteboard + 1.1.1 + + org.osgi org.osgi.annotation @@ -1943,6 +2043,21 @@ stax-ex ${version.stax.ex} + + org.wso2.orbit.org.apache.httpcomponents + httpcore5 + ${orbit.version.httpcore5} + + + org.wso2.orbit.javax.activation + activation + 1.1.1.wso2v4 + + + javax.xml.soap + javax.xml.soap-api + 1.4.0 + diff --git a/samples/pom.xml b/samples/pom.xml index 4e25283748d..a9552fd35ae 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -26,7 +26,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 1.8 + 17 diff --git a/samples/student-manager/components/org.wso2.carbon.student.mgt.ui/pom.xml b/samples/student-manager/components/org.wso2.carbon.student.mgt.ui/pom.xml index b730bc8dce3..26a0cc57b8b 100644 --- a/samples/student-manager/components/org.wso2.carbon.student.mgt.ui/pom.xml +++ b/samples/student-manager/components/org.wso2.carbon.student.mgt.ui/pom.xml @@ -82,7 +82,6 @@ org.apache.felix maven-bundle-plugin - ${maven.bundle.plugin.version} true s diff --git a/samples/student-manager/features/org.wso2.carbon.student.mgt.feature/pom.xml b/samples/student-manager/features/org.wso2.carbon.student.mgt.feature/pom.xml index b39459e87e1..ddb493138fa 100644 --- a/samples/student-manager/features/org.wso2.carbon.student.mgt.feature/pom.xml +++ b/samples/student-manager/features/org.wso2.carbon.student.mgt.feature/pom.xml @@ -36,6 +36,7 @@ org.wso2.maven carbon-p2-plugin + true ${carbon.p2.plugin.version} @@ -53,10 +54,8 @@ - org.wso2.carbon:org.wso2.carbon.student.mgt.server.feature - - org.wso2.carbon:org.wso2.carbon.student.mgt.ui.feature - + org.wso2.carbon:org.wso2.carbon.student.mgt.server.feature:${student.manager.version} + org.wso2.carbon:org.wso2.carbon.student.mgt.ui.feature:${student.manager.version} diff --git a/samples/student-manager/features/org.wso2.carbon.student.mgt.server.feature/pom.xml b/samples/student-manager/features/org.wso2.carbon.student.mgt.server.feature/pom.xml index 48033e1d164..d351cdb48d5 100644 --- a/samples/student-manager/features/org.wso2.carbon.student.mgt.server.feature/pom.xml +++ b/samples/student-manager/features/org.wso2.carbon.student.mgt.server.feature/pom.xml @@ -27,6 +27,7 @@ org.wso2.maven carbon-p2-plugin + true ${carbon.p2.plugin.version} @@ -45,7 +46,7 @@ - org.wso2.carbon:org.wso2.carbon.student.mgt + org.wso2.carbon:org.wso2.carbon.student.mgt:${student.manager.version} diff --git a/samples/student-manager/features/org.wso2.carbon.student.mgt.ui.feature/pom.xml b/samples/student-manager/features/org.wso2.carbon.student.mgt.ui.feature/pom.xml index b09db3738e8..187a54c4370 100644 --- a/samples/student-manager/features/org.wso2.carbon.student.mgt.ui.feature/pom.xml +++ b/samples/student-manager/features/org.wso2.carbon.student.mgt.ui.feature/pom.xml @@ -25,6 +25,7 @@ org.wso2.maven carbon-p2-plugin + true ${carbon.p2.plugin.version} @@ -43,7 +44,7 @@ - org.wso2.carbon:org.wso2.carbon.student.mgt.ui + org.wso2.carbon:org.wso2.carbon.student.mgt.ui:${student.manager.version} diff --git a/samples/student-manager/features/pom.xml b/samples/student-manager/features/pom.xml index b09f13620d3..8424cdf8941 100644 --- a/samples/student-manager/features/pom.xml +++ b/samples/student-manager/features/pom.xml @@ -18,8 +18,4 @@ org.wso2.carbon.student.mgt.ui.feature org.wso2.carbon.student.mgt.feature - - - - diff --git a/samples/student-manager/pom.xml b/samples/student-manager/pom.xml index d6138882561..819a077d58b 100644 --- a/samples/student-manager/pom.xml +++ b/samples/student-manager/pom.xml @@ -16,7 +16,7 @@ 4.9.34-SNAPSHOT - 5.1.2 + 5.4.15-SNAPSHOT 2.3.5 1.6.1-wso2v29 diff --git a/samples/student-manager/repository/pom.xml b/samples/student-manager/repository/pom.xml index c30c24f5b7b..e32b74b38e5 100644 --- a/samples/student-manager/repository/pom.xml +++ b/samples/student-manager/repository/pom.xml @@ -20,6 +20,7 @@ org.wso2.maven carbon-p2-plugin ${carbon.p2.plugin.version} + true 2-p2-repo-generation diff --git a/tests/caching/pom.xml b/tests/caching/pom.xml index 5300f882ccc..e15ae108a12 100644 --- a/tests/caching/pom.xml +++ b/tests/caching/pom.xml @@ -23,8 +23,8 @@ org.apache.maven.plugins maven-compiler-plugin - 8 - 8 + 17 + 17