Merge branch 'master' into fix-jakarta-migration

# Conflicts:
#	repository/src/main/java/org/alfresco/repo/config/source/RepoUrlConfigSource.java
This commit is contained in:
pzurek
2023-06-16 15:36:48 +02:00
29 changed files with 346 additions and 187 deletions

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-automation-community-repo</artifactId> <artifactId>alfresco-governance-services-automation-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-parent</artifactId> <artifactId>alfresco-governance-services-community-parent</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-governance-services-community-repo-parent</artifactId> <artifactId>alfresco-governance-services-community-repo-parent</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<build> <build>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-amps</artifactId> <artifactId>alfresco-community-repo-amps</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -9,6 +9,6 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
</project> </project>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<modules> <modules>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<organization> <organization>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>

View File

@@ -8,7 +8,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -0,0 +1,190 @@
package org.alfresco.rest.search;
import java.util.List;
import java.util.Objects;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Generated by 'krystian' on '2023-06-12 18:46' from 'Alfresco Content Services REST API' swagger file
* Generated from 'Alfresco Content Services REST API' swagger file
* Base Path {@linkplain /alfresco/api/-default-/public/search/versions/1}
*/
public class RestRequestDefaultsModel extends TestModel implements IRestModel<RestRequestDefaultsModel>
{
@JsonProperty(value = "entry")
RestRequestDefaultsModel model;
@Override
public RestRequestDefaultsModel onModel()
{
return model;
}
/**
A list of query fields/properties used to expand TEXT: queries.
The default is cm:content.
You could include all content properties using d:content or list all individual content properties or types.
As more terms are included the query size, complexity, memory impact and query time will increase.
*/
private List<String> textAttributes;
/**
The default way to combine query parts when AND or OR is not explicitly stated - includes ! - +
one two three
(one two three)
*/
private String defaultFTSOperator;
/**
The default way to combine query parts in field query groups when AND or OR is not explicitly stated - includes ! - +
FIELD:(one two three)
*/
private String defaultFTSFieldOperator;
/**
The default name space to use if one is not provided
*/
private String namespace;
private String defaultFieldName;
public List<String> getTextAttributes()
{
return this.textAttributes;
}
public void setTextAttributes(List<String> textAttributes)
{
this.textAttributes = textAttributes;
}
public String getDefaultFTSOperator()
{
return this.defaultFTSOperator;
}
public void setDefaultFTSOperator(String defaultFTSOperator)
{
this.defaultFTSOperator = defaultFTSOperator;
}
public String getDefaultFTSFieldOperator()
{
return this.defaultFTSFieldOperator;
}
public void setDefaultFTSFieldOperator(String defaultFTSFieldOperator)
{
this.defaultFTSFieldOperator = defaultFTSFieldOperator;
}
public String getNamespace()
{
return this.namespace;
}
public void setNamespace(String namespace)
{
this.namespace = namespace;
}
public String getDefaultFieldName()
{
return this.defaultFieldName;
}
public void setDefaultFieldName(String defaultFieldName)
{
this.defaultFieldName = defaultFieldName;
}
@Override
public String toString()
{
return "RestRequestDefaultsModel{" + "textAttributes=" + textAttributes + ", defaultFTSOperator='" + defaultFTSOperator + '\'' + ", defaultFTSFieldOperator='"
+ defaultFTSFieldOperator + '\'' + ", namespace='" + namespace + '\'' + ", defaultFieldName='" + defaultFieldName + '\'' + '}';
}
@Override
public boolean equals(Object o)
{
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
RestRequestDefaultsModel that = (RestRequestDefaultsModel) o;
return Objects.equals(textAttributes, that.textAttributes) && Objects.equals(defaultFTSOperator, that.defaultFTSOperator) && Objects.equals(
defaultFTSFieldOperator, that.defaultFTSFieldOperator) && Objects.equals(namespace, that.namespace) && Objects.equals(defaultFieldName, that.defaultFieldName);
}
@Override
public int hashCode()
{
return Objects.hash(textAttributes, defaultFTSOperator, defaultFTSFieldOperator, namespace, defaultFieldName);
}
public static Builder builder()
{
return new Builder();
}
public static class Builder
{
private List<String> textAttributes;
private String defaultFTSOperator;
private String defaultFTSFieldOperator;
private String namespace;
private String defaultFieldName;
public Builder textAttributes(List<String> textAttributes)
{
this.textAttributes = textAttributes;
return this;
}
public Builder defaultFTSOperator(String defaultFTSOperator)
{
this.defaultFTSOperator = defaultFTSOperator;
return this;
}
public Builder defaultFTSFieldOperator(String defaultFTSFieldOperator)
{
this.defaultFTSFieldOperator = defaultFTSFieldOperator;
return this;
}
public Builder namespace(String namespace)
{
this.namespace = namespace;
return this;
}
public Builder defaultFieldName(String defaultFieldName)
{
this.defaultFieldName = defaultFieldName;
return this;
}
public RestRequestDefaultsModel create()
{
RestRequestDefaultsModel defaults = new RestRequestDefaultsModel();
defaults.setTextAttributes(this.textAttributes);
defaults.setDefaultFTSOperator(this.defaultFTSOperator);
defaults.setDefaultFTSFieldOperator(this.defaultFTSFieldOperator);
defaults.setNamespace(this.namespace);
defaults.setDefaultFieldName(this.defaultFieldName);
return defaults;
}
}
}

