Skip to content

Commit 6da7236

Browse files
committed
Support for domain aliases
1 parent e1327ce commit 6da7236

File tree

6 files changed

+21
-7
lines changed

6 files changed

+21
-7
lines changed

xmlvalidator-jar/src/main/java/eu/europa/ec/itb/xml/standalone/ValidationRunner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ protected void bootstrapInternal(String[] args, File parentFolder) {
155155
contextFileInfo = processContextFiles(domainConfig, validationType, contextFileInputs, parentFolder);
156156
} catch (ValidatorException e) {
157157
LOGGER_FEEDBACK.info("\nInvalid arguments provided: {}\n", e.getMessageForDisplay(new LocalisationHelper(Locale.ENGLISH)));
158-
LOGGER.error(String.format("Invalid arguments provided: %s", e.getMessageForLog()), e);
158+
LOGGER.error("Invalid arguments provided: {}", e.getMessageForLog(), e);
159159
inputs.clear();
160160
} catch (Exception e) {
161161
LOGGER_FEEDBACK.info("\nAn error occurred while processing the provided arguments.\n");

xmlvalidator-web/src/main/java/eu/europa/ec/itb/xml/upload/UploadController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,10 @@ public UploadResult<Translations> handleUpload(@PathVariable("domain") String do
243243
var localisationHelper = new LocalisationHelper(config, localeResolver.resolveLocale(request, response, config, appConfig));
244244
var result = new UploadResult<>();
245245

246-
if (StringUtils.isBlank(validationType)) {
247-
validationType = config.getType().get(0);
246+
if (!isOwnSubmission(request)) {
247+
validationType = inputHelper.determineValidationType(validationType, domain, config);
248248
}
249+
validationType = inputHelper.validateValidationType(config, validationType);
249250
if (config.hasMultipleValidationTypes() && (validationType == null || !config.getType().contains(validationType))) {
250251
// A validation type is required.
251252
result.setMessage(localisationHelper.localise("validator.label.exception.providedValidationTypeNotValid"));

xmlvalidator-ws/src/main/java/eu/europa/ec/itb/xml/rest/RestValidationController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ public ResponseEntity<StreamingResponseBody> validate(
164164
HttpServletRequest request
165165
) {
166166
DomainConfig domainConfig = validateDomain(domain);
167+
// Consider the case that we have a cross-domain alias and resolve the validation type accordingly.
168+
in.setValidationType(inputHelper.determineValidationType(in.getValidationType(), domain, domainConfig));
167169
/*
168170
* Important: We call executeValidationProcess here and not in the return statement because the StreamingResponseBody
169171
* uses a separate thread. Doing so would break the ThreadLocal used in the statistics reporting.
@@ -306,6 +308,8 @@ public Output[] validateMultiple(
306308
var outputs = new ArrayList<Output>(inputs.length);
307309
for (Input input: inputs) {
308310
Output output = new Output();
311+
// Consider the case that we have a cross-domain alias and resolve the validation type accordingly.
312+
input.setValidationType(inputHelper.determineValidationType(input.getValidationType(), domain, domainConfig));
309313
var report = executeValidationProcess(input, domainConfig);
310314
try (var bos = new ByteArrayOutputStream()) {
311315
var wrapReportDataInCDATA = Objects.requireNonNullElse(input.getWrapReportDataInCDATA(), false);

xmlvalidator-ws/src/main/java/eu/europa/ec/itb/xml/ws/ValidationServiceConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public ServletRegistrationBean<CXFServlet> servletRegistrationBean(ApplicationCo
6767
public void publishValidationServices() {
6868
for (DomainConfig domainConfig: domainConfigCache.getAllDomainConfigurations()) {
6969
if (domainConfig.getChannels().contains(ValidatorChannel.SOAP_API)) {
70-
EndpointImpl endpoint = new EndpointImpl(cxfBus, applicationContext.getBean(ValidationServiceImpl.class, domainConfig));
70+
DomainConfig resolvedDomainConfig = domainConfigCache.getConfigForDomainName(domainConfig.getDomainName());
71+
EndpointImpl endpoint = new EndpointImpl(cxfBus, applicationContext.getBean(ValidationServiceImpl.class, resolvedDomainConfig, domainConfig));
7172
endpoint.setEndpointName(new QName("http://www.gitb.com/vs/v1/", "ValidationServicePort"));
7273
endpoint.setServiceName(new QName("http://www.gitb.com/vs/v1/", "ValidationService"));
7374
if (StringUtils.isNotBlank(config.getBaseSoapEndpointUrl())) {

xmlvalidator-ws/src/main/java/eu/europa/ec/itb/xml/ws/ValidationServiceImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class ValidationServiceImpl implements com.gitb.vs.ValidationService, Web
6363

6464
private static final Logger logger = LoggerFactory.getLogger(ValidationServiceImpl.class);
6565
private final DomainConfig domainConfig;
66+
private final DomainConfig requestedDomainConfig;
6667

6768
@Autowired
6869
InputHelper inputHelper;
@@ -73,8 +74,15 @@ public class ValidationServiceImpl implements com.gitb.vs.ValidationService, Web
7374
@Resource
7475
WebServiceContext wsContext;
7576

76-
public ValidationServiceImpl(DomainConfig domainConfig) {
77+
/**
78+
* Constructor.
79+
*
80+
* @param domainConfig The domain configuration (each domain has its own instance).
81+
* @param requestedDomainConfig The resolved domain configuration (in case of aliases).
82+
*/
83+
public ValidationServiceImpl(DomainConfig domainConfig, DomainConfig requestedDomainConfig) {
7784
this.domainConfig = domainConfig;
85+
this.requestedDomainConfig = requestedDomainConfig;
7886
}
7987

8088
@Override
@@ -119,7 +127,7 @@ public ValidationResponse validate(@WebParam(name = "ValidateRequest", targetNam
119127
boolean addInputToReport = getInputAsBoolean(validateRequest, ValidationConstants.INPUT_ADD_INPUT_TO_REPORT, true);
120128
boolean showLocationPaths = getInputAsBoolean(validateRequest, ValidationConstants.INPUT_SHOW_LOCATION_PATHS, domainConfig.isIncludeLocationPath());
121129
File contentToValidate = inputHelper.validateContentToValidate(validateRequest, ValidationConstants.INPUT_XML, contentEmbeddingMethod, null, tempFolderPath, domainConfig.getHttpVersion()).getFile();
122-
String validationType = inputHelper.validateValidationType(domainConfig, validateRequest, ValidationConstants.INPUT_TYPE);
130+
String validationType = inputHelper.validateValidationType(requestedDomainConfig.getDomainName(), domainConfig, validateRequest, ValidationConstants.INPUT_TYPE);
123131
List<FileInfo> externalSchemas = inputHelper.validateExternalArtifacts(domainConfig, validateRequest, ValidationConstants.INPUT_EXTERNAL_SCHEMA, ValidationConstants.INPUT_EXTERNAL_ARTIFACT_CONTENT, ValidationConstants.INPUT_EMBEDDING_METHOD, validationType, DomainConfig.ARTIFACT_TYPE_SCHEMA, tempFolderPath);
124132
List<FileInfo> externalSchematron = inputHelper.validateExternalArtifacts(domainConfig, validateRequest, ValidationConstants.INPUT_EXTERNAL_SCHEMATRON, ValidationConstants.INPUT_EXTERNAL_ARTIFACT_CONTENT, ValidationConstants.INPUT_EMBEDDING_METHOD, validationType, DomainConfig.ARTIFACT_TYPE_SCHEMATRON, tempFolderPath);
125133
List<ContextFileData> contextFiles = getContextFiles(domainConfig, validateRequest, validationType, tempFolderPath);

xmlvalidator-ws/src/test/java/eu/europa/ec/itb/xml/ws/ValidationServiceImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void testGetModuleDefinition() {
4747
descriptionEntryOf(ValidationConstants.INPUT_EXTERNAL_SCHEMATRON),
4848
descriptionEntryOf(ValidationConstants.INPUT_LOCALE)
4949
)).when(domainConfig).getWebServiceDescription();
50-
var service = new ValidationServiceImpl(domainConfig);
50+
var service = new ValidationServiceImpl(domainConfig, domainConfig);
5151
service.inputHelper = inputHelper;
5252
var result = service.getModuleDefinition(new Void());
5353
assertNotNull(result);

0 commit comments

Comments
 (0)