bug6060: renamed com.sap.sse.debranding to branding; moved logic into an OSGi service

This commit is contained in:
Axel Uhl committed 2025-08-04 18:41:31 +02:00
1 parent 2db94e68c6
commit 025ff4a9da
34 files changed
+156 -84

No files matched your search

@@ -11,7 +11,7 @@ Require-Bundle: com.sap.sailing.domain,
com.google.gwt.user;bundle-version="2.10.0";resolution:=optional,
com.google.gwt.servlet;bundle-version="2.10.0",
com.sap.sse.common,
com.sap.sse.debranding,
com.sap.sse.branding,
com.sap.sailing.domain.common,
com.sap.sailing.domain.shared.android,
com.sap.sailing.gwt.ui,
@@ -5,7 +5,7 @@
version="3.1">
<listener>
<listener-class>com.sap.sse.debranding.ClientConfigurationListener</listener-class>
<listener-class>com.sap.sse.branding.ClientConfigurationListener</listener-class>
</listener>
<servlet>
<servlet-name>default</servlet-name>
@@ -10,7 +10,7 @@ public interface SailingServerConfiguration extends Serializable {
void setStandaloneServer(boolean isStandaloneServer);
Boolean getDebrandingActive();
Boolean isDebrandingActive();
void setDebrandingActive(Boolean debrandingActive);
}
@@ -31,7 +31,7 @@ public class SailingServerConfigurationImpl implements SailingServerConfiguratio
this.isStandaloneServer = isStandaloneServer;
}
public Boolean getDebrandingActive() {
public Boolean isDebrandingActive() {
return debrandingActive;
}
@@ -56,7 +56,7 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sse.datamining.annotations,
com.sap.sse.shared.android,
com.sap.sailing.competitorimport,
com.sap.sse.debranding,
com.sap.sse.branding,
com.sap.sailing.expeditionconnector,
com.sap.sailing.expeditionconnector.common,
org.mp4parser.isoparser;bundle-version="1.9.37",
+1 -1
View File
@@ -68,7 +68,7 @@
<url-pattern>*.html</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.sap.sse.debranding.ClientConfigurationListener</listener-class>
<listener-class>com.sap.sse.branding.ClientConfigurationListener</listener-class>
</listener>
<filter>
<filter-name>SameSiteFilter</filter-name>
@@ -229,15 +229,8 @@ public class LocalServerManagementPanel extends SimplePanel {
: null;
final Boolean debrandingActive = debrandingCheckbox.getValue();
final ServerConfigurationDTO serverConfig = new ServerConfigurationDTO(
isStandaloneServerCheckbox.getValue(),
publicServer,
selfServiceServer,
null
);
serverConfig.setDebrandingActive(debrandingActive);
final ServerConfigurationDTO serverConfig = new ServerConfigurationDTO(isStandaloneServerCheckbox.getValue(),
publicServer, selfServiceServer, null, debrandingActive);
isSelfServiceServerCheckbox.getElement().setAttribute("updating", "true");
sailingService.updateServerConfiguration(serverConfig, new AsyncCallback<Void>() {
@Override
@@ -302,7 +295,6 @@ public class LocalServerManagementPanel extends SimplePanel {
isStandaloneServerCheckbox.setEnabled(true);
isPublicServerCheckbox.setValue(result.isPublic(), false);
isSelfServiceServerCheckbox.setValue(result.isSelfService(), false);
if (result.getDebrandingActive() != null) {
debrandingCheckbox.setValue(result.getDebrandingActive(), false);
}
@@ -78,6 +78,7 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.aiagent.interfaces.AIAgent;
import com.sap.sailing.competitorimport.CompetitorProvider;
import com.sap.sailing.domain.abstractlog.AbstractLog;
@@ -538,7 +539,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
private static final long serialVersionUID = 9031688830194537489L;
private final FullyInitializedReplicableTracker<RacingEventService> racingEventServiceTracker;
private final ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker;
private final ServiceTracker<ScoreCorrectionProvider, ScoreCorrectionProvider> scoreCorrectionProviderServiceTracker;
@@ -3536,16 +3537,12 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
UserGroup serverTenant = getSecurityService().getServerGroup();
StrippedUserGroupDTO serverTenantDTO = new SecurityDTOFactory()
.createStrippedUserGroupDTOFromUserGroup(serverTenant, new HashMap<>());
ServerConfigurationDTO result = new ServerConfigurationDTO(
sailingServerConfiguration.isStandaloneServer(),
isPublicServer(),
isSelfServiceServer(),
serverTenantDTO
serverTenantDTO, sailingServerConfiguration.isDebrandingActive()
);
result.setDebrandingActive(sailingServerConfiguration.getDebrandingActive());
return result;
}
@@ -4035,29 +4035,23 @@ public class SailingServiceWriteImpl extends SailingServiceImpl implements Saili
@Override
public void updateServerConfiguration(ServerConfigurationDTO serverConfiguration) {
getSecurityService().checkCurrentUserServerPermission(ServerActions.CONFIGURE_LOCAL_SERVER);
getService().apply(new UpdateServerConfiguration(
new SailingServerConfigurationImpl(
serverConfiguration.isStandaloneServer(),
serverConfiguration.getDebrandingActive()
)));
if (serverConfiguration.isSelfService() != null) {
final boolean isCurrentlySelfService = isSelfServiceServer();
final boolean shouldBeSelfService = serverConfiguration.isSelfService();
if (isCurrentlySelfService != shouldBeSelfService) {
SecurityUtils.getSubject().checkPermission(getServerInfo().getIdentifier()
.getStringPermission(DefaultActions.CHANGE_ACL));
SecurityUtils.getSubject().checkPermission(getServerInfo().getIdentifier().getStringPermission(DefaultActions.CHANGE_ACL));
if (shouldBeSelfService) {
getSecurityService().addToAccessControlList(
getServerInfo().getIdentifier(), null, ServerActions.CREATE_OBJECT.name());
getSecurityService().addToAccessControlList(getServerInfo().getIdentifier(), null, ServerActions.CREATE_OBJECT.name());
} else {
getSecurityService().removeFromAccessControlList(
getServerInfo().getIdentifier(), null, ServerActions.CREATE_OBJECT.name());
getSecurityService().removeFromAccessControlList(getServerInfo().getIdentifier(), null, ServerActions.CREATE_OBJECT.name());
}
}
}
if (serverConfiguration.isPublic() != null) {
final RoleDefinition viewerRole = getSecurityService()
.getRoleDefinition(SailingViewerRole.getInstance().getId());
@@ -4082,17 +4076,6 @@ public class SailingServiceWriteImpl extends SailingServiceImpl implements Saili
throw new IllegalArgumentException("Viewer role or default server tenant does not exist");
}
}
if (serverConfiguration.getDebrandingActive() != null) {
String debrandingFlag = String.valueOf(serverConfiguration.getDebrandingActive());
System.setProperty("com.sap.sse.debranding", debrandingFlag);
// Only try setting servlet context if available (typical for Jetty/Tomcat)
if (getServletContext() != null) {
getServletContext().setAttribute(
"clientConfigurationContext.debrandingActive", debrandingFlag);
}
}
}
@Override
@@ -10,7 +10,6 @@ public class ServerConfigurationDTO implements IsSerializable {
private StrippedUserGroupDTO serverDefaultTenant;
private Boolean debrandingActive;
// for GWT
ServerConfigurationDTO() {
}
@@ -19,11 +18,12 @@ public class ServerConfigurationDTO implements IsSerializable {
* serverDefaultTenant is only for transfer to client, it is not used in the server configuration update
*/
public ServerConfigurationDTO(boolean isStandaloneServer, Boolean isPublic, Boolean isSelfService,
StrippedUserGroupDTO serverDefaultTenant) {
StrippedUserGroupDTO serverDefaultTenant, Boolean debrandingActive) {
this.isStandaloneServer = isStandaloneServer;
this.isPublic = isPublic;
this.isSelfService = isSelfService;
this.serverDefaultTenant = serverDefaultTenant;
this.debrandingActive = debrandingActive;
}
public StrippedUserGroupDTO getServerDefaultTenant() {
@@ -41,12 +41,8 @@ public class ServerConfigurationDTO implements IsSerializable {
public Boolean isSelfService() {
return isSelfService;
}
public Boolean getDebrandingActive() {
return debrandingActive;
}
public void setDebrandingActive(Boolean debrandingActive) {
this.debrandingActive = debrandingActive;
}
}
@@ -32,7 +32,7 @@ Export-Package: com.sap.sailing.landscape,
com.sap.sailing.landscape.procedures
Bundle-ActivationPolicy: lazy
Import-Package: com.sap.sailing.server.security,
com.sap.sse.debranding,
com.sap.sse.branding,
org.osgi.framework,
org.osgi.util.tracker;version="1.5.2"
Bundle-Activator: com.sap.sailing.landscape.impl.Activator
@@ -11,8 +11,8 @@ import com.sap.sailing.landscape.SailingAnalyticsMetrics;
import com.sap.sailing.landscape.SailingAnalyticsProcess;
import com.sap.sailing.landscape.SailingReleaseRepository;
import com.sap.sailing.landscape.common.SharedLandscapeConstants;
import com.sap.sse.branding.BrandingConfigurationService;
import com.sap.sse.common.Util;
import com.sap.sse.debranding.ClientConfigurationListener;
import com.sap.sse.landscape.DefaultProcessConfigurationVariables;
import com.sap.sse.landscape.ProcessConfigurationVariable;
import com.sap.sse.landscape.Release;
@@ -202,7 +202,7 @@ extends AwsApplicationConfiguration<ShardingKey, SailingAnalyticsMetrics, Sailin
final List<String> result = new ArrayList<>();
Util.addAll(getAdditionalJavaArgsForSharedSecurity(SharedLandscapeConstants.DEFAULT_DOMAIN_NAME, SharedLandscapeConstants.DEFAULT_SECURITY_SERVICE_REPLICA_SET_NAME), result);
// TODO check whether we're really running under the default sapsailing.com domain, before activating SAP branding...
result.add("-D"+ClientConfigurationListener.DEBRANDING_PROPERTY_NAME+"=false"); // activate branding when running under default SAP domain
result.add("-D"+BrandingConfigurationService.DEBRANDING_PROPERTY_NAME+"=false"); // activate branding when running under default SAP domain
return result;
}
@@ -10,7 +10,8 @@ import javax.servlet.http.HttpServletResponse;
/**
* Use this servlet to turn whitelabelling on and off during testing.
* @see com.sap.sse.debranding.ClientConfigurationFilter
*
* @see com.sap.sse.branding.ClientConfigurationFilter
* @author Georg Herdt
*
*/
@@ -7,6 +7,7 @@ Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Fragment-Host: com.sap.sse.replication
Import-Package: com.rabbitmq.client;version="2.8.4",
com.sap.sse.branding,
org.apache.commons.math;version="2.1.0"
Require-Bundle: com.sap.sailing.server,
com.sap.sailing.server.interface,
@@ -70,7 +70,7 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat
/* trackedRaceStatisticsCache */ null, /* restoreTrackedRaces */ false,
/* security service tracker */ null, /* sharedSailingData */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
}
@Override
@@ -92,7 +92,7 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat
/* sailingNotificationService */ null, /* trackedRaceStatisticsCache */ null,
/* restoreTrackedRaces */ false, /* security service tracker */ null, /* sharedSailingData */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
}
}
}
@@ -107,7 +107,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest {
/* restoreTrackedRaces */ false, /* security service tracker */ securityServiceTrackerMock,
/* sharedSailingData */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
result.getMasterDataClassLoaders().addClassLoader(this.getClass().getClassLoader());
return result;
}
@@ -124,7 +124,7 @@ public class AutomaticRetrackUponCompetitorSetChangeTest {
}
}, /* sharedSailingData */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
final Regatta regatta = service.createRegatta("Test regatta", "J/70",
/* canBoatsOfCompetitorsChangePerRace==true because it's a league race we're using for this test */ true,
CompetitorRegistrationType.CLOSED, /* registrationLinkSecret */ null,
@@ -9,6 +9,7 @@ Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.sap.sailing.server.gateway.deserialization,
com.sap.sailing.server.gateway.interfaces,
com.sap.sse.branding,
javax.mail;version="1.4.0",
javax.mail.internet;version="1.4.0",
javax.mail.util;version="1.4.0",
@@ -343,7 +343,6 @@
<setEntry value="com.sap.sse.datamining.shared@default:default"/>
<setEntry value="com.sap.sse.datamining.ui@default:default"/>
<setEntry value="com.sap.sse.datamining@default:default"/>
<setEntry value="com.sap.sse.debranding@default:default"/>
<setEntry value="com.sap.sse.filestorage@4:true"/>
<setEntry value="com.sap.sse.gwt.adminconsole@default:default"/>
<setEntry value="com.sap.sse.gwt@default:default"/>
@@ -62,6 +62,7 @@ import com.sap.sailing.server.security.SailingViewerRole;
import com.sap.sailing.server.statistics.TrackedRaceStatisticsCache;
import com.sap.sailing.server.statistics.TrackedRaceStatisticsCacheImpl;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.branding.BrandingConfigurationService;
import com.sap.sse.classloading.ServiceTrackerCustomizerForClassLoaderSupplierRegistrations;
import com.sap.sse.common.TypeBasedServiceFinder;
import com.sap.sse.common.Util;
@@ -289,10 +290,13 @@ public class Activator implements BundleActivator {
ServiceTrackerFactory.createAndOpen(context, CompetitorProvider.class);
ServiceTracker<ResultUrlRegistry, ResultUrlRegistry> resultUrlRegistryServiceTracker = ServiceTrackerFactory
.createAndOpen(context, ResultUrlRegistry.class);
ServiceTracker<BrandingConfigurationService, BrandingConfigurationService> brandingConfigurationServiceTracker = ServiceTrackerFactory
.createAndOpen(context, BrandingConfigurationService.class);
racingEventService = new RacingEventServiceImpl(clearPersistentCompetitors,
/* sensorFixStore */ null, serviceFinderFactory, trackedRegattaListener,
notificationService, trackedRaceStatisticsCache, restoreTrackedRaces, securityServiceTracker,
sharedSailingDataTracker, replicationServiceTracker, scoreCorrectionProviderServiceTracker, competitorProviderServiceTracker, resultUrlRegistryServiceTracker);
sharedSailingDataTracker, replicationServiceTracker, scoreCorrectionProviderServiceTracker, competitorProviderServiceTracker,
resultUrlRegistryServiceTracker, brandingConfigurationServiceTracker);
notificationService.setRacingEventService(racingEventService);
// start watching out for MasterDataImportClassLoaderService instances in the OSGi service registry and manage
// the combined class loader accordingly:
@@ -331,6 +331,7 @@ import com.sap.sailing.server.tagging.TaggingServiceFactory;
import com.sap.sailing.server.util.EventUtil;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.ServerInfo;
import com.sap.sse.branding.BrandingConfigurationService;
import com.sap.sse.common.Bearing;
import com.sap.sse.common.Distance;
import com.sap.sse.common.Duration;
@@ -614,6 +615,8 @@ Replicator {
private final FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
private final CourseAndMarkConfigurationFactory courseAndMarkConfigurationFactory;
private final ServiceTracker<BrandingConfigurationService, BrandingConfigurationService> brandingConfigurationServiceTracker;
/**
* Providing the constructor parameters for a new {@link RacingEventServiceImpl} instance is a bit tricky
@@ -659,7 +662,8 @@ Replicator {
/* sailingNotificationService */ null, /* trackedRaceStatisticsCache */ null,
restoreTrackedRaces, /* securityServiceTracker */ null, /* sharedSailingDataTracker */ null,
/* replicationServiceTracker */ null, /* scoreCorrectionProviderServiceTracker */ null,
/* competitorProviderServiceTracker */ null, /* resultUrlRegistryServiceTracker */ null);
/* competitorProviderServiceTracker */ null, /* resultUrlRegistryServiceTracker */ null,
/* brandingConfigurationServiceTracker */ null);
}
/**
@@ -688,7 +692,10 @@ Replicator {
boolean restoreTrackedRaces,
FullyInitializedReplicableTracker<SecurityService> securityServiceTracker, FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker,
ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker,
ServiceTracker<ScoreCorrectionProvider, ScoreCorrectionProvider> scoreCorrectionProviderServiceTracker, ServiceTracker<CompetitorProvider, CompetitorProvider> competitorProviderServiceTracker, ServiceTracker<ResultUrlRegistry, ResultUrlRegistry> resultUrlRegistryServiceTracker) {
ServiceTracker<ScoreCorrectionProvider, ScoreCorrectionProvider> scoreCorrectionProviderServiceTracker,
ServiceTracker<CompetitorProvider, CompetitorProvider> competitorProviderServiceTracker,
ServiceTracker<ResultUrlRegistry, ResultUrlRegistry> resultUrlRegistryServiceTracker,
ServiceTracker<BrandingConfigurationService, BrandingConfigurationService> brandingConfigurationServiceTracker) {
this((final RaceLogAndTrackedRaceResolver raceLogResolver) -> {
return new ConstructorParameters() {
private final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE
@@ -720,7 +727,7 @@ Replicator {
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), null, sensorFixStore, serviceFinderFactory, trackedRegattaListener,
sailingNotificationService, trackedRaceStatisticsCache, restoreTrackedRaces,
securityServiceTracker, sharedSailingDataTracker, /* replicationServiceTracker */ null,
scoreCorrectionProviderServiceTracker, competitorProviderServiceTracker, resultUrlRegistryServiceTracker);
scoreCorrectionProviderServiceTracker, competitorProviderServiceTracker, resultUrlRegistryServiceTracker, brandingConfigurationServiceTracker);
}
private RacingEventServiceImpl(final boolean clearPersistentCompetitorStore, WindStore windStore,
@@ -758,9 +765,9 @@ Replicator {
sailingNotificationService, /* trackedRaceStatisticsCache */ null, restoreTrackedRaces,
/* security service tracker */ null, /* sharedSailingDataTracker */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
}
public RacingEventServiceImpl(final DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory,
MediaDB mediaDB, WindStore windStore, SensorFixStore sensorFixStore, boolean restoreTrackedRaces) {
this((final RaceLogAndTrackedRaceResolver raceLogResolver) -> {
@@ -790,7 +797,7 @@ Replicator {
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces, /* security service tracker */ null,
/* sharedSailingDataTracker */ null, /* replicationServiceTracker */ null,
/* scoreCorrectionProviderServiceTracker */ null, /* competitorProviderServiceTracker */ null,
/* resultUrlRegistryServiceTracker */ null);
/* resultUrlRegistryServiceTracker */ null, /* brandingConfigurationServiceTracker */ null);
}
/**
@@ -831,13 +838,15 @@ Replicator {
ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker,
ServiceTracker<ScoreCorrectionProvider, ScoreCorrectionProvider> scoreCorrectionProviderServiceTracker,
ServiceTracker<CompetitorProvider, CompetitorProvider> competitorProviderServiceTracker,
ServiceTracker<ResultUrlRegistry, ResultUrlRegistry> resultUrlRegistryServiceTracker) {
ServiceTracker<ResultUrlRegistry, ResultUrlRegistry> resultUrlRegistryServiceTracker,
ServiceTracker<BrandingConfigurationService, BrandingConfigurationService> brandingConfigurationServiceTracker) {
logger.info("Created " + this);
this.securityServiceTracker = securityServiceTracker;
this.numberOfTrackedRacesRestored = new AtomicInteger();
this.numberOfTrackedRacesRestoredDoneLoading = new AtomicInteger();
this.numberOfTrackedRacesStillLoading = new AtomicInteger();
this.resultUrlRegistryServiceTracker = resultUrlRegistryServiceTracker;
this.brandingConfigurationServiceTracker = brandingConfigurationServiceTracker;
this.scoreCorrectionProviderServiceTracker = scoreCorrectionProviderServiceTracker;
this.competitorProviderServiceTracker = competitorProviderServiceTracker;
this.scoreCorrectionListenersByLeaderboard = new ConcurrentHashMap<>();
@@ -1724,9 +1733,18 @@ Replicator {
@Override
public void updateServerConfiguration(SailingServerConfiguration serverConfiguration) {
this.sailingServerConfiguration = serverConfiguration;
final BrandingConfigurationService brandingConfigurationService = getBrandingConfigurationService();
if (brandingConfigurationService != null) {
// update the branding configuration service with the new server configuration
brandingConfigurationService.setBrandingActive(serverConfiguration.isDebrandingActive());
}
mongoObjectFactory.storeServerConfiguration(serverConfiguration);
}
private BrandingConfigurationService getBrandingConfigurationService() {
return brandingConfigurationServiceTracker.getService();
}
@Override
public Map<RemoteSailingServerReference, com.sap.sse.common.Util.Pair<Iterable<EventBase>, Exception>> getPublicEventsOfAllSailingServers() {
return remoteSailingServerSet.getCachedEventsForRemoteSailingServers();
@@ -13,7 +13,7 @@ Import-Package: com.sap.sse.rest,
Bundle-ClassPath: .
Export-Package: com.sap.sailing.www
Bundle-ActivationPolicy: lazy
Require-Bundle: com.sap.sse.debranding,
Require-Bundle: com.sap.sse.branding,
com.sap.sse.security,
org.apache.shiro.core;bundle-version="1.2.2",
org.apache.shiro.web;bundle-version="1.2.2",
+1 -1
View File
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<listener>
<listener-class>com.sap.sse.debranding.ClientConfigurationListener</listener-class>
<listener-class>com.sap.sse.branding.ClientConfigurationListener</listener-class>
</listener>
<servlet>
<servlet-name>default</servlet-name>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.sap.sse.debranding</name>
<name>com.sap.sse.branding</name>
<comment></comment>
<projects>
</projects>
@@ -1,16 +1,17 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: debranding
Bundle-SymbolicName: com.sap.sse.debranding
Automatic-Module-Name: com.sap.sse.debranding
Bundle-SymbolicName: com.sap.sse.branding
Automatic-Module-Name: com.sap.sse.branding
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.servlet;version="3.1.0",
javax.servlet.http;version="3.1.0",
javax.ws.rs.core;version="1.1.1",
org.apache.http
org.apache.http,
org.osgi.framework;version="[1.10.0,2.0.0)"
Bundle-ClassPath: .
Bundle-ActivationPolicy: lazy
Require-Bundle: org.apache.commons.io
Export-Package: com.sap.sse.debranding
Export-Package: com.sap.sse.branding
+1 -3
View File
@@ -3,13 +3,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>root</artifactId>
<groupId>com.sap.sailing</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>com.sap.sse.debranding</artifactId>
<artifactId>com.sap.sse.branding</artifactId>
<packaging>eclipse-plugin</packaging>
</project>
@@ -0,0 +1,12 @@
package com.sap.sse.branding;
public interface BrandingConfigurationService {
String DEBRANDING_PROPERTY_NAME = "com.sap.sse.debranding";
boolean isBrandingActive();
String getDefaultBrandingLogoURL();
String getGreyTransparentLogoURL();
void setBrandingActive(boolean brandingActive);
void setDefaultBrandingLogoURL(String defaultBrandingLogoURL);
void setGreyTransparentLogoURL(String greyTransparentLogoURL);
}
@@ -1,4 +1,4 @@
package com.sap.sse.debranding;
package com.sap.sse.branding;
import java.util.HashMap;
import java.util.Map;
@@ -6,6 +6,8 @@ import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
import com.sap.sse.branding.impl.Activator;
/**
* JSP servlet is registered on *.html within web.xml . Use the following JSP expression
* <pre>applicationScope['clientConfigurationContext.variableName']}</pre> to get strings replaced within the page. The
@@ -51,8 +53,6 @@ import javax.servlet.http.HttpServletRequest;
*
*/
public class ClientConfigurationListener implements javax.servlet.ServletRequestListener {
public static final String DEBRANDING_PROPERTY_NAME = "com.sap.sse.debranding";
@Override
public void requestInitialized(ServletRequestEvent sre) {
if (sre.getServletRequest().getScheme().startsWith("http")) {
@@ -61,7 +61,8 @@ public class ClientConfigurationListener implements javax.servlet.ServletRequest
final ServletContext ctx = sre.getServletContext();
final String ctxDebrandingActive = (String) ctx
.getAttribute("clientConfigurationContext.debrandingActive");
final boolean deBrandingActive = Boolean.valueOf(System.getProperty(DEBRANDING_PROPERTY_NAME, "true"));
final BrandingConfigurationService brandingConfigurationService = Activator.getDefaultBrandingConfigurationService();
final boolean deBrandingActive = brandingConfigurationService.isBrandingActive();
if (ctxDebrandingActive == null
|| !Boolean.toString(deBrandingActive).equalsIgnoreCase(ctxDebrandingActive)) {
createReplacementMap(deBrandingActive).forEach((k, v) -> {
@@ -0,0 +1,26 @@
package com.sap.sse.branding.impl;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import com.sap.sse.branding.BrandingConfigurationService;
public class Activator implements BundleActivator {
private static BrandingConfigurationService defaultBrandingConfigurationService;
public static BrandingConfigurationService getDefaultBrandingConfigurationService() {
return defaultBrandingConfigurationService;
}
@Override
public void start(BundleContext context) throws Exception {
defaultBrandingConfigurationService = new BrandingConfigurationServiceImpl();
final boolean debrandingActive = Boolean.valueOf(System.getProperty(BrandingConfigurationService.DEBRANDING_PROPERTY_NAME, "true"));
defaultBrandingConfigurationService.setBrandingActive(!debrandingActive);
context.registerService(BrandingConfigurationService.class.getName(), defaultBrandingConfigurationService, null);
}
@Override
public void stop(BundleContext context) throws Exception {
}
}
@@ -0,0 +1,42 @@
package com.sap.sse.branding.impl;
import com.sap.sse.branding.BrandingConfigurationService;
public class BrandingConfigurationServiceImpl implements BrandingConfigurationService {
private boolean brandingActive;
private String defaultBrandingLogoURL;
private String greyTransparentLogoURL;
public BrandingConfigurationServiceImpl() {
}
@Override
public boolean isBrandingActive() {
return brandingActive;
}
@Override
public void setBrandingActive(boolean brandingActive) {
this.brandingActive = brandingActive;
}
@Override
public String getDefaultBrandingLogoURL() {
return defaultBrandingLogoURL;
}
@Override
public void setDefaultBrandingLogoURL(String defaultBrandingLogoURL) {
this.defaultBrandingLogoURL = defaultBrandingLogoURL;
}
@Override
public String getGreyTransparentLogoURL() {
return greyTransparentLogoURL;
}
@Override
public void setGreyTransparentLogoURL(String greyTransparentLogoURL) {
this.greyTransparentLogoURL = greyTransparentLogoURL;
}
}
+1 -1
View File
@@ -262,7 +262,7 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al
unpack="false"/>
<plugin
id="com.sap.sse.debranding"
id="com.sap.sse.branding"
download-size="0"
install-size="0"
version="0.0.0"
@@ -24,7 +24,7 @@ Require-Bundle: org.eclipse.jetty.osgi-servlet-api;bundle-version="3.1.0",
org.apache.shiro.core;bundle-version="1.2.2",
org.apache.shiro.web;bundle-version="1.2.2",
com.chargebee.chargebee-java;bundle-version="2.9.0",
com.sap.sse.debranding,
com.sap.sse.branding,
com.sap.sse.replication,
com.sap.sse.security.common,
com.sap.sse.mail
+1 -1
View File
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<listener>
<listener-class>com.sap.sse.debranding.ClientConfigurationListener</listener-class>
<listener-class>com.sap.sse.branding.ClientConfigurationListener</listener-class>
</listener>
<!-- Disable directory listing: -->
<servlet>
+1 -1
View File
@@ -214,7 +214,7 @@
<module>com.sap.sailing.server.trackfiles</module>
<module>com.sap.sailing.feature.runtime</module>
<module>com.sap.sailing.gwt.ui</module>
<module>com.sap.sse.debranding</module>
<module>com.sap.sse.branding</module>
<module>com.sap.sailing.domain.test</module>
<module>com.sap.sse.replication.testsupport</module>
<module>com.sap.sailing.server.testsupport</module>