View File

@@ -0,0 +1,105 @@
package org.alfresco.rest.search;
import java.util.Objects;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.utility.model.TestModel;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Generated by 'krystian' on '2023-06-12 18:46' from 'Alfresco Content Services REST API' swagger file
* Generated from 'Alfresco Content Services REST API' swagger file
* Base Path {@linkplain /alfresco/api/-default-/public/search/versions/1}
*/
public class RestRequestTemplatesModel extends TestModel implements IRestModel<RestRequestTemplatesModel>
{
@JsonProperty(value = "entry")
RestRequestTemplatesModel model;
@Override
public RestRequestTemplatesModel onModel()
{
return model;
}
private String name;
private String template;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getTemplate()
{
return template;
}
public void setTemplate(String template)
{
this.template = template;
}
@Override
public String toString()
{
return "RestRequestTemplatesModel{" + "name='" + name + '\'' + ", template='" + template + '\'' + '}';
}
@Override
public boolean equals(Object o)
{
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
RestRequestTemplatesModel that = (RestRequestTemplatesModel) o;
return Objects.equals(name, that.name) && Objects.equals(template, that.template);
}
@Override
public int hashCode()
{
return Objects.hash(name, template);
}
public static Builder builder()
{
return new Builder();
}
public static class Builder
{
private String name;
private String template;
public Builder name(String name)
{
this.name = name;
return this;
}
public Builder template(String template)
{
this.template = template;
return this;
}
public RestRequestTemplatesModel create()
{
RestRequestTemplatesModel template = new RestRequestTemplatesModel();
template.setName(this.name);
template.setTemplate(this.template);
return template;
}
}
}

View File

@@ -43,14 +43,15 @@
*/ */
package org.alfresco.rest.search; package org.alfresco.rest.search;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.model.RestRequestRangesModel; import org.alfresco.rest.model.RestRequestRangesModel;
import org.alfresco.rest.model.RestRequestSpellcheckModel; import org.alfresco.rest.model.RestRequestSpellcheckModel;
import org.alfresco.utility.model.TestModel; import org.alfresco.utility.model.TestModel;
import java.util.ArrayList;
import java.util.List;
/** /**
* Search Query object. * Search Query object.
* @author msuzuki * @author msuzuki
@@ -76,6 +77,8 @@ public class SearchRequest extends TestModel
String facetFormat; String facetFormat;
List<String> include; List<String> include;
List<SortClause> sort; List<SortClause> sort;
RestRequestDefaultsModel defaults;
List<RestRequestTemplatesModel> templates;
public SearchRequest() public SearchRequest()
{ {
@@ -255,6 +258,26 @@ public class SearchRequest extends TestModel
this.fields = fields; this.fields = fields;
} }
public RestRequestDefaultsModel getDefaults()
{
return defaults;
}
public void setDefaults(RestRequestDefaultsModel defaults)
{
this.defaults = defaults;
}
public List<RestRequestTemplatesModel> getTemplates()
{
return templates;
}
public void setTemplates(List<RestRequestTemplatesModel> templates)
{
this.templates = templates;
}
public List<SortClause> getSort() public List<SortClause> getSort()
{ {
if (sort == null) if (sort == null)

View File

@@ -9,7 +9,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-tests</artifactId> <artifactId>alfresco-community-repo-tests</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<developers> <developers>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo-packaging</artifactId> <artifactId>alfresco-community-repo-packaging</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>

View File

@@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Alfresco Community Repo Parent</name> <name>Alfresco Community Repo Parent</name>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -7,7 +7,7 @@
<parent> <parent>
<groupId>org.alfresco</groupId> <groupId>org.alfresco</groupId>
<artifactId>alfresco-community-repo</artifactId> <artifactId>alfresco-community-repo</artifactId>
<version>23.1.0.136-SNAPSHOT</version> <version>23.1.0.140-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@@ -1,159 +0,0 @@
//JAKARTA_TO_DO|ACS-5421|Misc|Consider removal//
///*
// * #%L
// * Alfresco Repository
// * %%
// * Copyright (C) 2005 - 2016 Alfresco Software Limited
// * %%
// * This file is part of the Alfresco software.
// * If the software was purchased under a paid Alfresco license, the terms of
// * the paid license agreement will prevail. Otherwise, the software is
// * provided under the following open source license terms:
// *
// * Alfresco is free software: you can redistribute it and/or modify
// * it under the terms of the GNU Lesser General Public License as published by
// * the Free Software Foundation, either version 3 of the License, or
// * (at your option) any later version.
// *
// * Alfresco is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU Lesser General Public License for more details.
// *
// * You should have received a copy of the GNU Lesser General Public License
// * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
// * #L%
// */
//package org.alfresco.repo.config.source;
//
//import java.io.InputStream;
//import java.util.List;
//
//import org.springframework.extensions.config.ConfigException;
//import org.springframework.extensions.config.source.UrlConfigSource;
//import org.alfresco.model.ContentModel;
//import org.alfresco.repo.tenant.TenantService;
//import org.alfresco.service.cmr.repository.ContentReader;
//import org.alfresco.service.cmr.repository.ContentService;
//import org.alfresco.service.cmr.repository.InvalidStoreRefException;
//import org.alfresco.service.cmr.repository.NodeRef;
//import org.alfresco.service.cmr.repository.NodeService;
//import org.alfresco.service.cmr.repository.StoreRef;
//import org.alfresco.service.cmr.search.SearchService;
//import org.alfresco.service.namespace.NamespaceService;
//
///**
// * ConfigSource that looks for a prefix to determine where to look for the config.</br>
// * Valid prefixes are:
// * <ul>
// * <li><b><storeProtocol>://<storeIdentifier></b> the location provided is a path to a repository file</li>
// * </ul>
// * as well as those defined in the core (UrlConfigSource)
// *
// * Example store URLs
// * <code>workspace://SpacesStore/${spaces.company_home.childname}/${spaces.dictionary.childname}/${spaces.webclient_extension.childname}/cm:web-client-config-custom.xml</code>
// * <code>workspace://SpacesStore/app:company_home/app:dictionary/app:webclient_extension/cm:web-client-config-custom.xml</code>
// */
//public class RepoUrlConfigSource extends UrlConfigSource
//{
// private TenantService tenantService;
// private SearchService searchService;
// private ContentService contentService;
// private NamespaceService namespaceService;
// private NodeService nodeService;
//
//
// public void setTenantService(TenantService tenantService)
// {
// this.tenantService = tenantService;
// }
//
// public void setSearchService(SearchService searchService)
// {
// this.searchService = searchService;
// }
//
// public void setContentService(ContentService contentService)
// {
// this.contentService = contentService;
// }
//
// public void setNamespaceService(NamespaceService namespaceService)
// {
// this.namespaceService = namespaceService;
// }
//
// public void setNodeService(NodeService nodeService)
// {
// this.nodeService = nodeService;
// }
//
//
// public RepoUrlConfigSource(String sourceLocation)
// {
// super(sourceLocation);
// }
//
// public RepoUrlConfigSource(List<String> sourceLocations)
// {
// super(sourceLocations);
// }
//
//
// public InputStream getInputStream(String sourceUrl)
// {
// // determine the config source
// try
// {
// return super.getInputStream(sourceUrl);
// }
// catch (ConfigException ce)
// {
// int idx = sourceUrl.indexOf(StoreRef.URI_FILLER);
// if (idx != -1)
// {
// // assume this is a repository location
// int idx2 = sourceUrl.indexOf("/", idx+3);
//
// String store = sourceUrl.substring(0, idx2);
// String path = sourceUrl.substring(idx2);
//
// StoreRef storeRef = tenantService.getName(new StoreRef(store));
// NodeRef rootNode = null;
//
// try
// {
// rootNode = nodeService.getRootNode(storeRef);
// }
// catch (InvalidStoreRefException e)
// {
// throw ce;
// }
//
// List<NodeRef> nodeRefs = searchService.selectNodes(rootNode, path, null, namespaceService, false);
//
// if (nodeRefs.size() == 0)
// {
// // if none found, then simply skip
// return null;
// }
// else if (nodeRefs.size() > 1)
// {
// // unexpected
// throw new ConfigException("Found duplicate config sources in the repository " + sourceUrl);
// }
//
// NodeRef nodeRef = nodeRefs.get(0);
//
// ContentReader cr = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
//
// return cr.getContentInputStream();
// }
// else
// {
// // not a repository url
// throw ce;
// }
// }
// }
//}

View File

@@ -1349,7 +1349,7 @@ system.remove-alf_server-table-from-db.ignored=true
allow.unsecure.callback.jsonp=false allow.unsecure.callback.jsonp=false
# pre-configured allow list of media/mime types to allow inline instead of attachment (via Content-Disposition response header) # pre-configured allow list of media/mime types to allow inline instead of attachment (via Content-Disposition response header)
content.nonAttach.mimetypes=application/pdf,image/jpeg,image/gif,image/png,image/tiff,image/bmp content.nonAttach.mimetypes=application/pdf,image/jpeg,image/gif,image/png,image/tiff,image/bmp,application/octet-stream
# Zip file compression ratio threshold as a percentage, above which the zip file will be considered a "zip bomb" and the # Zip file compression ratio threshold as a percentage, above which the zip file will be considered a "zip bomb" and the
# import extraction process cancelled. # import extraction process cancelled.