From 608c56552a7b76a87eeabfc4ff7ce398b35bf846 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Wed, 8 Jun 2016 12:19:46 +0200 Subject: [PATCH 01/15] SEARCH-56: Added a ConfigUtil class for locating properties --- .../org/alfresco/solr/config/ConfigUtil.java | 112 ++++++++++++++++++ .../alfresco/solr/config/ConfigUtilTest.java | 68 +++++++++++ 2 files changed, 180 insertions(+) create mode 100644 alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java create mode 100644 alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java new file mode 100644 index 000000000..82d479afb --- /dev/null +++ b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2005-2016 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * 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 . + */ +package org.alfresco.solr.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import javax.naming.NoInitialContextException; + +/** + * Helps with configuring and setup of Alfresco and Solr. + * + * @author Gethin James + */ +public class ConfigUtil { + + protected final static Logger log = LoggerFactory.getLogger(ConfigUtil.class); + + private static final String JNDI_PREFIX = "java:comp/env/"; + /** + * Finds the property based on looking up the value in one of three places (in order of preference): + *
    + *
  1. JNDI: via java:comp/env/{propertyName/converted/to/slash}
  2. + *
  3. A Java system property or a Java system property prefixed with solr.
  4. + *
  5. OS environment variable
  6. + *
+ * + * @return A property + */ + public static String locateProperty(String propertyName, String defaultValue) + { + + String propertyValue = null; + String propertyKey = propertyName.toLowerCase(); + String jndiKey = convertPropertyNameToJNDIPath(propertyKey); + String envVar = convertPropertyNameToEnvironmentParam(propertyKey); + + // Try JNDI + try { + Context c = new InitialContext(); + propertyValue = (String) c.lookup(jndiKey); + log.info("Using JNDI key: "+jndiKey+": "+propertyValue ); + return propertyValue; + } catch (NoInitialContextException e) { + log.info("JNDI not configured (NoInitialContextEx)"); + } catch (NamingException e) { + log.info("No "+jndiKey+" in JNDI"); + } catch( RuntimeException ex ) { + log.warn("Odd RuntimeException while testing for JNDI: " + ex.getMessage()); + } + + // Now try system property + propertyValue = System.getProperty(propertyKey); + if( propertyValue != null ) { + log.info("Using system property "+propertyKey+": " + propertyValue ); + return propertyValue; + } + + //try system property again with a solr. prefix + propertyValue = System.getProperty("solr."+propertyKey); + if( propertyValue != null ) { + log.info("Using system property "+"solr."+propertyKey+": " + propertyValue ); + return propertyValue; + } + + // Now try an environment variable + propertyValue = System.getenv(envVar); + if( propertyValue != null ) { + log.info("Using environment variable "+envVar+": " + propertyValue ); + return propertyValue; + } + + //if all else fails then return the default + return defaultValue; + } + + /** + * Takes a property name and splits it via / instead of . + * @param propertyName + * @return the property name as a jndi path + */ + protected static String convertPropertyNameToJNDIPath(String propertyName) + { + if (propertyName == null) propertyName = ""; + return JNDI_PREFIX+propertyName.replace('.','/'); + } + + protected static String convertPropertyNameToEnvironmentParam(String propertyName) + { + if (propertyName == null) propertyName = ""; + return propertyName.replace('.','_').toUpperCase(); + } +} diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java b/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java new file mode 100644 index 000000000..843133292 --- /dev/null +++ b/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2005-2016 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * 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 . + */ +package org.alfresco.solr.config; + +import org.junit.Test; + +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +/** + * Tests configuring and setup of Alfresco and Solr properties + * + * @author Gethin James + */ + +public class ConfigUtilTest { + + @Test + public void locateProperty() throws Exception { + assertEquals("king", ConfigUtil.locateProperty("find.me", "king")); + System.setProperty("solr.find.me", "iamfound"); + assertEquals("iamfound", ConfigUtil.locateProperty("find.me", "king")); + System.clearProperty("solr.find.me"); + assertEquals("king", ConfigUtil.locateProperty("find.me", "king")); + System.setProperty("find.me", "iamfoundagain"); + assertEquals("iamfoundagain", ConfigUtil.locateProperty("find.me", "king")); + System.clearProperty("find.me"); + + //Assumes there is always a PATH environment variable + assertNotEquals("king", ConfigUtil.locateProperty("PATH", "king")); + } + + @Test + public void convertPropertyNameToJNDIPath() throws Exception { + assertEquals("java:comp/env/gethin",ConfigUtil.convertPropertyNameToJNDIPath("gethin")); + assertEquals("java:comp/env/solr/content/dir",ConfigUtil.convertPropertyNameToJNDIPath("solr.content.dir")); + assertEquals("java:comp/env/solr/model/dir",ConfigUtil.convertPropertyNameToJNDIPath("solr.model.dir")); + assertEquals("java:comp/env/",ConfigUtil.convertPropertyNameToJNDIPath("")); + assertEquals("java:comp/env/",ConfigUtil.convertPropertyNameToJNDIPath(null)); + } + + @Test + public void convertPropertyNameToEnvironmentParam() throws Exception { + assertEquals("GETHIN",ConfigUtil.convertPropertyNameToEnvironmentParam("gethin")); + assertEquals("SOLR_CONTENT_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.content.dir")); + assertEquals("SOLR_MODEL_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.model.dir")); + assertEquals("SOLR_HOST",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.host")); + } + +} \ No newline at end of file From abec26af48522e2bb6e97bff3ca52dba7f72874b Mon Sep 17 00:00:00 2001 From: Gethin James Date: Wed, 8 Jun 2016 12:20:21 +0200 Subject: [PATCH 02/15] SEARCH-56: Switching to use external properties for solr.host,port,baseurl --- .../alfresco/solr/SolrInformationServer.java | 53 +++---------------- .../solr/instance/conf/shared.properties | 4 ++ 2 files changed, 10 insertions(+), 47 deletions(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java index ac95ac54e..f5fe2a27b 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -128,6 +128,7 @@ import org.alfresco.solr.client.SOLRAPIClient; import org.alfresco.solr.client.SOLRAPIClient.GetTextContentResponse; import org.alfresco.solr.client.StringPropertyValue; import org.alfresco.solr.client.Transaction; +import org.alfresco.solr.config.ConfigUtil; import org.alfresco.solr.content.SolrContentStore; import org.alfresco.solr.content.SolrContentUrlBuilder; import org.alfresco.solr.tracker.IndexHealthReport; @@ -309,21 +310,12 @@ public class SolrInformationServer implements InformationServer contentStreamLimit = Integer.parseInt(p.getProperty("alfresco.contentStreamLimit", "10000000")); // build base URL - host and port have to come from configuration. - Properties props = AlfrescoSolrDataModel.getCommonConfig(); - - port = Integer.parseInt(props.getProperty("solr.port", getHttpPort("8080"))); - String defaultHost; - try - { - defaultHost = InetAddress.getLocalHost().getHostName(); - } - catch (UnknownHostException e) - { - defaultHost = "localhost"; - } - hostName = props.getProperty("solr.host", defaultHost); - baseUrl = props.getProperty("solr.baseUrl", "/solr4"); + + hostName = ConfigUtil.locateProperty("solr.host", props.getProperty("solr.host")); + String portNumber = ConfigUtil.locateProperty("solr.port", props.getProperty("solr.port")); + port = Integer.parseInt(portNumber); + baseUrl = ConfigUtil.locateProperty("solr.baseurl", props.getProperty("solr.baseurl")); baseUrl = (baseUrl.startsWith("/") ? "" : "/") + baseUrl + "/" + core.getName() + "/"; } @@ -3858,39 +3850,6 @@ public class SolrInformationServer implements InformationServer return hostName; } - private String getHttpPort(String defaultPort) - { - try - { - MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0); - QueryExp query = Query.and(Query.eq(Query.attr("scheme"), Query.value("http")), Query.eq(Query.attr("protocol"), Query.value("HTTP/1.1"))); - Set objectNames = mBeanServer.queryNames(null, query); - - if (objectNames != null && objectNames.size() > 0) { - for (ObjectName objectName : objectNames) { - String name = objectName.toString(); - if (name.indexOf("port=") > -1) { - String[] parts = name.split("port="); - String port = parts[1]; - try { - Integer.parseInt(port); - return port; - } catch (NumberFormatException e) { - log.error("Error parsing http port:" + port); - return defaultPort; - } - } - } - } - } - catch(Throwable t) - { - log.error("Error getting https port:", t); - } - - return defaultPort; - } - public void setCleanContentTxnFloor(long cleanContentTxnFloor) { this.cleanContentTxnFloor = cleanContentTxnFloor; diff --git a/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties b/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties index 8258d66da..44539d0d6 100644 --- a/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties +++ b/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties @@ -1,5 +1,9 @@ # Shared Properties file +#Host details an external client would use to connect to Solr +solr.host=localhost +solr.port=8983 +solr.baseurl=/solr # Properties treated as identifiers when indexed From 2abec6853d57c54e386a43fe20a07502ae3ee894 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Wed, 8 Jun 2016 12:21:05 +0200 Subject: [PATCH 03/15] SEARCH-56: SolrContentStore now uses just a static initializer --- .../solr/content/SolrContentStore.java | 48 ++-------- .../alfresco/solr/tracker/CoreWatcherJob.java | 55 +---------- .../solr/content/SolrContentStoreTest.java | 91 ++++--------------- 3 files changed, 27 insertions(+), 167 deletions(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/content/SolrContentStore.java b/alfresco-solr/src/main/java/org/alfresco/solr/content/SolrContentStore.java index fcc6835b1..bd9743480 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/content/SolrContentStore.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/content/SolrContentStore.java @@ -36,6 +36,7 @@ import org.alfresco.repo.content.ContentStore; import org.alfresco.service.cmr.repository.ContentIOException; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; +import org.alfresco.solr.config.ConfigUtil; import org.apache.commons.io.FileUtils; import org.apache.lucene.util.BytesRef; import org.apache.solr.common.SolrInputDocument; @@ -62,7 +63,7 @@ public class SolrContentStore implements ContentStore { protected final static Logger log = LoggerFactory.getLogger(SolrContentStore.class); - static SolrContentStore solrContentStore; + private static SolrContentStore solrContentStore; static { @@ -82,52 +83,17 @@ public class SolrContentStore implements ContentStore private static SolrContentStore getSolrContentStore(String solrHome) throws JobExecutionException { - // TODO: Could specify the rootStr from a properties file. - return new SolrContentStore(locateContentHome(solrHome)); + + String normalSolrHome = SolrResourceLoader.normalizeDir(solrHome); + return new SolrContentStore(ConfigUtil.locateProperty("solr.content.dir", normalSolrHome+"ContentStore")); } - public static String locateContentHome(String solrHome) { - String contentDir = null; - // Try JNDI - try { - Context c = new InitialContext(); - contentDir = (String) c.lookup("java:comp/env/solr/content/dir"); - log.info("Using JNDI solr.content.dir: " + contentDir); - } catch (NoInitialContextException e) { - log.info("JNDI not configured for solr (NoInitialContextEx)"); - } catch (NamingException e) { - log.info("No solr/content/dir in JNDI"); - } catch (RuntimeException ex) { - log.warn("Odd RuntimeException while testing for JNDI: " - + ex.getMessage()); - } - - // Now try system property - if (contentDir == null) { - String prop = "solr.solr.content.dir"; - contentDir = System.getProperty(prop); - if (contentDir != null) { - log.info("using system property " + prop + ": " + contentDir); - } - } - - // if all else fails, try - if (contentDir == null) { - return solrHome + "ContentStore"; - - } else { - return contentDir; - } - } - - public static SolrContentStore getSolrContentStore() { return solrContentStore; } - - + // write a BytesRef as a byte array private static JavaBinCodec.ObjectResolver resolver = new JavaBinCodec.ObjectResolver() { @@ -219,7 +185,7 @@ public class SolrContentStore implements ContentStore private final String root; - public SolrContentStore(String rootStr) + private SolrContentStore(String rootStr) { File rootFile = new File(rootStr); try diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java index 83bd6896d..5b3a5efe4 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java @@ -110,9 +110,8 @@ public class CoreWatcherJob implements Job SOLRAPIClient repositoryClient = clientFactory.getSOLRAPIClient(props, keyResourceLoader, AlfrescoSolrDataModel.getInstance().getDictionaryService(CMISStrictDictionaryService.DEFAULT), AlfrescoSolrDataModel.getInstance().getNamespaceDAO()); - SolrContentStore solrContentStore = this.getSolrContentStore(coreContainer); SolrInformationServer srv = new SolrInformationServer(adminHandler, core, repositoryClient, - solrContentStore); + SolrContentStore.getSolrContentStore()); adminHandler.getInformationServers().put(coreName, srv); log.info("Starting to track " + coreName); @@ -176,56 +175,4 @@ public class CoreWatcherJob implements Job scheduler.schedule(commitTracker, coreName, props); } } - - private SolrContentStore getSolrContentStore(CoreContainer coreContainer) throws JobExecutionException - { - // TODO: Could specify the rootStr from a properties file. - return new SolrContentStore(locateContentHome(coreContainer.getSolrHome())); - } - - public static String locateContentHome(String solrHome) - { - String contentDir = null; - // Try JNDI - try - { - Context c = new InitialContext(); - contentDir = (String) c.lookup("java:comp/env/solr/content/dir"); - log.info("Using JNDI solr.content.dir: " + contentDir); - } - catch (NoInitialContextException e) - { - log.info("JNDI not configured for solr (NoInitialContextEx)"); - } - catch (NamingException e) - { - log.info("No solr/content/dir in JNDI"); - } - catch (RuntimeException ex) - { - log.warn("Odd RuntimeException while testing for JNDI: " + ex.getMessage()); - } - - // Now try system property - if (contentDir == null) - { - String prop = "solr.solr.content.dir"; - contentDir = System.getProperty(prop); - if (contentDir != null) - { - log.info("using system property " + prop + ": " + contentDir); - } - } - - // if all else fails, try - if (contentDir == null) - { - return solrHome + "ContentStore"; - - } - else - { - return contentDir; - } - } } diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java b/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java index 777941e4c..0465c70e3 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java @@ -49,21 +49,14 @@ public class SolrContentStoreTest @Before public void setUp() throws IOException { - System.setProperty("solr.solr.content.dir","target"); - File tempFile = File.createTempFile("SolrContentStoreTest-", ".bin"); - File tempFolder = tempFile.getParentFile(); - rootStr = tempFolder.getAbsolutePath() + "/" + System.currentTimeMillis(); - rootStr = new File(rootStr).getAbsolutePath(); // Ensure we handle separator char for this test + System.setProperty("solr.solr.home","target"); } @After public void tearDown() throws IOException { - if (rootStr != null) - { - File rootDir = new File(rootStr); - FileUtils.deleteDirectory(rootDir); - } + File rootDir = new File(SolrContentStore.getSolrContentStore().getRootLocation()); + FileUtils.deleteDirectory(rootDir); } /** @@ -78,43 +71,24 @@ public class SolrContentStoreTest @Test public void rootLocation() { - SolrContentStore store = new SolrContentStore(rootStr); - File rootDir = new File(rootStr); + SolrContentStore store = SolrContentStore.getSolrContentStore(); + File rootDir = new File(store.getRootLocation()); Assert.assertTrue(rootDir.exists()); Assert.assertTrue(rootDir.isDirectory()); - - Assert.assertEquals(rootStr, store.getRootLocation()); - } - - @Test - public void failedRootLocation() throws IOException - { - File rootFile = new File(rootStr); - rootFile.createNewFile(); - try - { - new SolrContentStore(rootStr); - Assert.fail("Failed to handle file in root location."); - } - catch (RuntimeException e) - { - // Expected - } - rootFile.delete(); } @Test public void reconstruct() { - new SolrContentStore(rootStr); - new SolrContentStore(rootStr); + SolrContentStore store = SolrContentStore.getSolrContentStore(); + store = SolrContentStore.getSolrContentStore(); } @Test public void getWriter() { - SolrContentStore store = new SolrContentStore(rootStr); - + SolrContentStore store = SolrContentStore.getSolrContentStore(); + ContentContext ctx = createContentContext("abc"); ContentWriter writer = store.getWriter(ctx); String url = writer.getContentUrl(); @@ -126,12 +100,12 @@ public class SolrContentStoreTest @Test public void contentByString() { - SolrContentStore store = new SolrContentStore(rootStr); - + SolrContentStore store = SolrContentStore.getSolrContentStore(); + ContentContext ctx = createContentContext("abc"); ContentWriter writer = store.getWriter(ctx); - File file = new File(rootStr + "/" + writer.getContentUrl().replace("solr://", "")); + File file = new File(store.getRootLocation() + "/" + writer.getContentUrl().replace("solr://", "")); Assert.assertFalse("File was created before anything was written", file.exists()); String content = "Quick brown fox jumps over the lazy dog."; @@ -158,8 +132,8 @@ public class SolrContentStoreTest @Test public void contentByStream() throws Exception { - SolrContentStore store = new SolrContentStore(rootStr); - + SolrContentStore store = SolrContentStore.getSolrContentStore(); + ContentContext ctx = createContentContext("abc"); ContentWriter writer = store.getWriter(ctx); @@ -180,8 +154,8 @@ public class SolrContentStoreTest @Test public void delete() throws Exception { - SolrContentStore store = new SolrContentStore(rootStr); - + SolrContentStore store = SolrContentStore.getSolrContentStore(); + ContentContext ctx = createContentContext("abc"); String url = ctx.getContentUrl(); ContentWriter writer = store.getWriter(ctx); @@ -201,42 +175,15 @@ public class SolrContentStoreTest // Delete when already gone; should just not fail store.delete(url); } -// -// See ACE-2896. There is actually no way of ensuring that the cached document is latest or perfect. -// /** -// * This store allows the same URL to be used but does redirection to the latest version under the covers -// */ -// @Test -// public void rewrite() throws Exception -// { -// SolrContentStore store = new SolrContentStore(rootStr); -// -// ContentContext ctx = createContentContext("abc"); -// ContentWriter writer1 = store.getWriter(ctx); -// ContentWriter writer2 = store.getWriter(ctx); -// assertNotEquals( -// "Different writers should use different URLs: writer1=" + writer1 + ", writer2=" + writer2, -// writer1.getContentUrl(), writer2.getContentUrl()); -// assertTrue( -// "Second URL must be 'greater' than first: writer1=" + writer1 + ", writer2=" + writer2, -// writer1.getContentUrl().compareTo(writer2.getContentUrl()) < 0); -// -// writer1.putContent("Text1"); -// writer2.putContent("Text2"); -// -// // Now get the reader -// ContentReader reader = store.getReader(ctx.getContentUrl()); -// assertEquals("Text2", reader.getContentString()); -// } - + /** * A demonstration of how the store might be used. */ @Test public void exampleUsage() { - SolrContentStore store = new SolrContentStore(rootStr); - + SolrContentStore store = SolrContentStore.getSolrContentStore(); + String tenant = "alfresco.com"; long dbId = 12345; String otherData = "sdfklsfdl"; From 8c749e488bda49cd6d7344be94266a2052549e3f Mon Sep 17 00:00:00 2001 From: Gethin James Date: Wed, 8 Jun 2016 15:32:31 +0200 Subject: [PATCH 04/15] SEARCH-56: Altering CoreDescriptorDecorator to allow for limited property substitution --- .../alfresco/solr/AlfrescoSolrDataModel.java | 2 +- .../solr/component/EnsureModelsComponent.java | 4 +-- .../org/alfresco/solr/config/ConfigUtil.java | 4 ++- .../Lucene4QueryBuilderContextSolrImpl.java | 2 +- .../alfresco/solr/tracker/CoreWatcherJob.java | 2 +- .../solr/core/CoreDescriptorDecorator.java | 27 +++++++++++++++---- .../templates/rerank/conf/solrcore.properties | 11 +++++--- .../without_suggest/conf/solrcore.properties | 11 ++++---- .../alfresco/solr/config/ConfigUtilTest.java | 11 +++----- 9 files changed, 47 insertions(+), 27 deletions(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java b/alfresco-solr/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java index a8cbbad9f..e6ddec9d1 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/AlfrescoSolrDataModel.java @@ -1851,7 +1851,7 @@ public class AlfrescoSolrDataModel implements QueryConstants parser.setSearchParameters(searchParameters); parser.setAllowLeadingWildcard(true); - Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getCoreProperties(); + Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getProperties(); int topTermSpanRewriteLimit = Integer.parseInt(props.getProperty("alfresco.topTermSpanRewriteLimit", "1000")); parser.setTopTermSpanRewriteLimit(topTermSpanRewriteLimit); diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/component/EnsureModelsComponent.java b/alfresco-solr/src/main/java/org/alfresco/solr/component/EnsureModelsComponent.java index 8d720b114..65e916dc3 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/component/EnsureModelsComponent.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/component/EnsureModelsComponent.java @@ -60,7 +60,7 @@ public class EnsureModelsComponent extends SearchComponent public void prepare(ResponseBuilder rb) throws IOException { SolrQueryRequest req = rb.req; - Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getCoreProperties(); + Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getProperties(); boolean isTrackingEnabled = Boolean.parseBoolean(props.getProperty("enable.alfresco.tracking", "false")); @@ -90,7 +90,7 @@ public class EnsureModelsComponent extends SearchComponent SolrResourceLoader loader = core.getLatestSchema().getResourceLoader(); SolrKeyResourceLoader keyResourceLoader = new SolrKeyResourceLoader(loader); SOLRAPIClientFactory clientFactory = new SOLRAPIClientFactory(); - Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getCoreProperties(); + Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getProperties(); SOLRAPIClient repositoryClient = clientFactory.getSOLRAPIClient(props, keyResourceLoader, AlfrescoSolrDataModel.getInstance().getDictionaryService(CMISStrictDictionaryService.DEFAULT), AlfrescoSolrDataModel.getInstance().getNamespaceDAO()); diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java index 82d479afb..b0e8fc287 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java @@ -36,6 +36,8 @@ public class ConfigUtil { protected final static Logger log = LoggerFactory.getLogger(ConfigUtil.class); private static final String JNDI_PREFIX = "java:comp/env/"; + private static final String ENV_PREFIX = "SOLR_"; + /** * Finds the property based on looking up the value in one of three places (in order of preference): *
    @@ -107,6 +109,6 @@ public class ConfigUtil { protected static String convertPropertyNameToEnvironmentParam(String propertyName) { if (propertyName == null) propertyName = ""; - return propertyName.replace('.','_').toUpperCase(); + return ENV_PREFIX+propertyName.replace('.','_').toUpperCase(); } } diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/query/Lucene4QueryBuilderContextSolrImpl.java b/alfresco-solr/src/main/java/org/alfresco/solr/query/Lucene4QueryBuilderContextSolrImpl.java index 342791f0a..8cfa33951 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/query/Lucene4QueryBuilderContextSolrImpl.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/query/Lucene4QueryBuilderContextSolrImpl.java @@ -72,7 +72,7 @@ public class Lucene4QueryBuilderContextSolrImpl implements LuceneQueryBuilderCon // lqp.setAllowLeadingWildcard(true); // this.namespacePrefixResolver = namespacePrefixResolver; - Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getCoreProperties(); + Properties props = new CoreDescriptorDecorator(req.getCore().getCoreDescriptor()).getProperties(); int topTermSpanRewriteLimit = Integer.parseInt(props.getProperty("alfresco.topTermSpanRewriteLimit", "1000")); lqp.setTopTermSpanRewriteLimit(topTermSpanRewriteLimit); diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java index 5b3a5efe4..450a54808 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/CoreWatcherJob.java @@ -97,7 +97,7 @@ public class CoreWatcherJob implements Job private void registerForCore(AlfrescoCoreAdminHandler adminHandler, CoreContainer coreContainer, SolrCore core, String coreName, TrackerRegistry trackerRegistry) throws JobExecutionException { - Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getCoreProperties(); + Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getProperties(); boolean testcase = Boolean.parseBoolean(System.getProperty("alfresco.test", "false")); if (Boolean.parseBoolean(props.getProperty("enable.alfresco.tracking", "false"))) { diff --git a/alfresco-solr/src/main/java/org/apache/solr/core/CoreDescriptorDecorator.java b/alfresco-solr/src/main/java/org/apache/solr/core/CoreDescriptorDecorator.java index 5d830b69b..074ea35f0 100644 --- a/alfresco-solr/src/main/java/org/apache/solr/core/CoreDescriptorDecorator.java +++ b/alfresco-solr/src/main/java/org/apache/solr/core/CoreDescriptorDecorator.java @@ -18,22 +18,39 @@ */ package org.apache.solr.core; +import com.google.common.collect.ImmutableList; +import org.alfresco.solr.config.ConfigUtil; + import java.util.Properties; /** - * This class was created solely for the purpose of exposing the coreProperties of the CoreDescriptor + * This class was created solely for the purpose of exposing the coreProperties of the CoreDescriptor. + * It is now possible to substitute a sub-set of properties using the rules specified here @see ConfigUtil#locateProperty() + * + * The Substitutable Properties are defined in the substitutableProperties list. * @author Ahmed Owian + * @author Gethin James */ public class CoreDescriptorDecorator { - private CoreDescriptor descriptor; + private final Properties properties = new Properties(); + + public static ImmutableList substitutableProperties = ImmutableList.of( + "alfresco.host", + "alfresco.port", + "alfresco.baseUrl", + "alfresco.port.ssl" + ); public CoreDescriptorDecorator(CoreDescriptor descriptor) { - this.descriptor = descriptor; + properties.putAll(descriptor.coreProperties); + substitutableProperties.forEach(prop -> + properties.put(prop, ConfigUtil.locateProperty(prop,properties.getProperty(prop))) + ); } - public Properties getCoreProperties() + public Properties getProperties() { - return this.descriptor.coreProperties; + return this.properties; } } diff --git a/alfresco-solr/src/main/resources/solr/instance/templates/rerank/conf/solrcore.properties b/alfresco-solr/src/main/resources/solr/instance/templates/rerank/conf/solrcore.properties index c0906d5b7..ebf0c05cb 100644 --- a/alfresco-solr/src/main/resources/solr/instance/templates/rerank/conf/solrcore.properties +++ b/alfresco-solr/src/main/resources/solr/instance/templates/rerank/conf/solrcore.properties @@ -1,10 +1,7 @@ # # solrcore.properties - used in solrconfig.xml # -# data is in ${data.dir.root}/${data.dir.store} -data.dir.root=@@ALFRESCO_SOLR4_DATA_DIR@@ -data.dir.store=workspace/SpacesStore enable.alfresco.tracking=true # @@ -12,6 +9,12 @@ enable.alfresco.tracking=true # alfresco.version=5.1 +# +#These are replaced by the admin handler +# +#data.dir.root=DATA_DIR +#data.dir.store=workspace/SpacesStore +#alfresco.stores=workspace://SpacesStore # # Properties loaded during alfresco tracking @@ -22,7 +25,7 @@ alfresco.port=8080 alfresco.port.ssl=8443 alfresco.baseUrl=/alfresco alfresco.cron=0/15 * * * * ? * -alfresco.stores=workspace://SpacesStore + #alfresco.index.transformContent=false #alfresco.ignore.datatype.1=d:content alfresco.lag=1000 diff --git a/alfresco-solr/src/main/resources/solr/instance/templates/without_suggest/conf/solrcore.properties b/alfresco-solr/src/main/resources/solr/instance/templates/without_suggest/conf/solrcore.properties index c0906d5b7..2fc926300 100644 --- a/alfresco-solr/src/main/resources/solr/instance/templates/without_suggest/conf/solrcore.properties +++ b/alfresco-solr/src/main/resources/solr/instance/templates/without_suggest/conf/solrcore.properties @@ -1,17 +1,18 @@ # # solrcore.properties - used in solrconfig.xml # -# data is in ${data.dir.root}/${data.dir.store} - -data.dir.root=@@ALFRESCO_SOLR4_DATA_DIR@@ -data.dir.store=workspace/SpacesStore -enable.alfresco.tracking=true +# # # Alfresco version # alfresco.version=5.1 +#These are replaced by the admin handler +# +#data.dir.root=DATA_DIR +#data.dir.store=workspace/SpacesStore +#alfresco.stores=workspace://SpacesStore # # Properties loaded during alfresco tracking diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java b/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java index 843133292..376595224 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/config/ConfigUtilTest.java @@ -43,9 +43,6 @@ public class ConfigUtilTest { System.setProperty("find.me", "iamfoundagain"); assertEquals("iamfoundagain", ConfigUtil.locateProperty("find.me", "king")); System.clearProperty("find.me"); - - //Assumes there is always a PATH environment variable - assertNotEquals("king", ConfigUtil.locateProperty("PATH", "king")); } @Test @@ -59,10 +56,10 @@ public class ConfigUtilTest { @Test public void convertPropertyNameToEnvironmentParam() throws Exception { - assertEquals("GETHIN",ConfigUtil.convertPropertyNameToEnvironmentParam("gethin")); - assertEquals("SOLR_CONTENT_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.content.dir")); - assertEquals("SOLR_MODEL_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.model.dir")); - assertEquals("SOLR_HOST",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.host")); + assertEquals("SOLR_GETHIN",ConfigUtil.convertPropertyNameToEnvironmentParam("gethin")); + assertEquals("SOLR_SOLR_CONTENT_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.content.dir")); + assertEquals("SOLR_SOLR_MODEL_DIR",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.model.dir")); + assertEquals("SOLR_SOLR_HOST",ConfigUtil.convertPropertyNameToEnvironmentParam("solr.host")); } } \ No newline at end of file From ab587f6215d61148e9382ec5b97e4d8000aee40b Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 11:26:24 +0200 Subject: [PATCH 05/15] SEARCH-56: Moved solrhome to a top level directory --- packaging/pom.xml | 22 ++++++++++++++++++-- packaging/src/assembly/solr-distribution.xml | 6 +++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/packaging/pom.xml b/packaging/pom.xml index 40d13aabc..f4f283db4 100644 --- a/packaging/pom.xml +++ b/packaging/pom.xml @@ -110,10 +110,28 @@ true - - + + + maven-antrun-plugin + + + prepare-package + + + + + + + + + + run + + + + maven-assembly-plugin diff --git a/packaging/src/assembly/solr-distribution.xml b/packaging/src/assembly/solr-distribution.xml index 2cd55e57a..ec2b24bad 100644 --- a/packaging/src/assembly/solr-distribution.xml +++ b/packaging/src/assembly/solr-distribution.xml @@ -10,11 +10,15 @@ target/solr-${solr.version} solr + + **/server/solr/** + **/example/** + target/alfresco-solr/solr/instance - solr/server/solr/ + solrhome **/workspace-SpacesStore/** **/archive-SpacesStore/** From 495372425742277d807bf35474bfd0aa7e0285d6 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 12:45:41 +0200 Subject: [PATCH 06/15] SEARCH-56: Adding test files and error logging --- .../alfresco/solr/SolrInformationServer.java | 7 +- .../resources/test-files/conf/mime_types.csv | 1939 +++++++++++++++++ .../conf/opencmis-qnamefilter-context.xml | 17 + .../test-files/conf/shared.properties | 36 + 4 files changed, 1998 insertions(+), 1 deletion(-) create mode 100644 alfresco-solr/src/test/resources/test-files/conf/mime_types.csv create mode 100644 alfresco-solr/src/test/resources/test-files/conf/opencmis-qnamefilter-context.xml create mode 100644 alfresco-solr/src/test/resources/test-files/conf/shared.properties diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java index f5fe2a27b..06d2dc112 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -314,7 +314,12 @@ public class SolrInformationServer implements InformationServer hostName = ConfigUtil.locateProperty("solr.host", props.getProperty("solr.host")); String portNumber = ConfigUtil.locateProperty("solr.port", props.getProperty("solr.port")); - port = Integer.parseInt(portNumber); + try { + port = Integer.parseInt(portNumber); + } catch (NumberFormatException e) { + log.error("Failed to find a valid solr.port number, the default value is in shared.properties"); + throw e; + } baseUrl = ConfigUtil.locateProperty("solr.baseurl", props.getProperty("solr.baseurl")); baseUrl = (baseUrl.startsWith("/") ? "" : "/") + baseUrl + "/" + core.getName() + "/"; } diff --git a/alfresco-solr/src/test/resources/test-files/conf/mime_types.csv b/alfresco-solr/src/test/resources/test-files/conf/mime_types.csv new file mode 100644 index 000000000..00bca9225 --- /dev/null +++ b/alfresco-solr/src/test/resources/test-files/conf/mime_types.csv @@ -0,0 +1,1939 @@ +name,mimetype,group1,group2 +amr-wb+,amr-wb+,other, +application/1d-interleaved-parityfec,application/1d-interleaved-parityfec,other, +application/3gpdash-qoe-report+xml,application/3gpdash-qoe-report+xml,structureddata, +application/3gpp-ims+xml,application/3gpp-ims+xml,structureddata, +application/activemessage,application/activemessage,other, +application/alto-costmap+json,application/alto-costmap+json,structureddata, +application/alto-costmapfilter+json,application/alto-costmapfilter+json,structureddata, +application/alto-directory+json,application/alto-directory+json,structureddata, +application/alto-endpointcost+json,application/alto-endpointcost+json,structureddata, +application/alto-endpointcostparams+json,application/alto-endpointcostparams+json,structureddata, +application/alto-endpointprop+json,application/alto-endpointprop+json,structureddata, +application/alto-endpointpropparams+json,application/alto-endpointpropparams+json,structureddata, +application/alto-error+json,application/alto-error+json,structureddata, +application/alto-networkmap+json,application/alto-networkmap+json,structureddata, +application/alto-networkmapfilter+json,application/alto-networkmapfilter+json,structureddata, +application/andrew-inset,application/andrew-inset,other, +application/applefile,application/applefile,other, +application/applixware,application/applixware,other, +application/ATF,application/ATF,other, +application/atom+xml,application/atom+xml,structureddata, +application/atomcat+xml,application/atomcat+xml,structureddata, +application/atomdeleted+xml,application/atomdeleted+xml,structureddata, +application/atomicmail,application/atomicmail,other, +application/atomsvc+xml,application/atomsvc+xml,structureddata, +application/auth-policy+xml,application/auth-policy+xml,structureddata, +application/bacnet-xdd+zip,application/bacnet-xdd+zip,bundle, +application/batch-smtp,application/batch-smtp,other, +application/beep+xml,application/beep+xml,structureddata, +application/bizagi-modeler,application/bizagi-modeler,other, +application/calendar+json,application/calendar+json,structureddata, +application/calendar+xml,application/calendar+xml,structureddata, +application/call-completion,application/call-completion,other, +application/cals-1840,application/cals-1840,other, +application/cbor,application/cbor,other, +application/ccmp+xml,application/ccmp+xml,structureddata, +application/ccxml+xml,application/ccxml+xml,structureddata, +application/cdmi-capability,application/cdmi-capability,other, +application/cdmi-container,application/cdmi-container,other, +application/cdmi-domain,application/cdmi-domain,other, +application/cdmi-object,application/cdmi-object,other, +application/cdmi-queue,application/cdmi-queue,structureddata, +application/cea-2018+xml,application/cea-2018+xml,structureddata, +application/cellml+xml,application/cellml+xml,structureddata, +application/cfw,application/cfw,other, +application/cms,application/cms,other, +application/cnrp+xml,application/cnrp+xml,structureddata, +application/commonground,application/commonground,other, +application/conference-info+xml,application/conference-info+xml,structureddata, +application/cpl+xml,application/cpl+xml,structureddata, +application/csrattrs,application/csrattrs,other, +application/csta+xml,application/csta+xml,structureddata, +application/cstadata+xml,application/cstadata+xml,structureddata, +application/cu-seeme,application/cu-seeme,other, +application/cybercash,application/cybercash,other, +application/dash+xml,application/dash+xml,structureddata, +application/dashdelta,application/dashdelta,other, +application/davmount+xml,application/davmount+xml,structureddata, +application/dca-rft,application/dca-rft,other, +application/DCD,application/DCD,other, +application/dec-dx,application/dec-dx,other, +application/dialog-info+xml,application/dialog-info+xml,structureddata, +application/dicom,application/dicom,other, +application/dita+xml;format=concept,application/dita+xml;format=concept,structureddata, +application/dita+xml;format=map,application/dita+xml;format=map,structureddata, +application/dita+xml;format=task,application/dita+xml;format=task,structureddata, +application/dita+xml;format=topic,application/dita+xml;format=topic,structureddata, +application/dita+xml;format=val,application/dita+xml;format=val,structureddata, +application/dns,application/dns,other, +application/dskpp+xml,application/dskpp+xml,structureddata, +application/dssc+der,application/dssc+der,other, +application/dssc+xml,application/dssc+xml,structureddata, +application/dvcs,application/dvcs,other, +application/ecmascript,application/ecmascript,web, +application/edi-consent,application/edi-consent,other, +application/edi-x12,application/edi-x12,other, +application/edifact,application/edifact,other, +application/emma+xml,application/emma+xml,structureddata, +application/emotionml+xml,application/emotionml+xml,structureddata, +application/encaprtp,application/encaprtp,other, +application/epp+xml,application/epp+xml,structureddata, +application/epub+zip,application/epub+zip,bundle, +application/eshop,application/eshop,other, +application/example,application/example,other, +application/fastinfoset,application/fastinfoset,other, +application/fastsoap,application/fastsoap,other, +application/fdt+xml,application/fdt+xml,structureddata, +application/fits,application/fits,other, +application/font-sfnt,application/font-sfnt,other, +application/font-tdpfr,application/font-tdpfr,other, +application/font-woff,application/font-woff,other, +application/framework-attributes+xml,application/framework-attributes+xml,structureddata, +application/gzip,application/gzip,bundle, +application/h224,application/h224,other, +application/held+xml,application/held+xml,structureddata, +application/http,application/http,web, +application/hyperstudio,application/hyperstudio,other, +application/ibe-key-request+xml,application/ibe-key-request+xml,structureddata, +application/ibe-pkg-reply+xml,application/ibe-pkg-reply+xml,structureddata, +application/ibe-pp-data,application/ibe-pp-data,other, +application/iges,application/iges,other, +application/im-iscomposing+xml,application/im-iscomposing+xml,structureddata, +application/index,application/index,other, +application/index.cmd,application/index.cmd,program, +application/index.obj,application/index.obj,other, +application/index.response,application/index.response,other, +application/index.vnd,application/index.vnd,other, +application/inkml+xml,application/inkml+xml,structureddata, +application/iotp,application/iotp,other, +application/ipfix,application/ipfix,other, +application/ipp,application/ipp,other, +application/isup,application/isup,other, +application/its+xml,application/its+xml,structureddata, +application/java-serialized-object,application/java-serialized-object,other, +application/java-vm,application/java-vm,other, +application/javascript,application/javascript,web, +application/jrd+json,application/jrd+json,structureddata, +application/json-patch+json,application/json-patch+json,structureddata, +application/kpml-request+xml,application/kpml-request+xml,structureddata, +application/kpml-response+xml,application/kpml-response+xml,structureddata, +application/ld+json,application/ld+json,structureddata, +application/link-format,application/link-format,other, +application/load-control+xml,application/load-control+xml,structureddata, +application/lost+xml,application/lost+xml,structureddata, +application/lostsync+xml,application/lostsync+xml,structureddata, +application/mac-binhex40,application/mac-binhex40,other, +application/mac-compactpro,application/mac-compactpro,other, +application/macwriteii,application/macwriteii,other, +application/mads+xml,application/mads+xml,structureddata, +application/marc,application/marc,other, +application/marcxml+xml,application/marcxml+xml,structureddata, +application/mathematica,application/mathematica,other, +application/mathml+xml,application/mathml+xml,structureddata, +application/mbms-associated-procedure-description+xml,application/mbms-associated-procedure-description+xml,structureddata, +application/mbms-deregister+xml,application/mbms-deregister+xml,structureddata, +application/mbms-envelope+xml,application/mbms-envelope+xml,structureddata, +application/mbms-msk+xml,application/mbms-msk+xml,structureddata, +application/mbms-msk-response+xml,application/mbms-msk-response+xml,structureddata, +application/mbms-protection-description+xml,application/mbms-protection-description+xml,structureddata, +application/mbms-reception-report+xml,application/mbms-reception-report+xml,structureddata, +application/mbms-register+xml,application/mbms-register+xml,structureddata, +application/mbms-register-response+xml,application/mbms-register-response+xml,structureddata, +application/mbms-schedule+xml,application/mbms-schedule+xml,structureddata, +application/mbms-user-service-description+xml,application/mbms-user-service-description+xml,structureddata, +application/mbox,application/mbox,other, +application/mbox+xml,application/mbox+xml,structureddata, +application/media-policy-dataset+xml,application/media-policy-dataset+xml,structureddata, +application/media_control+xml,application/media_control+xml,structureddata, +application/mediaservercontrol+xml,application/mediaservercontrol+xml,structureddata, +application/merge-patch+json,application/merge-patch+json,structureddata, +application/metalink4+xml,application/metalink4+xml,structureddata, +application/mets+xml,application/mets+xml,structureddata, +application/mikey,application/mikey,other, +application/mods+xml,application/mods+xml,structureddata, +application/moss-keys,application/moss-keys,other, +application/moss-signature,application/moss-signature,other, +application/mosskey-data,application/mosskey-data,other, +application/mosskey-request,application/mosskey-request,other, +application/mp21,application/mp21,video, +application/mp4,application/mp4,video, +application/mpeg4-generic,application/mpeg4-generic,video, +application/mpeg4-iod,application/mpeg4-iod,video, +application/mpeg4-iod-xmt,application/mpeg4-iod-xmt,video, +application/mrb-consumer+xml,application/mrb-consumer+xml,structureddata, +application/mrb-publish+xml,application/mrb-publish+xml,structureddata, +application/msc-ivr+xml,application/msc-ivr+xml,structureddata, +application/msc-mixer+xml,application/msc-mixer+xml,structureddata, +application/msword2,application/msword2,document, +application/msword5,application/msword5,document, +application/mxf,application/mxf,other, +application/nasdata,application/nasdata,other, +application/news-checkgroups,application/news-checkgroups,other, +application/news-groupinfo,application/news-groupinfo,other, +application/news-transmission,application/news-transmission,other, +application/nlsml+xml,application/nlsml+xml,structureddata, +application/nss,application/nss,other, +application/ocsp-request,application/ocsp-request,other, +application/ocsp-response,application/ocsp-response,other, +application/oda,application/oda,other, +application/ODX,application/ODX,other, +application/oebps-package+xml,application/oebps-package+xml,structureddata, +application/onenote,application/onenote,document, +application/oscp-response,application/oscp-response,other, +application/oxps,application/oxps,other, +application/p2p-overlay+xml,application/p2p-overlay+xml,structureddata, +application/parityfec,application/parityfec,other, +application/patch-ops-error+xml,application/patch-ops-error+xml,structureddata, +application/PDX,application/PDX,other, +application/pgp-encrypted,application/pgp-encrypted,other, +application/pgp-keys,application/pgp-keys,other, +application/pgp-signature,application/pgp-signature,other, +application/pics-rules,application/pics-rules,other, +application/pidf+xml,application/pidf+xml,structureddata, +application/pidf-diff+xml,application/pidf-diff+xml,structureddata, +application/pkcs10,application/pkcs10,other, +application/pkcs7-mime,application/pkcs7-mime,other, +application/pkcs7-signature,application/pkcs7-signature,other, +application/pkcs8,application/pkcs8,other, +application/pkix-attr-cert,application/pkix-attr-cert,other, +application/pkix-cert,application/pkix-cert,other, +application/pkix-crl,application/pkix-crl,other, +application/pkix-pkipath,application/pkix-pkipath,other, +application/pkixcmp,application/pkixcmp,other, +application/pls+xml,application/pls+xml,structureddata, +application/poc-settings+xml,application/poc-settings+xml,structureddata, +application/provenance+xml,application/provenance+xml,structureddata, +application/prs.alvestrand.titrax-sheet,application/prs.alvestrand.titrax-sheet,other, +application/prs.cww,application/prs.cww,other, +application/prs.hpub+zip,application/prs.hpub+zip,bundle, +application/prs.nprend,application/prs.nprend,other, +application/prs.plucker,application/prs.plucker,other, +application/prs.rdf-xml-crypt,application/prs.rdf-xml-crypt,other, +application/prs.xsf+xml,application/prs.xsf+xml,structureddata, +application/pskc+xml,application/pskc+xml,structureddata, +application/qsig,application/qsig,other, +application/raptorfec,application/raptorfec,other, +application/rdf+xml,application/rdf+xml,structureddata, +application/reginfo+xml,application/reginfo+xml,structureddata, +application/relax-ng-compact-syntax,application/relax-ng-compact-syntax,other, +application/reputon+json,application/reputon+json,structureddata, +application/resource-lists+xml,application/resource-lists+xml,structureddata, +application/resource-lists-diff+xml,application/resource-lists-diff+xml,structureddata, +application/riscos,application/riscos,other, +application/rlmi+xml,application/rlmi+xml,structureddata, +application/rls-services+xml,application/rls-services+xml,structureddata, +application/rpki-ghostbusters,application/rpki-ghostbusters,other, +application/rpki-manifest,application/rpki-manifest,other, +application/rpki-roa,application/rpki-roa,other, +application/rpki-updown,application/rpki-updown,other, +application/rsd+xml,application/rsd+xml,structureddata, +application/rtploopback,application/rtploopback,other, +application/rtx,application/rtx,other, +application/samlassertion+xml,application/samlassertion+xml,structureddata, +application/samlmetadata+xml,application/samlmetadata+xml,structureddata, +application/sbml+xml,application/sbml+xml,structureddata, +application/scaip+xml,application/scaip+xml,structureddata, +application/scvp-cv-request,application/scvp-cv-request,other, +application/scvp-cv-response,application/scvp-cv-response,other, +application/scvp-vp-request,application/scvp-vp-request,other, +application/scvp-vp-response,application/scvp-vp-response,other, +application/sdp,application/sdp,other, +application/sep+xml,application/sep+xml,structureddata, +application/sep-exi,application/sep-exi,other, +application/session-info,application/session-info,other, +application/set-payment,application/set-payment,other, +application/set-payment-initiation,application/set-payment-initiation,other, +application/set-registration,application/set-registration,other, +application/set-registration-initiation,application/set-registration-initiation,other, +application/sgml-open-catalog,application/sgml-open-catalog,other, +application/shf+xml,application/shf+xml,structureddata, +application/sieve,application/sieve,other, +application/simple-filter+xml,application/simple-filter+xml,structureddata, +application/simple-message-summary,application/simple-message-summary,other, +application/simplesymbolcontainer,application/simplesymbolcontainer,other, +application/slate,application/slate,other, +application/sldworks,application/sldworks,other, +application/smil,application/smil,other, +application/smil+xml,application/smil+xml,structureddata, +application/smpte336m,application/smpte336m,other, +application/soap+fastinfoset,application/soap+fastinfoset,other, +application/soap+xml,application/soap+xml,structureddata, +application/sparql-query,application/sparql-query,other, +application/sparql-results+xml,application/sparql-results+xml,structureddata, +application/spirits-event+xml,application/spirits-event+xml,structureddata, +application/sql,application/sql,other, +application/srgs,application/srgs,other, +application/srgs+xml,application/srgs+xml,structureddata, +application/sru+xml,application/sru+xml,structureddata, +application/ssml+xml,application/ssml+xml,structureddata, +application/tamp-apex-update,application/tamp-apex-update,other, +application/tamp-apex-update-confirm,application/tamp-apex-update-confirm,other, +application/tamp-community-update,application/tamp-community-update,other, +application/tamp-community-update-confirm,application/tamp-community-update-confirm,other, +application/tamp-error,application/tamp-error,other, +application/tamp-sequence-adjust,application/tamp-sequence-adjust,other, +application/tamp-sequence-adjust-confirm,application/tamp-sequence-adjust-confirm,other, +application/tamp-status-query,application/tamp-status-query,other, +application/tamp-status-response,application/tamp-status-response,other, +application/tamp-update,application/tamp-update,other, +application/tamp-update-confirm,application/tamp-update-confirm,other, +application/tei+xml,application/tei+xml,structureddata, +application/thraud+xml,application/thraud+xml,structureddata, +application/timestamp-query,application/timestamp-query,other, +application/timestamp-reply,application/timestamp-reply,other, +application/timestamped-data,application/timestamped-data,other, +application/ttml+xml,application/ttml+xml,structureddata, +application/tve-trigger,application/tve-trigger,other, +application/ulpfec,application/ulpfec,other, +application/urc-grpsheet+xml,application/urc-grpsheet+xml,structureddata, +application/urc-ressheet+xml,application/urc-ressheet+xml,structureddata, +application/urc-targetdesc+xml,application/urc-targetdesc+xml,structureddata, +application/urc-uisocketdesc+xml,application/urc-uisocketdesc+xml,structureddata, +application/vcard+json,application/vcard+json,structureddata, +application/vcard+xml,application/vcard+xml,structureddata, +application/vemmi,application/vemmi,other, +application/vividence.scriptfile,application/vividence.scriptfile,other, +application/vnd-acucobol,application/vnd-acucobol,other, +application/vnd-curl,application/vnd-curl,program, +application/vnd-dart,application/vnd-dart,other, +application/vnd-dxr,application/vnd-dxr,other, +application/vnd-fdf,application/vnd-fdf,other, +application/vnd-mif,application/vnd-mif,other, +application/vnd-sema,application/vnd-sema,other, +application/vnd-wap-wmlc,application/vnd-wap-wmlc,other, +application/vnd.3gpp.bsf+xml,application/vnd.3gpp.bsf+xml,other, +application/vnd.3gpp.pic-bw-large,application/vnd.3gpp.pic-bw-large,other, +application/vnd.3gpp.pic-bw-small,application/vnd.3gpp.pic-bw-small,other, +application/vnd.3gpp.pic-bw-var,application/vnd.3gpp.pic-bw-var,other, +application/vnd.3gpp.sms,application/vnd.3gpp.sms,other, +application/vnd.3gpp2.bcmcsinfo+xml,application/vnd.3gpp2.bcmcsinfo+xml,structureddata, +application/vnd.3gpp2.sms,application/vnd.3gpp2.sms,other, +application/vnd.3gpp2.tcap,application/vnd.3gpp2.tcap,other, +application/vnd.3m.post-it-notes,application/vnd.3m.post-it-notes,other, +application/vnd.accpac.simply.aso,application/vnd.accpac.simply.aso,other, +application/vnd.accpac.simply.imp,application/vnd.accpac.simply.imp,other, +application/vnd.acucobol,application/vnd.acucobol,other, +application/vnd.acucorp,application/vnd.acucorp,other, +application/vnd.adobe.flash-movie,application/vnd.adobe.flash-movie,video, +application/vnd.adobe.formscentral.fcdt,application/vnd.adobe.formscentral.fcdt,other, +application/vnd.adobe.fxp,application/vnd.adobe.fxp,other, +application/vnd.adobe.partial-upload,application/vnd.adobe.partial-upload,other, +application/vnd.adobe.xfdf,application/vnd.adobe.xfdf,other, +application/vnd.aether.imp,application/vnd.aether.imp,other, +application/vnd.ah-barcode,application/vnd.ah-barcode,other, +application/vnd.ahead.space,application/vnd.ahead.space,other, +application/vnd.airzip.filesecure.azf,application/vnd.airzip.filesecure.azf,other, +application/vnd.airzip.filesecure.azs,application/vnd.airzip.filesecure.azs,other, +application/vnd.amazon.ebook,application/vnd.amazon.ebook,document, +application/vnd.americandynamics.acc,application/vnd.americandynamics.acc,other, +application/vnd.amiga.ami,application/vnd.amiga.ami,other, +application/vnd.amundsen.maze+xml,application/vnd.amundsen.maze+xml,structureddata, +application/vnd.anser-web-certificate-issue-initiation,application/vnd.anser-web-certificate-issue-initiation,other, +application/vnd.anser-web-funds-transfer-initiation,application/vnd.anser-web-funds-transfer-initiation,other, +application/vnd.antix.game-component,application/vnd.antix.game-component,other, +application/vnd.apache.thrift.binary,application/vnd.apache.thrift.binary,other, +application/vnd.api+json,application/vnd.api+json,structureddata, +application/vnd.apple.installer+xml,application/vnd.apple.installer+xml,structureddata, +application/vnd.apple.iwork,application/vnd.apple.iwork,document, +application/vnd.apple.mpegurl,application/vnd.apple.mpegurl,other, +application/vnd.arastra.swi,application/vnd.arastra.swi,other, +application/vnd.aristanetworks.swi,application/vnd.aristanetworks.swi,other, +application/vnd.artsquare,application/vnd.artsquare,other, +application/vnd.astraea-software.iota,application/vnd.astraea-software.iota,other, +application/vnd.audiograph,application/vnd.audiograph,other, +application/vnd.autopackage,application/vnd.autopackage,other, +application/vnd.avistar+xml,application/vnd.avistar+xml,structureddata, +application/vnd.balsamiq.bmml+xml,application/vnd.balsamiq.bmml+xml,structureddata, +application/vnd.bekitzur-stech+json,application/vnd.bekitzur-stech+json,structureddata, +application/vnd.blueice.multipass,application/vnd.blueice.multipass,other, +application/vnd.bluetooth.ep.oob,application/vnd.bluetooth.ep.oob,other, +application/vnd.bluetooth.le.oob,application/vnd.bluetooth.le.oob,other, +application/vnd.bmi,application/vnd.bmi,other, +application/vnd.businessobjects,application/vnd.businessobjects,other, +application/vnd.cab-jscript,application/vnd.cab-jscript,other, +application/vnd.canon-cpdl,application/vnd.canon-cpdl,other, +application/vnd.canon-lips,application/vnd.canon-lips,other, +application/vnd.cendio.thinlinc.clientconf,application/vnd.cendio.thinlinc.clientconf,other, +application/vnd.century-systems.tcp_stream,application/vnd.century-systems.tcp_stream,other, +application/vnd.chemdraw+xml,application/vnd.chemdraw+xml,structureddata, +application/vnd.chipnuts.karaoke-mmd,application/vnd.chipnuts.karaoke-mmd,other, +application/vnd.cinderella,application/vnd.cinderella,other, +application/vnd.cirpack.isdn-ext,application/vnd.cirpack.isdn-ext,other, +application/vnd.claymore,application/vnd.claymore,other, +application/vnd.cloanto.rp9,application/vnd.cloanto.rp9,other, +application/vnd.clonk.c4group,application/vnd.clonk.c4group,other, +application/vnd.cluetrust.cartomobile-config,application/vnd.cluetrust.cartomobile-config,other, +application/vnd.cluetrust.cartomobile-config-pkg,application/vnd.cluetrust.cartomobile-config-pkg,other, +application/vnd.collection+json,application/vnd.collection+json,structureddata, +application/vnd.collection.doc+json,application/vnd.collection.doc+json,structureddata, +application/vnd.collection.next+json,application/vnd.collection.next+json,structureddata, +application/vnd.commerce-battelle,application/vnd.commerce-battelle,other, +application/vnd.commonspace,application/vnd.commonspace,other, +application/vnd.contact.cmsg,application/vnd.contact.cmsg,other, +application/vnd.cosmocaller,application/vnd.cosmocaller,other, +application/vnd.crick.clicker,application/vnd.crick.clicker,other, +application/vnd.crick.clicker.keyboard,application/vnd.crick.clicker.keyboard,other, +application/vnd.crick.clicker.palette,application/vnd.crick.clicker.palette,other, +application/vnd.crick.clicker.template,application/vnd.crick.clicker.template,other, +application/vnd.crick.clicker.wordbank,application/vnd.crick.clicker.wordbank,other, +application/vnd.criticaltools.wbs+xml,application/vnd.criticaltools.wbs+xml,structureddata, +application/vnd.ctc-posml,application/vnd.ctc-posml,other, +application/vnd.ctct.ws+xml,application/vnd.ctct.ws+xml,structureddata, +application/vnd.cups-pdf,application/vnd.cups-pdf,document, +application/vnd.cups-postscript,application/vnd.cups-postscript,document, +application/vnd.cups-ppd,application/vnd.cups-ppd,other, +application/vnd.cups-raster,application/vnd.cups-raster,other, +application/vnd.cups-raw,application/vnd.cups-raw,other, +application/vnd.curl.car,application/vnd.curl.car,other, +application/vnd.curl.pcurl,application/vnd.curl.pcurl,other, +application/vnd.cyan.dean.root+xml,application/vnd.cyan.dean.root+xml,structureddata, +application/vnd.cybank,application/vnd.cybank,other, +application/vnd.data-vision.rdz,application/vnd.data-vision.rdz,other, +application/vnd.debian.binary-package,application/vnd.debian.binary-package,other, +application/vnd.dece-zip,application/vnd.dece-zip,bundle, +application/vnd.dece.data,application/vnd.dece.data,other, +application/vnd.dece.ttml+xml,application/vnd.dece.ttml+xml,structureddata, +application/vnd.dece.unspecified,application/vnd.dece.unspecified,other, +application/vnd.denovo.fcselayout-link,application/vnd.denovo.fcselayout-link,other, +application/vnd.desmume-movie,application/vnd.desmume-movie,video, +application/vnd.dir-bi.plate-dl-nosuffix,application/vnd.dir-bi.plate-dl-nosuffix,other, +application/vnd.dm.delegation+xml,application/vnd.dm.delegation+xml,structureddata, +application/vnd.dna,application/vnd.dna,other, +application/vnd.document+json,application/vnd.document+json,structureddata, +application/vnd.dolby.mlp,application/vnd.dolby.mlp,audio, +application/vnd.dolby.mobile.1,application/vnd.dolby.mobile.1,audio, +application/vnd.dolby.mobile.2,application/vnd.dolby.mobile.2,audio, +application/vnd.doremir.scorecloud-binary-document,application/vnd.doremir.scorecloud-binary-document,other, +application/vnd.dpgraph,application/vnd.dpgraph,other, +application/vnd.dreamfactory,application/vnd.dreamfactory,other, +application/vnd.dtg.local,application/vnd.dtg.local,other, +application/vnd.dtg.local.flash,application/vnd.dtg.local.flash,other, +application/vnd.dtg.local.html,application/vnd.dtg.local.html,other, +application/vnd.dvb.ait,application/vnd.dvb.ait,other, +application/vnd.dvb.dvbj,application/vnd.dvb.dvbj,other, +application/vnd.dvb.esgcontainer,application/vnd.dvb.esgcontainer,other, +application/vnd.dvb.ipdcdftnotifaccess,application/vnd.dvb.ipdcdftnotifaccess,other, +application/vnd.dvb.ipdcesgaccess,application/vnd.dvb.ipdcesgaccess,other, +application/vnd.dvb.ipdcesgaccess2,application/vnd.dvb.ipdcesgaccess2,other, +application/vnd.dvb.ipdcesgpdd,application/vnd.dvb.ipdcesgpdd,other, +application/vnd.dvb.ipdcroaming,application/vnd.dvb.ipdcroaming,other, +application/vnd.dvb.iptv.alfec-base,application/vnd.dvb.iptv.alfec-base,other, +application/vnd.dvb.iptv.alfec-enhancement,application/vnd.dvb.iptv.alfec-enhancement,other, +application/vnd.dvb.notif-aggregate-root+xml,application/vnd.dvb.notif-aggregate-root+xml,other, +application/vnd.dvb.notif-container+xml,application/vnd.dvb.notif-container+xml,structureddata, +application/vnd.dvb.notif-generic+xml,application/vnd.dvb.notif-generic+xml,structureddata, +application/vnd.dvb.notif-ia-msglist+xml,application/vnd.dvb.notif-ia-msglist+xml,structureddata, +application/vnd.dvb.notif-ia-registration-request+xml,application/vnd.dvb.notif-ia-registration-request+xml,structureddata, +application/vnd.dvb.notif-ia-registration-response+xml,application/vnd.dvb.notif-ia-registration-response+xml,structureddata, +application/vnd.dvb.notif-init+xml,application/vnd.dvb.notif-init+xml,structureddata, +application/vnd.dvb.pfr,application/vnd.dvb.pfr,other, +application/vnd.dvb_service,application/vnd.dvb_service,other, +application/vnd.dxr,application/vnd.dxr,other, +application/vnd.dynageo,application/vnd.dynageo,other, +application/vnd.dzr,application/vnd.dzr,other, +application/vnd.easykaraoke.cdgdownload,application/vnd.easykaraoke.cdgdownload,other, +application/vnd.ecdis-update,application/vnd.ecdis-update,other, +application/vnd.ecowin.chart,application/vnd.ecowin.chart,other, +application/vnd.ecowin.filerequest,application/vnd.ecowin.filerequest,other, +application/vnd.ecowin.fileupdate,application/vnd.ecowin.fileupdate,other, +application/vnd.ecowin.series,application/vnd.ecowin.series,other, +application/vnd.ecowin.seriesrequest,application/vnd.ecowin.seriesrequest,other, +application/vnd.ecowin.seriesupdate,application/vnd.ecowin.seriesupdate,other, +application/vnd.emclient.accessrequest+xml,application/vnd.emclient.accessrequest+xml,structureddata, +application/vnd.enliven,application/vnd.enliven,other, +application/vnd.eprints.data+xml,application/vnd.eprints.data+xml,structureddata, +application/vnd.epson.esf,application/vnd.epson.esf,other, +application/vnd.epson.msf,application/vnd.epson.msf,other, +application/vnd.epson.quickanime,application/vnd.epson.quickanime,other, +application/vnd.epson.salt,application/vnd.epson.salt,other, +application/vnd.epson.ssf,application/vnd.epson.ssf,other, +application/vnd.ericsson.quickcall,application/vnd.ericsson.quickcall,other, +application/vnd.eszigno3+xml,application/vnd.eszigno3+xml,structureddata, +application/vnd.etsi.aoc+xml,application/vnd.etsi.aoc+xml,structureddata, +application/vnd.etsi.asic-e+zip,application/vnd.etsi.asic-e+zip,bundle, +application/vnd.etsi.asic-s+zip,application/vnd.etsi.asic-s+zip,bundle, +application/vnd.etsi.cug+xml,application/vnd.etsi.cug+xml,structureddata, +application/vnd.etsi.iptvcommand+xml,application/vnd.etsi.iptvcommand+xml,structureddata, +application/vnd.etsi.iptvdiscovery+xml,application/vnd.etsi.iptvdiscovery+xml,structureddata, +application/vnd.etsi.iptvprofile+xml,application/vnd.etsi.iptvprofile+xml,structureddata, +application/vnd.etsi.iptvsad-bc+xml,application/vnd.etsi.iptvsad-bc+xml,structureddata, +application/vnd.etsi.iptvsad-cod+xml,application/vnd.etsi.iptvsad-cod+xml,structureddata, +application/vnd.etsi.iptvsad-npvr+xml,application/vnd.etsi.iptvsad-npvr+xml,structureddata, +application/vnd.etsi.iptvservice+xml,application/vnd.etsi.iptvservice+xml,structureddata, +application/vnd.etsi.iptvsync+xml,application/vnd.etsi.iptvsync+xml,structureddata, +application/vnd.etsi.iptvueprofile+xml,application/vnd.etsi.iptvueprofile+xml,structureddata, +application/vnd.etsi.mcid+xml,application/vnd.etsi.mcid+xml,structureddata, +application/vnd.etsi.mheg5,application/vnd.etsi.mheg5,video, +application/vnd.etsi.overload-control-policy-dataset+xml,application/vnd.etsi.overload-control-policy-dataset+xml,structureddata, +application/vnd.etsi.pstn+xml,application/vnd.etsi.pstn+xml,structureddata, +application/vnd.etsi.sci+xml,application/vnd.etsi.sci+xml,structureddata, +application/vnd.etsi.simservs+xml,application/vnd.etsi.simservs+xml,structureddata, +application/vnd.etsi.timestamp-token,application/vnd.etsi.timestamp-token,other, +application/vnd.etsi.tsl+xml,application/vnd.etsi.tsl+xml,structureddata, +application/vnd.etsi.tsl.der,application/vnd.etsi.tsl.der,other, +application/vnd.eudora.data,application/vnd.eudora.data,other, +application/vnd.ezpix-album,application/vnd.ezpix-album,other, +application/vnd.ezpix-package,application/vnd.ezpix-package,other, +application/vnd.f-secure.mobile,application/vnd.f-secure.mobile,other, +application/vnd.fdf,application/vnd.fdf,other, +application/vnd.fdsn.mseed,application/vnd.fdsn.mseed,other, +application/vnd.fdsn.seed,application/vnd.fdsn.seed,other, +application/vnd.ffsns,application/vnd.ffsns,other, +application/vnd.fints,application/vnd.fints,other, +application/vnd.flographit,application/vnd.flographit,other, +application/vnd.fluxtime.clip,application/vnd.fluxtime.clip,other, +application/vnd.font-fontforge-sfd,application/vnd.font-fontforge-sfd,other, +application/vnd.framemaker,application/vnd.framemaker,other, +application/vnd.frogans.fnc,application/vnd.frogans.fnc,other, +application/vnd.frogans.ltf,application/vnd.frogans.ltf,other, +application/vnd.fsc.weblaunch,application/vnd.fsc.weblaunch,other, +application/vnd.fujitsu.oasys,application/vnd.fujitsu.oasys,other, +application/vnd.fujitsu.oasys2,application/vnd.fujitsu.oasys2,other, +application/vnd.fujitsu.oasys3,application/vnd.fujitsu.oasys3,other, +application/vnd.fujitsu.oasysgp,application/vnd.fujitsu.oasysgp,other, +application/vnd.fujitsu.oasysprs,application/vnd.fujitsu.oasysprs,other, +application/vnd.fujixerox.art-ex,application/vnd.fujixerox.art-ex,other, +application/vnd.fujixerox.art4,application/vnd.fujixerox.art4,other, +application/vnd.fujixerox.ddd,application/vnd.fujixerox.ddd,other, +application/vnd.fujixerox.docuworks,application/vnd.fujixerox.docuworks,other, +application/vnd.fujixerox.docuworks.binder,application/vnd.fujixerox.docuworks.binder,other, +Alfresco Content Package,application/acp,other, +DITA,application/dita+xml,structureddata, +EPS Type PostScript,application/eps,other, +Adobe FrameMaker,application/framemaker,other, +Adobe Illustrator File,application/illustrator,other, +Java Class,application/java,other, +Java Archive,application/java-archive,other, +JSON,application/json,structureddata, +Microsoft Word,application/msword,other, +Binary File (Octet Stream),application/octet-stream,other, +Ogg Multiplex,application/ogg,other, +Adobe PageMaker,application/pagemaker,other, +Adobe PDF document,application/pdf,document, +PostScript,application/postscript,other, +Printer Text File,application/remote-printing,other, +RSS,application/rss+xml,structureddata, +Rich Text Format,application/rtf,other, +SGML (Machine Readable),application/sgml,other, +Adobe AfterEffects Project,application/vnd.adobe.aftereffects.project,other, +Adobe AfterEffects Template,application/vnd.adobe.aftereffects.template,other, +Adobe AIR,application/vnd.adobe.air-application-installer-package+zip,bundle, +Adobe Acrobat XML Data Package,application/vnd.adobe.xdp+xml,structureddata, +Android Package,application/vnd.android.package-archive,other, +Apple iWork Keynote,application/vnd.apple.keynote,presentation, +Apple iWork Numbers,application/vnd.apple.numbers,other, +Apple iWork Pages,application/vnd.apple.pages,other, +Microsoft Excel,application/vnd.ms-excel,spreadsheet, +Microsoft Excel 2007 add-in,application/vnd.ms-excel.addin.macroenabled.12,spreadsheet, +Microsoft Excel 2007 binary workbook,application/vnd.ms-excel.sheet.binary.macroenabled.12,spreadsheet, +Microsoft Excel 2007 macro-enabled workbook,application/vnd.ms-excel.sheet.macroenabled.12,spreadsheet, +Microsoft Excel 2007 macro-enabled workbook template,application/vnd.ms-excel.template.macroenabled.12,spreadsheet, +Microsoft Outlook message,application/vnd.ms-outlook,program, +Microsoft PowerPoint,application/vnd.ms-powerpoint,program, +Microsoft PowerPoint 2007 add-in,application/vnd.ms-powerpoint.addin.macroenabled.12,program, +Microsoft PowerPoint 2007 macro-enabled presentation,application/vnd.ms-powerpoint.presentation.macroenabled.12,program, +Microsoft PowerPoint 2007 macro-enabled slide,application/vnd.ms-powerpoint.slide.macroenabled.12,program, +Microsoft PowerPoint 2007 macro-enabled slide show,application/vnd.ms-powerpoint.slideshow.macroenabled.12,program, +Microsoft PowerPoint 2007 macro-enabled presentation template,application/vnd.ms-powerpoint.template.macroenabled.12,program, +Microsoft Project,application/vnd.ms-project,program, +Microsoft Word 2007 macro-enabled document,application/vnd.ms-word.document.macroenabled.12,document, +Microsoft Word 2007 macro-enabled document template,application/vnd.ms-word.template.macroenabled.12,program, +Microsoft PowerPoint 2007,application/vnd.openxmlformats-officedocument.presentationml.presentation,program, +Microsoft PowerPoint 2007 slide,application/vnd.openxmlformats-officedocument.presentationml.slide,program, +Microsoft PowerPoint 2007 slide show,application/vnd.openxmlformats-officedocument.presentationml.slideshow,program, +Microsoft PowerPoint 2007 template,application/vnd.openxmlformats-officedocument.presentationml.template,program, +Microsoft Excel 2007,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,spreadsheet, +Microsoft Excel template 2007,application/vnd.openxmlformats-officedocument.spreadsheetml.template,spreadsheet, +Microsoft Word 2007,application/vnd.openxmlformats-officedocument.wordprocessingml.document,program, +Microsoft Word 2007 template,application/vnd.openxmlformats-officedocument.wordprocessingml.template,program, +Microsoft Visio,application/vnd.visio,program, +WordPerfect,application/wordperfect,program, +Z Compress,application/x-compress,program, +Binary File,application/x-dosexec,executable, +Flash Source,application/x-fla,other, +GZIP Tarball,application/x-gtar,bundle, +GZIP,application/x-gzip,bundle, +Adobe InDesign document,application/x-indesign,other, +JavaScript,application/x-javascript,web, +LaTeX,application/x-latex,other, +RAR Archive,application/x-rar-compressed,other, +Shell Script,application/x-sh,executable, +Shockwave Flash,application/x-shockwave-flash,other, +Tarball,application/x-tar,bundle, +Tex,application/x-tex,other, +Tex Info,application/x-texinfo,other, +Man Page,application/x-troff-man,other, +Adobe Flex Project File,application/x-zip,bundle, +XHTML,application/xhtml+xml,structureddata, +ZIP,application/zip,bundle, +Basic audio,audio/basic,audio, +MPEG4 audio,audio/mp4,audio, +MPEG audio,audio/mpeg,audio, +Ogg audio,audio/ogg,audio, +Adobe SoundBooth,audio/vnd.adobe.soundbooth,audio, +Ogg Vorbis audio,audio/vorbis,audio, +AIFF audio,audio/x-aiff,audio, +FLAC audio,audio/x-flac,audio, +MS WMA Streaming audio,audio/x-ms-wma,audio, +WAV audio,audio/x-wav,audio, +Bitmap image,image/bmp,image, +CGM image,image/cgm,image, +GIF image,image/gif,image, +IEF image,image/ief,image, +JPEG 2000 image,image/jp2,image, +JPEG image,image/jpeg,image, +PNG image,image/png,image, +Scalable Vector Graphics image,image/svg+xml,structureddata, +TIFF image,image/tiff,image, +Adobe Photoshop,image/vnd.adobe.photoshop,image, +Adobe Premiere,image/vnd.adobe.premiere,image, +AutoCAD Drawing,image/vnd.dwg,image, +Raster image,image/x-cmu-raster,image, +AutoCAD Template,image/x-dwt,image, +Anymap image,image/x-portable-anymap,image, +Portable Bitmap,image/x-portable-bitmap,image, +Greymap image,image/x-portable-graymap,image, +Pixmap image,image/x-portable-pixmap,image, +Adobe Digital Negative image,image/x-raw-adobe,image, +Canon RAW image,image/x-raw-canon,image, +Fuji RAW image,image/x-raw-fuji,image, +Hasselblad RAW image,image/x-raw-hasselblad,image, +Kodak RAW image,image/x-raw-kodak,image, +Leica RAW image,image/x-raw-leica,image, +Minolta RAW image,image/x-raw-minolta,image, +Nikon RAW image,image/x-raw-nikon,image, +Olympus RAW image,image/x-raw-olympus,image, +Panasonic RAW image,image/x-raw-panasonic,image, +Pentax RAW image,image/x-raw-pentax,image, +RED RAW image,image/x-raw-red,image, +Sigma RAW image,image/x-raw-sigma,image, +Sony RAW image,image/x-raw-sony,image, +RGB image,image/x-rgb,image, +XBitmap image,image/x-xbitmap,image, +XPixmap image,image/x-xpixmap,image, +XWindow Dump,image/x-xwindowdump,image, +EMail,message/rfc822,message, +iCalendar File,text/calendar,other, +Style Sheet,text/css,web, +Comma Separated Values (CSV),text/csv,structureddata, +HTML,text/html,web, +MediaWiki Markup,text/mediawiki,web, +Plain Text,text/plain,document, +Rich Text,text/richtext,other, +SGML (Human Readable),text/sgml,other, +Tab Separated Values,text/tab-separated-values,structureddata, +Java Source File,text/x-java-source,sourcecode, +Java Server Page,text/x-jsp,sourcecode, +Markdown,text/x-markdown,sourcecode, +XML,text/xml,other, +3G video,video/3gpp,video, +3G2 video,video/3gpp2,video, +MPEG Transport Stream,video/mp2t,video, +MPEG4 video,video/mp4,video, +MPEG video,video/mpeg,video, +MPEG2 video,video/mpeg2,video, +Ogg video,video/ogg,video, +Quicktime video,video/quicktime,video, +webM video,video/webm,video, +Flash video,video/x-flv,video, +MPEG4 video (m4v),video/x-m4v,video, +MS ASF Streaming video,video/x-ms-asf,video, +MS WMV Streaming video,video/x-ms-wmv,video, +MS video,video/x-msvideo,video, +RAD Screen Display,video/x-rad-screenplay,video, +SGI video,video/x-sgi-movie,video, +VRML,x-world/x-vrml,other, +application/vnd.fujixerox.docuworks.container,application/vnd.fujixerox.docuworks.container,other, +application/vnd.fujixerox.hbpl,application/vnd.fujixerox.hbpl,other, +application/vnd.fut-misnet,application/vnd.fut-misnet,other, +application/vnd.fuzzysheet,application/vnd.fuzzysheet,other, +application/vnd.genomatix.tuxedo,application/vnd.genomatix.tuxedo,other, +application/vnd.geo+json,application/vnd.geo+json,structureddata, +application/vnd.geocube+xml,application/vnd.geocube+xml,structureddata, +application/vnd.geogebra.file,application/vnd.geogebra.file,other, +application/vnd.geogebra.tool,application/vnd.geogebra.tool,other, +application/vnd.geometry-explorer,application/vnd.geometry-explorer,other, +application/vnd.geonext,application/vnd.geonext,other, +application/vnd.geoplan,application/vnd.geoplan,other, +application/vnd.geospace,application/vnd.geospace,other, +application/vnd.globalplatform.card-content-mgt,application/vnd.globalplatform.card-content-mgt,other, +application/vnd.globalplatform.card-content-mgt-response,application/vnd.globalplatform.card-content-mgt-response,other, +application/vnd.gmx,application/vnd.gmx,other, +application/vnd.google-earth.kml+xml,application/vnd.google-earth.kml+xml,structureddata, +application/vnd.google-earth.kmz,application/vnd.google-earth.kmz,other, +application/vnd.grafeq,application/vnd.grafeq,other, +application/vnd.gridmp,application/vnd.gridmp,other, +application/vnd.groove-account,application/vnd.groove-account,other, +application/vnd.groove-help,application/vnd.groove-help,other, +application/vnd.groove-identity-message,application/vnd.groove-identity-message,other, +application/vnd.groove-injector,application/vnd.groove-injector,other, +application/vnd.groove-tool-message,application/vnd.groove-tool-message,other, +application/vnd.groove-tool-template,application/vnd.groove-tool-template,other, +application/vnd.groove-vcard,application/vnd.groove-vcard,other, +application/vnd.hal+json,application/vnd.hal+json,structureddata, +application/vnd.hal+xml,application/vnd.hal+xml,structureddata, +application/vnd.handheld-entertainment+xml,application/vnd.handheld-entertainment+xml,structureddata, +application/vnd.hbci,application/vnd.hbci,other, +application/vnd.hcl-bireports,application/vnd.hcl-bireports,other, +application/vnd.heroku+json,application/vnd.heroku+json,structureddata, +application/vnd.hhe.lesson-player,application/vnd.hhe.lesson-player,other, +application/vnd.hp-hpgl,application/vnd.hp-hpgl,other, +application/vnd.hp-hpid,application/vnd.hp-hpid,other, +application/vnd.hp-hps,application/vnd.hp-hps,other, +application/vnd.hp-jlyt,application/vnd.hp-jlyt,other, +application/vnd.hp-pcl,application/vnd.hp-pcl,other, +application/vnd.hp-pclxl,application/vnd.hp-pclxl,other, +application/vnd.httphone,application/vnd.httphone,other, +application/vnd.hydrostatix.sof-data,application/vnd.hydrostatix.sof-data,other, +application/vnd.hzn-3d-crossword,application/vnd.hzn-3d-crossword,other, +application/vnd.ibm.afplinedata,application/vnd.ibm.afplinedata,other, +application/vnd.ibm.electronic-media,application/vnd.ibm.electronic-media,other, +application/vnd.ibm.minipay,application/vnd.ibm.minipay,other, +application/vnd.ibm.modcap,application/vnd.ibm.modcap,other, +application/vnd.ibm.rights-management,application/vnd.ibm.rights-management,other, +application/vnd.ibm.secure-container,application/vnd.ibm.secure-container,other, +application/vnd.iccprofile,application/vnd.iccprofile,other, +application/vnd.ieee.1905,application/vnd.ieee.1905,other, +application/vnd.igloader,application/vnd.igloader,other, +application/vnd.immervision-ivp,application/vnd.immervision-ivp,other, +application/vnd.immervision-ivu,application/vnd.immervision-ivu,other, +application/vnd.ims.lis.v2.result+json,application/vnd.ims.lis.v2.result+json,structureddata, +application/vnd.ims.lti.v2.toolconsumerprofile+json,application/vnd.ims.lti.v2.toolconsumerprofile+json,structureddata, +application/vnd.ims.lti.v2.toolproxy+json,application/vnd.ims.lti.v2.toolproxy+json,structureddata, +application/vnd.ims.lti.v2.toolproxy.id+json,application/vnd.ims.lti.v2.toolproxy.id+json,structureddata, +application/vnd.ims.lti.v2.toolsettings+json,application/vnd.ims.lti.v2.toolsettings+json,structureddata, +application/vnd.ims.lti.v2.toolsettings.simple+json,application/vnd.ims.lti.v2.toolsettings.simple+json,structureddata, +application/vnd.informedcontrol.rms+xml,application/vnd.informedcontrol.rms+xml,structureddata, +application/vnd.informix-visionary,application/vnd.informix-visionary,other, +application/vnd.infotech.project,application/vnd.infotech.project,other, +application/vnd.infotech.project+xml,application/vnd.infotech.project+xml,structureddata, +application/vnd.innopath.wamp.notification,application/vnd.innopath.wamp.notification,other, +application/vnd.insors.igm,application/vnd.insors.igm,other, +application/vnd.intercon.formnet,application/vnd.intercon.formnet,other, +application/vnd.intergeo,application/vnd.intergeo,other, +application/vnd.intertrust.digibox,application/vnd.intertrust.digibox,other, +application/vnd.intertrust.nncp,application/vnd.intertrust.nncp,other, +application/vnd.intu.qbo,application/vnd.intu.qbo,other, +application/vnd.intu.qfx,application/vnd.intu.qfx,other, +application/vnd.iptc.g2.catalogitem+xml,application/vnd.iptc.g2.catalogitem+xml,structureddata, +application/vnd.iptc.g2.conceptitem+xml,application/vnd.iptc.g2.conceptitem+xml,structureddata, +application/vnd.iptc.g2.knowledgeitem+xml,application/vnd.iptc.g2.knowledgeitem+xml,structureddata, +application/vnd.iptc.g2.newsitem+xml,application/vnd.iptc.g2.newsitem+xml,structureddata, +application/vnd.iptc.g2.newsmessage+xml,application/vnd.iptc.g2.newsmessage+xml,structureddata, +application/vnd.iptc.g2.packageitem+xml,application/vnd.iptc.g2.packageitem+xml,structureddata, +application/vnd.iptc.g2.planningitem+xml,application/vnd.iptc.g2.planningitem+xml,structureddata, +application/vnd.ipunplugged.rcprofile,application/vnd.ipunplugged.rcprofile,other, +application/vnd.irepository.package+xml,application/vnd.irepository.package+xml,structureddata, +application/vnd.is-xpr,application/vnd.is-xpr,other, +application/vnd.isac.fcs,application/vnd.isac.fcs,other, +application/vnd.jam,application/vnd.jam,other, +application/vnd.japannet-directory-service,application/vnd.japannet-directory-service,other, +application/vnd.japannet-jpnstore-wakeup,application/vnd.japannet-jpnstore-wakeup,other, +application/vnd.japannet-payment-wakeup,application/vnd.japannet-payment-wakeup,other, +application/vnd.japannet-registration,application/vnd.japannet-registration,other, +application/vnd.japannet-registration-wakeup,application/vnd.japannet-registration-wakeup,other, +application/vnd.japannet-setstore-wakeup,application/vnd.japannet-setstore-wakeup,other, +application/vnd.japannet-verification,application/vnd.japannet-verification,other, +application/vnd.japannet-verification-wakeup,application/vnd.japannet-verification-wakeup,other, +application/vnd.jcp.javame.midlet-rms,application/vnd.jcp.javame.midlet-rms,other, +application/vnd.jisp,application/vnd.jisp,other, +application/vnd.joost.joda-archive,application/vnd.joost.joda-archive,other, +application/vnd.jsk.isdn-ngn,application/vnd.jsk.isdn-ngn,other, +application/vnd.kahootz,application/vnd.kahootz,other, +application/vnd.kde.karbon,application/vnd.kde.karbon,other, +application/vnd.kde.kchart,application/vnd.kde.kchart,other, +application/vnd.kde.kformula,application/vnd.kde.kformula,other, +application/vnd.kde.kivio,application/vnd.kde.kivio,other, +application/vnd.kde.kontour,application/vnd.kde.kontour,other, +application/vnd.kde.kpresenter,application/vnd.kde.kpresenter,other, +application/vnd.kde.kspread,application/vnd.kde.kspread,other, +application/vnd.kde.kword,application/vnd.kde.kword,other, +application/vnd.kenameaapp,application/vnd.kenameaapp,other, +application/vnd.kidspiration,application/vnd.kidspiration,other, +application/vnd.kinar,application/vnd.kinar,other, +application/vnd.koan,application/vnd.koan,other, +application/vnd.kodak-descriptor,application/vnd.kodak-descriptor,other, +application/vnd.las.las+xml,application/vnd.las.las+xml,structureddata, +application/vnd.liberty-request+xml,application/vnd.liberty-request+xml,structureddata, +application/vnd.llamagraphics.life-balance.desktop,application/vnd.llamagraphics.life-balance.desktop,other, +application/vnd.llamagraphics.life-balance.exchange+xml,application/vnd.llamagraphics.life-balance.exchange+xml,structureddata, +application/vnd.lotus-1-2-3,application/vnd.lotus-1-2-3,other, +application/vnd.lotus-approach,application/vnd.lotus-approach,other, +application/vnd.lotus-freelance,application/vnd.lotus-freelance,presentation, +application/vnd.lotus-notes,application/vnd.lotus-notes,other, +application/vnd.lotus-organizer,application/vnd.lotus-organizer,other, +application/vnd.lotus-screencam,application/vnd.lotus-screencam,other, +application/vnd.lotus-wordpro,application/vnd.lotus-wordpro,other, +application/vnd.macports.portpkg,application/vnd.macports.portpkg,other, +application/vnd.marlin.drm.actiontoken+xml,application/vnd.marlin.drm.actiontoken+xml,structureddata, +application/vnd.marlin.drm.conftoken+xml,application/vnd.marlin.drm.conftoken+xml,structureddata, +application/vnd.marlin.drm.license+xml,application/vnd.marlin.drm.license+xml,structureddata, +application/vnd.marlin.drm.mdcf,application/vnd.marlin.drm.mdcf,other, +application/vnd.mason+json,application/vnd.mason+json,structureddata, +application/vnd.maxmind.maxmind-db,application/vnd.maxmind.maxmind-db,other, +application/vnd.mcd,application/vnd.mcd,other, +application/vnd.medcalcdata,application/vnd.medcalcdata,other, +application/vnd.mediastation.cdkey,application/vnd.mediastation.cdkey,other, +application/vnd.meridian-slingshot,application/vnd.meridian-slingshot,other, +application/vnd.mfer,application/vnd.mfer,other, +application/vnd.mfmp,application/vnd.mfmp,other, +application/vnd.micrografx-igx,application/vnd.micrografx-igx,other, +application/vnd.micrografx.flo,application/vnd.micrografx.flo,other, +application/vnd.micrografx.igx,application/vnd.micrografx.igx,other, +application/vnd.miele+json,application/vnd.miele+json,structureddata, +application/vnd.mif,application/vnd.mif,other, +application/vnd.mindjet.mindmanager,application/vnd.mindjet.mindmanager,other, +application/vnd.minisoft-hp3000-save,application/vnd.minisoft-hp3000-save,other, +application/vnd.mitsubishi.misty-guard.trustweb,application/vnd.mitsubishi.misty-guard.trustweb,other, +application/vnd.mobius.daf,application/vnd.mobius.daf,other, +application/vnd.mobius.dis,application/vnd.mobius.dis,other, +application/vnd.mobius.mbk,application/vnd.mobius.mbk,other, +application/vnd.mobius.mqy,application/vnd.mobius.mqy,other, +application/vnd.mobius.msl,application/vnd.mobius.msl,other, +application/vnd.mobius.plc,application/vnd.mobius.plc,other, +application/vnd.mobius.txf,application/vnd.mobius.txf,other, +application/vnd.mophun.application,application/vnd.mophun.application,other, +application/vnd.mophun.certificate,application/vnd.mophun.certificate,other, +application/vnd.motorola.flexsuite,application/vnd.motorola.flexsuite,other, +application/vnd.motorola.flexsuite.adsi,application/vnd.motorola.flexsuite.adsi,other, +application/vnd.motorola.flexsuite.fis,application/vnd.motorola.flexsuite.fis,other, +application/vnd.motorola.flexsuite.gotap,application/vnd.motorola.flexsuite.gotap,other, +application/vnd.motorola.flexsuite.kmr,application/vnd.motorola.flexsuite.kmr,other, +application/vnd.motorola.flexsuite.ttc,application/vnd.motorola.flexsuite.ttc,other, +application/vnd.motorola.flexsuite.wem,application/vnd.motorola.flexsuite.wem,other, +application/vnd.motorola.iprm,application/vnd.motorola.iprm,other, +application/vnd.mozilla.xul+xml,if application/vnd.mozilla.xul+xml,structureddata, +application/vnd.ms-3mfdocument,application/vnd.ms-3mfdocument,other, +application/vnd.ms-artgalry,application/vnd.ms-artgalry,other, +application/vnd.ms-asf,application/vnd.ms-asf,other, +application/vnd.ms-cab-compressed,application/vnd.ms-cab-compressed,other, +application/vnd.ms-fontobject,application/vnd.ms-fontobject,other, +application/vnd.ms-htmlhelp,application/vnd.ms-htmlhelp,other, +application/vnd.ms-ims,application/vnd.ms-ims,other, +application/vnd.ms-lrm,application/vnd.ms-lrm,other, +application/vnd.ms-office.activeX+xml,application/vnd.ms-office.activeX+xml,structureddata, +application/vnd.ms-officetheme,application/vnd.ms-officetheme,other, +application/vnd.ms-outlook-pst,application/vnd.ms-outlook-pst,message, +application/vnd.ms-pki.seccat,application/vnd.ms-pki.seccat,other, +application/vnd.ms-pki.stl,application/vnd.ms-pki.stl,other, +application/vnd.ms-playready.initiator+xml,application/vnd.ms-playready.initiator+xml,structureddata, +application/vnd.ms-tnef,application/vnd.ms-tnef,other, +application/vnd.ms-windows.printerpairing,application/vnd.ms-windows.printerpairing,other, +application/vnd.ms-wmdrm.lic-chlg-req,application/vnd.ms-wmdrm.lic-chlg-req,other, +application/vnd.ms-wmdrm.lic-resp,application/vnd.ms-wmdrm.lic-resp,other, +application/vnd.ms-wmdrm.meter-chlg-req,application/vnd.ms-wmdrm.meter-chlg-req,other, +application/vnd.ms-wmdrm.meter-resp,application/vnd.ms-wmdrm.meter-resp,other, +application/vnd.ms-works,application/vnd.ms-works,other, +application/vnd.ms-wpl,application/vnd.ms-wpl,other, +application/vnd.ms-xpsdocument,application/vnd.ms-xpsdocument,other, +application/vnd.mseq,application/vnd.mseq,other, +application/vnd.msign,application/vnd.msign,other, +application/vnd.multiad.creator,application/vnd.multiad.creator,other, +application/vnd.multiad.creator.cif,application/vnd.multiad.creator.cif,other, +application/vnd.music-niff,application/vnd.music-niff,other, +application/vnd.musician,application/vnd.musician,other, +application/vnd.muvee.style,application/vnd.muvee.style,other, +application/vnd.mynfc,application/vnd.mynfc,other, +application/vnd.ncd.control,application/vnd.ncd.control,other, +application/vnd.ncd.reference,application/vnd.ncd.reference,other, +application/vnd.nervana,application/vnd.nervana,other, +application/vnd.netfpx,application/vnd.netfpx,other, +application/vnd.neurolanguage.nlu,application/vnd.neurolanguage.nlu,other, +application/vnd.nintendo.nitro.rom,application/vnd.nintendo.nitro.rom,other, +application/vnd.nintendo.snes.rom,application/vnd.nintendo.snes.rom,other, +application/vnd.nitf,application/vnd.nitf,other, +application/vnd.noblenet-directory,application/vnd.noblenet-directory,other, +application/vnd.noblenet-sealer,application/vnd.noblenet-sealer,other, +application/vnd.noblenet-web,application/vnd.noblenet-web,other, +application/vnd.nokia.catalogs,application/vnd.nokia.catalogs,other, +application/vnd.nokia.conml+wbxml,application/vnd.nokia.conml+wbxml,other, +application/vnd.nokia.conml+xml,application/vnd.nokia.conml+xml,structureddata, +application/vnd.nokia.iptv.config+xml,application/vnd.nokia.iptv.config+xml,structureddata, +application/vnd.nokia.isds-radio-presets,application/vnd.nokia.isds-radio-presets,other, +application/vnd.nokia.landmark+wbxml,application/vnd.nokia.landmark+wbxml,other, +application/vnd.nokia.landmark+xml,application/vnd.nokia.landmark+xml,structureddata, +application/vnd.nokia.landmarkcollection+xml,application/vnd.nokia.landmarkcollection+xml,structureddata, +application/vnd.nokia.n-gage.ac+xml,application/vnd.nokia.n-gage.ac+xml,structureddata, +application/vnd.nokia.n-gage.data,application/vnd.nokia.n-gage.data,other, +application/vnd.nokia.n-gage.symbian.install,application/vnd.nokia.n-gage.symbian.install,other, +application/vnd.nokia.ncd,application/vnd.nokia.ncd,other, +application/vnd.nokia.pcd+wbxml,application/vnd.nokia.pcd+wbxml,other, +application/vnd.nokia.pcd+xml,application/vnd.nokia.pcd+xml,structureddata, +application/vnd.nokia.radio-preset,application/vnd.nokia.radio-preset,other, +application/vnd.nokia.radio-presets,application/vnd.nokia.radio-presets,other, +application/vnd.novadigm.edm,application/vnd.novadigm.edm,other, +application/vnd.novadigm.edx,application/vnd.novadigm.edx,other, +application/vnd.novadigm.ext,application/vnd.novadigm.ext,other, +application/vnd.ntt-local.content-share,application/vnd.ntt-local.content-share,other, +application/vnd.ntt-local.file-transfer,application/vnd.ntt-local.file-transfer,other, +application/vnd.ntt-local.ogw_remote-access,application/vnd.ntt-local.ogw_remote-access,other, +application/vnd.ntt-local.sip-ta_remote,application/vnd.ntt-local.sip-ta_remote,other, +application/vnd.ntt-local.sip-ta_tcp_stream,application/vnd.ntt-local.sip-ta_tcp_stream,other, +application/vnd.oasis.opendocument.chart,application/vnd.oasis.opendocument.chart,other, +application/vnd.oasis.opendocument.chart-template,application/vnd.oasis.opendocument.chart-template,other, +application/vnd.oasis.opendocument.database,application/vnd.oasis.opendocument.database,other, +application/vnd.oasis.opendocument.formula,application/vnd.oasis.opendocument.formula,other, +application/vnd.oasis.opendocument.formula-template,application/vnd.oasis.opendocument.formula-template,other, +application/vnd.oasis.opendocument.graphics,application/vnd.oasis.opendocument.graphics,other, +application/vnd.oasis.opendocument.graphics-template,application/vnd.oasis.opendocument.graphics-template,other, +application/vnd.oasis.opendocument.image,application/vnd.oasis.opendocument.image,other, +application/vnd.oasis.opendocument.image-template,application/vnd.oasis.opendocument.image-template,other, +application/vnd.oasis.opendocument.presentation,application/vnd.oasis.opendocument.presentation,presentation, +application/vnd.oasis.opendocument.presentation-template,application/vnd.oasis.opendocument.presentation-template,presentation, +application/vnd.oasis.opendocument.spreadsheet,application/vnd.oasis.opendocument.spreadsheet,spreadsheet, +application/vnd.oasis.opendocument.spreadsheet-template,application/vnd.oasis.opendocument.spreadsheet-template,spreadsheet, +application/vnd.oasis.opendocument.text,application/vnd.oasis.opendocument.text,program, +application/vnd.oasis.opendocument.text-master,application/vnd.oasis.opendocument.text-master,program, +application/vnd.oasis.opendocument.text-template,application/vnd.oasis.opendocument.text-template,program, +application/vnd.oasis.opendocument.text-web,application/vnd.oasis.opendocument.text-web,program, +application/vnd.obn,application/vnd.obn,other, +application/vnd.oftn.l10n+json,application/vnd.oftn.l10n+json,structureddata, +application/vnd.oipf.contentaccessdownload+xml,application/vnd.oipf.contentaccessdownload+xml,structureddata, +application/vnd.oipf.contentaccessstreaming+xml,application/vnd.oipf.contentaccessstreaming+xml,structureddata, +application/vnd.oipf.cspg-hexbinary,application/vnd.oipf.cspg-hexbinary,other, +application/vnd.oipf.dae.svg+xml,application/vnd.oipf.dae.svg+xml,structureddata, +application/vnd.oipf.dae.xhtml+xml,application/vnd.oipf.dae.xhtml+xml,structureddata, +application/vnd.oipf.mippvcontrolmessage+xml,application/vnd.oipf.mippvcontrolmessage+xml,structureddata, +application/vnd.oipf.pae.gem,application/vnd.oipf.pae.gem,other, +application/vnd.oipf.spdiscovery+xml,application/vnd.oipf.spdiscovery+xml,structureddata, +application/vnd.oipf.spdlist+xml,application/vnd.oipf.spdlist+xml,structureddata, +application/vnd.oipf.ueprofile+xml,application/vnd.oipf.ueprofile+xml,structureddata, +application/vnd.oipf.userprofile+xml,application/vnd.oipf.userprofile+xml,structureddata, +application/vnd.olpc-sugar,application/vnd.olpc-sugar,other, +application/vnd.oma-scws-config,application/vnd.oma-scws-config,other, +application/vnd.oma-scws-http-request,application/vnd.oma-scws-http-request,other, +application/vnd.oma-scws-http-response,application/vnd.oma-scws-http-response,other, +application/vnd.oma.bcast.associated-procedure-parameter+xml,application/vnd.oma.bcast.associated-procedure-parameter+xml,structureddata, +application/vnd.oma.bcast.drm-trigger+xml,application/vnd.oma.bcast.drm-trigger+xml,structureddata, +application/vnd.oma.bcast.imd+xml,application/vnd.oma.bcast.imd+xml,structureddata, +application/vnd.oma.bcast.ltkm,application/vnd.oma.bcast.ltkm,other, +application/vnd.oma.bcast.notification+xml,application/vnd.oma.bcast.notification+xml,structureddata, +application/vnd.oma.bcast.provisioningtrigger,application/vnd.oma.bcast.provisioningtrigger,other, +application/vnd.oma.bcast.sgboot,application/vnd.oma.bcast.sgboot,other, +application/vnd.oma.bcast.sgdd+xml,application/vnd.oma.bcast.sgdd+xml,structureddata, +application/vnd.oma.bcast.sgdu,application/vnd.oma.bcast.sgdu,other, +application/vnd.oma.bcast.simple-symbol-container,application/vnd.oma.bcast.simple-symbol-container,other, +application/vnd.oma.bcast.smartcard-trigger+xml,application/vnd.oma.bcast.smartcard-trigger+xml,structureddata, +application/vnd.oma.bcast.sprov+xml,application/vnd.oma.bcast.sprov+xml,structureddata, +application/vnd.oma.bcast.stkm,application/vnd.oma.bcast.stkm,other, +application/vnd.oma.cab-address-book+xml,application/vnd.oma.cab-address-book+xml,structureddata, +application/vnd.oma.cab-feature-handler+xml,application/vnd.oma.cab-feature-handler+xml,structureddata, +application/vnd.oma.cab-pcc+xml,application/vnd.oma.cab-pcc+xml,structureddata, +application/vnd.oma.cab-subs-invite+xml,application/vnd.oma.cab-subs-invite+xml,structureddata, +application/vnd.oma.cab-user-prefs+xml,application/vnd.oma.cab-user-prefs+xml,structureddata, +application/vnd.oma.dcd,application/vnd.oma.dcd,other, +application/vnd.oma.dcdc,application/vnd.oma.dcdc,other, +application/vnd.oma.dd2+xml,application/vnd.oma.dd2+xml,structureddata, +application/vnd.oma.drm.risd+xml,application/vnd.oma.drm.risd+xml,structureddata, +application/vnd.oma.group-usage-list+xml,application/vnd.oma.group-usage-list+xml,structureddata, +application/vnd.oma.pal+xml,application/vnd.oma.pal+xml,structureddata, +application/vnd.oma.poc.detailed-progress-report+xml,application/vnd.oma.poc.detailed-progress-report+xml,structureddata, +application/vnd.oma.poc.final-report+xml,application/vnd.oma.poc.final-report+xml,structureddata, +application/vnd.oma.poc.groups+xml,application/vnd.oma.poc.groups+xml,structureddata, +application/vnd.oma.poc.invocation-descriptor+xml,application/vnd.oma.poc.invocation-descriptor+xml,structureddata, +application/vnd.oma.poc.optimized-progress-report+xml,application/vnd.oma.poc.optimized-progress-report+xml,structureddata, +application/vnd.oma.push,application/vnd.oma.push,other, +application/vnd.oma.scidm.messages+xml,application/vnd.oma.scidm.messages+xml,structureddata, +application/vnd.oma.xcap-directory+xml,application/vnd.oma.xcap-directory+xml,structureddata, +application/vnd.omads-email+xml,application/vnd.omads-email+xml,structureddata, +application/vnd.omads-file+xml,application/vnd.omads-file+xml,structureddata, +application/vnd.omads-folder+xml,application/vnd.omads-folder+xml,structureddata, +application/vnd.omaloc-supl-init,application/vnd.omaloc-supl-init,other, +application/vnd.openeye.oeb,application/vnd.openeye.oeb,other, +application/vnd.openofficeorg.extension,application/vnd.openofficeorg.extension,other, +application/vnd.openxmlformats-officedocument.custom-properties+xml,application/vnd.openxmlformats-officedocument.custom-properties+xml,document, +application/vnd.openxmlformats-officedocument.customXmlProperties+xml,application/vnd.openxmlformats-officedocument.customXmlProperties+xml,document, +application/vnd.openxmlformats-officedocument.drawing+xml,application/vnd.openxmlformats-officedocument.drawing+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.chart+xml,application/vnd.openxmlformats-officedocument.drawingml.chart+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml,application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml,application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml,application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml,application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml,document, +application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml,application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml,document, +application/vnd.openxmlformats-officedocument.extended-properties+xml,application/vnd.openxmlformats-officedocument.extended-properties+xml,document, +application/vnd.openxmlformats-officedocument.presentationml-template,application/vnd.openxmlformats-officedocument.presentationml-template,document, +application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml,application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.comments+xml,application/vnd.openxmlformats-officedocument.presentationml.comments+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml,application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml,application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml,application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml,application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.presProps+xml,application/vnd.openxmlformats-officedocument.presentationml.presProps+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.slide+xml,application/vnd.openxmlformats-officedocument.presentationml.slide+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml,application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml,application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml,application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml,application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml,application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.tags+xml,application/vnd.openxmlformats-officedocument.presentationml.tags+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.template.main+xml,application/vnd.openxmlformats-officedocument.presentationml.template.main+xml,document, +application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml,application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml,document, +application/vnd.openxmlformats-officedocument.spreadsheetml-template,application/vnd.openxmlformats-officedocument.spreadsheetml-template,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml,application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml,spreadsheet, +application/vnd.openxmlformats-officedocument.theme+xml,application/vnd.openxmlformats-officedocument.theme+xml,document, +application/vnd.openxmlformats-officedocument.themeOverride+xml,application/vnd.openxmlformats-officedocument.themeOverride+xml,document, +application/vnd.openxmlformats-officedocument.vmlDrawing,application/vnd.openxmlformats-officedocument.vmlDrawing,document, +application/vnd.openxmlformats-officedocument.wordprocessingml-template,application/vnd.openxmlformats-officedocument.wordprocessingml-template,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml,document, +application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml,application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml,document, +application/vnd.openxmlformats-package.core-properties+xml,application/vnd.openxmlformats-package.core-properties+xml,structureddata, +application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml,application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml,structureddata, +application/vnd.openxmlformats-package.relationships+xml,application/vnd.openxmlformats-package.relationships+xml,structureddata, +application/vnd.orange.indata,application/vnd.orange.indata,other, +application/vnd.osa.netdeploy,application/vnd.osa.netdeploy,other, +application/vnd.osgeo.mapguide.package,application/vnd.osgeo.mapguide.package,other, +application/vnd.osgi.bundle,application/vnd.osgi.bundle,other, +application/vnd.osgi.dp,application/vnd.osgi.dp,other, +application/vnd.osgi.subsystem,application/vnd.osgi.subsystem,other, +application/vnd.otps.ct-kip+xml,application/vnd.otps.ct-kip+xml,structureddata, +application/vnd.palm,application/vnd.palm,other, +application/vnd.panoply,application/vnd.panoply,other, +application/vnd.paos+xml,application/vnd.paos+xml,structureddata, +application/vnd.paos.xml,application/vnd.paos.xml,other, +application/vnd.pawaafile,application/vnd.pawaafile,other, +application/vnd.pcos,application/vnd.pcos,other, +application/vnd.pg.format,application/vnd.pg.format,other, +application/vnd.pg.osasli,application/vnd.pg.osasli,other, +application/vnd.piaccess.application-licence,application/vnd.piaccess.application-licence,other, +application/vnd.picsel,application/vnd.picsel,other, +application/vnd.pmi.widget,application/vnd.pmi.widget,other, +application/vnd.poc.group-advertisement+xml,application/vnd.poc.group-advertisement+xml,structureddata, +application/vnd.pocketlearn,application/vnd.pocketlearn,other, +application/vnd.powerbuilder6,application/vnd.powerbuilder6,other, +application/vnd.powerbuilder6-s,application/vnd.powerbuilder6-s,other, +application/vnd.powerbuilder7,application/vnd.powerbuilder7,other, +application/vnd.powerbuilder7-s,application/vnd.powerbuilder7-s,other, +application/vnd.powerbuilder75,application/vnd.powerbuilder75,other, +application/vnd.powerbuilder75-s,application/vnd.powerbuilder75-s,other, +application/vnd.preminet,application/vnd.preminet,other, +application/vnd.previewsystems.box,application/vnd.previewsystems.box,other, +application/vnd.proteus.magazine,application/vnd.proteus.magazine,other, +application/vnd.publishare-delta-tree,application/vnd.publishare-delta-tree,other, +application/vnd.pvi.ptid1,application/vnd.pvi.ptid1,other, +application/vnd.pwg-multiplexed,application/vnd.pwg-multiplexed,other, +application/vnd.pwg-xhtml-print+xml,application/vnd.pwg-xhtml-print+xml,structureddata, +application/vnd.qualcomm.brew-app-res,application/vnd.qualcomm.brew-app-res,other, +application/vnd.quark.quarkxpress,application/vnd.quark.quarkxpress,other, +application/vnd.quobject-quoxdocument,application/vnd.quobject-quoxdocument,other, +application/vnd.radisys.moml+xml,application/vnd.radisys.moml+xml,structureddata, +application/vnd.radisys.msml+xml,application/vnd.radisys.msml+xml,structureddata, +application/vnd.radisys.msml-audit+xml,application/vnd.radisys.msml-audit+xml,structureddata, +application/vnd.radisys.msml-audit-conf+xml,application/vnd.radisys.msml-audit-conf+xml,structureddata, +application/vnd.radisys.msml-audit-conn+xml,application/vnd.radisys.msml-audit-conn+xml,structureddata, +application/vnd.radisys.msml-audit-dialog+xml,application/vnd.radisys.msml-audit-dialog+xml,structureddata, +application/vnd.radisys.msml-audit-stream+xml,application/vnd.radisys.msml-audit-stream+xml,structureddata, +application/vnd.radisys.msml-conf+xml,application/vnd.radisys.msml-conf+xml,structureddata, +application/vnd.radisys.msml-dialog+xml,application/vnd.radisys.msml-dialog+xml,structureddata, +application/vnd.radisys.msml-dialog-base+xml,application/vnd.radisys.msml-dialog-base+xml,structureddata, +application/vnd.radisys.msml-dialog-fax-detect+xml,application/vnd.radisys.msml-dialog-fax-detect+xml,structureddata, +application/vnd.radisys.msml-dialog-fax-sendrecv+xml,application/vnd.radisys.msml-dialog-fax-sendrecv+xml,structureddata, +application/vnd.radisys.msml-dialog-group+xml,application/vnd.radisys.msml-dialog-group+xml,structureddata, +application/vnd.radisys.msml-dialog-speech+xml,application/vnd.radisys.msml-dialog-speech+xml,structureddata, +application/vnd.radisys.msml-dialog-transform+xml,application/vnd.radisys.msml-dialog-transform+xml,structureddata, +application/vnd.rainstor.data,application/vnd.rainstor.data,other, +application/vnd.rapid,application/vnd.rapid,other, +application/vnd.realvnc.bed,application/vnd.realvnc.bed,other, +application/vnd.recordare.musicxml,application/vnd.recordare.musicxml,other, +application/vnd.recordare.musicxml+xml,application/vnd.recordare.musicxml+xml,structureddata, +application/vnd.renlearn.rlprint,application/vnd.renlearn.rlprint,other, +application/vnd.rig.cryptonote,application/vnd.rig.cryptonote,other, +application/vnd.rim.cod,application/vnd.rim.cod,other, +application/vnd.rn-realmedia,application/vnd.rn-realmedia,other, +application/vnd.route66.link66+xml,application/vnd.route66.link66+xml,structureddata, +application/vnd.rs-274x,application/vnd.rs-274x,other, +application/vnd.ruckus.download,application/vnd.ruckus.download,other, +application/vnd.s3sms,application/vnd.s3sms,other, +application/vnd.sailingtracker.track,application/vnd.sailingtracker.track,other, +application/vnd.sbm.cid,application/vnd.sbm.cid,other, +application/vnd.sbm.mid2,application/vnd.sbm.mid2,other, +application/vnd.scribus,application/vnd.scribus,other, +application/vnd.sealed-doc,application/vnd.sealed-doc,other, +application/vnd.sealed-eml,application/vnd.sealed-eml,message, +application/vnd.sealed-mht,application/vnd.sealed-mht,other, +application/vnd.sealed-ppt,application/vnd.sealed-ppt,other, +application/vnd.sealed-tiff,application/vnd.sealed-tiff,other, +application/vnd.sealed-xls,application/vnd.sealed-xls,other, +application/vnd.sealed.3df,application/vnd.sealed.3df,other, +application/vnd.sealed.csf,application/vnd.sealed.csf,other, +application/vnd.sealed.doc,application/vnd.sealed.doc,other, +application/vnd.sealed.eml,application/vnd.sealed.eml,other, +application/vnd.sealed.mht,application/vnd.sealed.mht,other, +application/vnd.sealed.net,application/vnd.sealed.net,other, +application/vnd.sealed.ppt,application/vnd.sealed.ppt,other, +application/vnd.sealed.tiff,application/vnd.sealed.tiff,other, +application/vnd.sealed.xls,application/vnd.sealed.xls,other, +application/vnd.sealedmedia.softseal-html,application/vnd.sealedmedia.softseal-html,program, +application/vnd.sealedmedia.softseal-pdf,application/vnd.sealedmedia.softseal-pdf,program, +application/vnd.sealedmedia.softseal.html,application/vnd.sealedmedia.softseal.html,program, +application/vnd.sealedmedia.softseal.pdf,application/vnd.sealedmedia.softseal.pdf,program, +application/vnd.seemail,application/vnd.seemail,other, +application/vnd.sema,application/vnd.sema,other, +application/vnd.semd,application/vnd.semd,other, +application/vnd.semf,application/vnd.semf,other, +application/vnd.shana.informed.formdata,application/vnd.shana.informed.formdata,other, +application/vnd.shana.informed.formtemplate,application/vnd.shana.informed.formtemplate,other, +application/vnd.shana.informed.interchange,application/vnd.shana.informed.interchange,other, +application/vnd.shana.informed.package,application/vnd.shana.informed.package,other, +application/vnd.simtech-mindmapper,application/vnd.simtech-mindmapper,other, +application/vnd.siren+json,application/vnd.siren+json,structureddata, +application/vnd.smaf,application/vnd.smaf,other, +application/vnd.smart.notebook,application/vnd.smart.notebook,other, +application/vnd.smart.teacher,application/vnd.smart.teacher,other, +application/vnd.software602.filler.form+xml,application/vnd.software602.filler.form+xml,structureddata, +application/vnd.software602.filler.form-xml-zip,application/vnd.software602.filler.form-xml-zip,bundle, +application/vnd.solent.sdkm+xml,application/vnd.solent.sdkm+xml,structureddata, +application/vnd.spotfire.dxp,application/vnd.spotfire.dxp,other, +application/vnd.spotfire.sfs,application/vnd.spotfire.sfs,other, +application/vnd.sss-cod,application/vnd.sss-cod,other, +application/vnd.sss-dtf,application/vnd.sss-dtf,other, +application/vnd.sss-ntf,application/vnd.sss-ntf,other, +application/vnd.stardivision.calc,application/vnd.stardivision.calc,other, +application/vnd.stardivision.draw,application/vnd.stardivision.draw,other, +application/vnd.stardivision.impress,application/vnd.stardivision.impress,other, +application/vnd.stardivision.math,application/vnd.stardivision.math,other, +application/vnd.stardivision.writer,application/vnd.stardivision.writer,other, +application/vnd.stardivision.writer-global,application/vnd.stardivision.writer-global,other, +application/vnd.stepmania.package,application/vnd.stepmania.package,other, +application/vnd.stepmania.stepchart,application/vnd.stepmania.stepchart,other, +application/vnd.street-stream,application/vnd.street-stream,other, +application/vnd.sun.wadl+xml,application/vnd.sun.wadl+xml,structureddata, +application/vnd.sun.xml.calc,application/vnd.sun.xml.calc,other, +application/vnd.sun.xml.calc.template,application/vnd.sun.xml.calc.template,other, +application/vnd.sun.xml.draw,application/vnd.sun.xml.draw,other, +application/vnd.sun.xml.draw.template,application/vnd.sun.xml.draw.template,other, +application/vnd.sun.xml.impress,application/vnd.sun.xml.impress,other, +application/vnd.sun.xml.impress.template,application/vnd.sun.xml.impress.template,other, +application/vnd.sun.xml.math,application/vnd.sun.xml.math,other, +application/vnd.sun.xml.writer,application/vnd.sun.xml.writer,other, +application/vnd.sun.xml.writer.global,application/vnd.sun.xml.writer.global,other, +application/vnd.sun.xml.writer.template,application/vnd.sun.xml.writer.template,other, +application/vnd.sus-calendar,application/vnd.sus-calendar,other, +application/vnd.svd,application/vnd.svd,other, +application/vnd.swiftview-ics,application/vnd.swiftview-ics,other, +application/vnd.symbian.install,application/vnd.symbian.install,other, +application/vnd.syncml+xml,application/vnd.syncml+xml,structureddata, +application/vnd.syncml.dm+wbxml,application/vnd.syncml.dm+wbxml,other, +application/vnd.syncml.dm+xml,application/vnd.syncml.dm+xml,structureddata, +application/vnd.syncml.dm.notification,application/vnd.syncml.dm.notification,other, +application/vnd.syncml.dmddf+wbxml,application/vnd.syncml.dmddf+wbxml,other, +application/vnd.syncml.dmddf+xml,application/vnd.syncml.dmddf+xml,structureddata, +application/vnd.syncml.dmtnds+wbxml,application/vnd.syncml.dmtnds+wbxml,other, +application/vnd.syncml.dmtnds+xml,application/vnd.syncml.dmtnds+xml,structureddata, +application/vnd.syncml.ds.notification,application/vnd.syncml.ds.notification,other, +application/vnd.tao.intent-module-archive,application/vnd.tao.intent-module-archive,other, +application/vnd.tcpdump.pcap,application/vnd.tcpdump.pcap,other, +application/vnd.tmobile-livetv,application/vnd.tmobile-livetv,other, +application/vnd.trid.tpt,application/vnd.trid.tpt,other, +application/vnd.triscape.mxs,application/vnd.triscape.mxs,other, +application/vnd.trueapp,application/vnd.trueapp,other, +application/vnd.truedoc,application/vnd.truedoc,other, +application/vnd.ubisoft.webplayer,application/vnd.ubisoft.webplayer,other, +application/vnd.ufdl,application/vnd.ufdl,other, +application/vnd.uiq.theme,application/vnd.uiq.theme,other, +application/vnd.umajin,application/vnd.umajin,other, +application/vnd.unity,application/vnd.unity,other, +application/vnd.uoml+xml,application/vnd.uoml+xml,structureddata, +application/vnd.uplanet.alert,application/vnd.uplanet.alert,other, +application/vnd.uplanet.alert-wbxml,application/vnd.uplanet.alert-wbxml,other, +application/vnd.uplanet.bearer-choice,application/vnd.uplanet.bearer-choice,other, +application/vnd.uplanet.bearer-choice-wbxml,application/vnd.uplanet.bearer-choice-wbxml,other, +application/vnd.uplanet.cacheop,application/vnd.uplanet.cacheop,other, +application/vnd.uplanet.cacheop-wbxml,application/vnd.uplanet.cacheop-wbxml,other, +application/vnd.uplanet.channel,application/vnd.uplanet.channel,other, +application/vnd.uplanet.channel-wbxml,application/vnd.uplanet.channel-wbxml,other, +application/vnd.uplanet.list,application/vnd.uplanet.list,other, +application/vnd.uplanet.list-wbxml,application/vnd.uplanet.list-wbxml,other, +application/vnd.uplanet.listcmd,application/vnd.uplanet.listcmd,other, +application/vnd.uplanet.listcmd-wbxml,application/vnd.uplanet.listcmd-wbxml,other, +application/vnd.uplanet.signal,application/vnd.uplanet.signal,other, +application/vnd.valve.source.material,application/vnd.valve.source.material,other, +application/vnd.vcx,application/vnd.vcx,other, +application/vnd.vd-study,application/vnd.vd-study,other, +application/vnd.vectorworks,application/vnd.vectorworks,other, +application/vnd.verimatrix.vcas,application/vnd.verimatrix.vcas,other, +application/vnd.vidsoft.vidconference,application/vnd.vidsoft.vidconference,other, +application/vnd.visionary,application/vnd.visionary,other, +application/vnd.vividence.scriptfile,application/vnd.vividence.scriptfile,other, +application/vnd.vsf,application/vnd.vsf,other, +application/vnd.wap-slc,application/vnd.wap-slc,other, +application/vnd.wap-wbxml,application/vnd.wap-wbxml,structureddata, +application/vnd.wap.sic,application/vnd.wap.sic,other, +application/vnd.wap.slc,application/vnd.wap.slc,other, +application/vnd.wap.wbxml,application/vnd.wap.wbxml,structureddata, +application/vnd.wap.wmlc,application/vnd.wap.wmlc,other, +application/vnd.wap.wmlscriptc,application/vnd.wap.wmlscriptc,other, +application/vnd.webturbo,application/vnd.webturbo,other, +application/vnd.wfa.p2p,application/vnd.wfa.p2p,other, +application/vnd.wfa.wsc,application/vnd.wfa.wsc,other, +application/vnd.windows.devicepairing,application/vnd.windows.devicepairing,other, +application/vnd.wmc,application/vnd.wmc,other, +application/vnd.wmf.bootstrap,application/vnd.wmf.bootstrap,other, +application/vnd.wolfram.mathematica,application/vnd.wolfram.mathematica,other, +application/vnd.wolfram.mathematica.package,application/vnd.wolfram.mathematica.package,other, +application/vnd.wolfram.player,application/vnd.wolfram.player,other, +application/vnd.wordperfect,application/vnd.wordperfect,other, +application/vnd.wqd,application/vnd.wqd,other, +application/vnd.wrq-hp3000-labelled,application/vnd.wrq-hp3000-labelled,other, +application/vnd.wt.stf,application/vnd.wt.stf,other, +application/vnd.wv.csp+wbxml,application/vnd.wv.csp+wbxml,other, +application/vnd.wv.csp+xml,application/vnd.wv.csp+xml,structureddata, +application/vnd.wv.ssp+xml,application/vnd.wv.ssp+xml,structureddata, +application/vnd.xacml+json,application/vnd.xacml+json,structureddata, +application/vnd.xara,application/vnd.xara,other, +application/vnd.xfdl,application/vnd.xfdl,other, +application/vnd.xfdl.webform,application/vnd.xfdl.webform,other, +application/vnd.xmi+xml,application/vnd.xmi+xml,structureddata, +application/vnd.xmpie.cpkg,application/vnd.xmpie.cpkg,other, +application/vnd.xmpie.dpkg,application/vnd.xmpie.dpkg,other, +application/vnd.xmpie.plan,application/vnd.xmpie.plan,other, +application/vnd.xmpie.ppkg,application/vnd.xmpie.ppkg,other, +application/vnd.xmpie.xlim,application/vnd.xmpie.xlim,other, +application/vnd.yamaha.hv-dic,application/vnd.yamaha.hv-dic,other, +application/vnd.yamaha.hv-script,application/vnd.yamaha.hv-script,other, +application/vnd.yamaha.hv-voice,application/vnd.yamaha.hv-voice,other, +application/vnd.yamaha.openscoreformat,application/vnd.yamaha.openscoreformat,other, +application/vnd.yamaha.openscoreformat.osfpvg+xml,application/vnd.yamaha.openscoreformat.osfpvg+xml,structureddata, +application/vnd.yamaha.remote-setup,application/vnd.yamaha.remote-setup,other, +application/vnd.yamaha.smaf-audio,application/vnd.yamaha.smaf-audio,other, +application/vnd.yamaha.smaf-phrase,application/vnd.yamaha.smaf-phrase,other, +application/vnd.yamaha.through-ngn,application/vnd.yamaha.through-ngn,other, +application/vnd.yamaha.tunnel-udpencap,application/vnd.yamaha.tunnel-udpencap,other, +application/vnd.yaoweme,application/vnd.yaoweme,other, +application/vnd.yellowriver-custom-menu,application/vnd.yellowriver-custom-menu,other, +application/vnd.zul,application/vnd.zul,other, +application/vnd.zzazz.deck+xml,application/vnd.zzazz.deck+xml,structureddata, +application/voicexml+xml,application/voicexml+xml,structureddata, +application/vq-rtcpxr,application/vq-rtcpxr,other, +application/vwg-multiplexed,application/vwg-multiplexed,other, +application/watcherinfo+xml,application/watcherinfo+xml,structureddata, +application/whoispp-query,application/whoispp-query,other, +application/whoispp-response,application/whoispp-response,other, +application/winhlp,application/winhlp,other, +application/wita,application/wita,other, +application/wordperfect5.1,application/wordperfect5.1,other, +application/wsdl+xml,application/wsdl+xml,structureddata, +application/wspolicy+xml,application/wspolicy+xml,structureddata, +application/x-123,application/x-123,spreadsheet, +application/x-7z-compressed,application/x-7z-compressed,archive, +application/x-abiword,application/x-abiword,other, +application/x-ace-compressed,application/x-ace-compressed,other, +application/x-adobe-indesign,application/x-adobe-indesign,other, +application/x-adobe-indesign-interchange,application/x-adobe-indesign-interchange,other, +application/x-apple-diskimage,application/x-apple-diskimage,other, +application/x-appleworks,application/x-appleworks,other, +application/x-archive,application/x-archive,bundle, +application/x-arj,application/x-arj,other, +application/x-authorware-bin,application/x-authorware-bin,other, +application/x-authorware-map,application/x-authorware-map,other, +application/x-authorware-seg,application/x-authorware-seg,other, +application/x-bcpio,application/x-bcpio,other, +application/x-berkeley-db,application/x-berkeley-db,other, +application/x-bibtex-text-file,application/x-bibtex-text-file,structureddata, +application/x-bittorrent,application/x-bittorrent,other, +application/x-bplist,application/x-bplist,other, +application/x-bzip,application/x-bzip,bundle, +application/x-bzip2,application/x-bzip2,bundle, +application/x-cdlink,application/x-cdlink,other, +application/x-chat,application/x-chat,other, +application/x-chess-pgn,application/x-chess-pgn,other, +application/x-chrome-package,application/x-chrome-package,other, +application/x-coredump,application/x-coredump,other, +application/x-corelpresentations,application/x-corelpresentations,other, +application/x-cpio,application/x-cpio,other, +application/x-csh,application/x-csh,program, +application/x-debian-package,application/x-debian-package,other, +application/x-dex,application/x-dex,other, +application/x-director,application/x-director,other, +application/x-doom,application/x-doom,other, +application/x-dtbncx+xml,application/x-dtbncx+xml,structureddata, +application/x-dtbook+xml,application/x-dtbook+xml,structureddata, +application/x-dtbresource+xml,application/x-dtbresource+xml,structureddata, +application/x-dvi,application/x-dvi,other, +application/x-elc,application/x-elc,other, +application/x-elf,application/x-elf,other, +application/x-emf,application/x-emf,other, +application/x-executable,application/x-executable,program, +application/x-fictionbook+xml,application/x-fictionbook+xml,program, +application/x-filemaker,application/x-filemaker,other, +application/x-font-adobe-metric,application/x-font-adobe-metric,other, +application/x-font-bdf,application/x-font-bdf,other, +application/x-font-dos,application/x-font-dos,other, +application/x-font-framemaker,application/x-font-framemaker,other, +application/x-font-ghostscript,application/x-font-ghostscript,other, +application/x-font-libgrx,application/x-font-libgrx,other, +application/x-font-linux-psf,application/x-font-linux-psf,other, +application/x-font-otf,application/x-font-otf,other, +application/x-font-pcf,application/x-font-pcf,other, +application/x-font-printer-metric,application/x-font-printer-metric,other, +application/x-font-snf,application/x-font-snf,other, +application/x-font-speedo,application/x-font-speedo,other, +application/x-font-sunos-news,application/x-font-sunos-news,other, +application/x-font-ttf,application/x-font-ttf,other, +application/x-font-type1,application/x-font-type1,other, +application/x-font-vfont,application/x-font-vfont,other, +application/x-foxmail,application/x-foxmail,other, +application/x-futuresplash,application/x-futuresplash,other, +application/x-gnucash,application/x-gnucash,other, +application/x-gnumeric,application/x-gnumeric,other, +application/x-hdf,application/x-hdf,other, +application/x-hwp,application/x-hwp,other, +application/x-ibooks+zip,application/x-ibooks+zip,bundle, +application/x-iso9660-image,application/x-iso9660-image,image, +application/x-itunes-ipa,application/x-itunes-ipa,other, +application/x-java-jnilib,application/x-java-jnilib,other, +application/x-java-jnlp-file,application/x-java-jnlp-file,other, +application/x-java-pack200,application/x-java-pack200,other, +application/x-kdelnk,application/x-kdelnk,other, +application/x-killustrator,application/x-killustrator,other, +application/x-lha,application/x-lha,other, +application/x-lharc,application/x-lharc,other, +application/x-matroska,application/x-matroska,other, +application/x-mif,application/x-mif,other, +application/x-mobipocket-ebook,application/x-mobipocket-ebook,other, +application/x-ms-application,application/x-ms-application,other, +application/x-ms-wmd,application/x-ms-wmd,other, +application/x-ms-wmz,application/x-ms-wmz,other, +application/x-ms-xbap,application/x-ms-xbap,other, +application/x-msaccess,application/x-msaccess,other, +application/x-msbinder,application/x-msbinder,other, +application/x-mscardfile,application/x-mscardfile,other, +application/x-msclip,application/x-msclip,other, +application/x-msdownload,application/x-msdownload,executable, +application/x-msdownload;format=pe,application/x-msdownload;format=pe,executable, +application/x-msdownload;format=pe-arm7,application/x-msdownload;format=pe-arm7,executable, +application/x-msdownload;format=pe-armLE,application/x-msdownload;format=pe-armLE,executable, +application/x-msdownload;format=pe-itanium,application/x-msdownload;format=pe-itanium,executable, +application/x-msdownload;format=pe32,application/x-msdownload;format=pe32,executable, +application/x-msdownload;format=pe64,application/x-msdownload;format=pe64,executable, +application/x-msmediaview,application/x-msmediaview,other, +application/x-msmetafile,application/x-msmetafile,other, +application/x-msmoney,application/x-msmoney,other, +application/x-mspublisher,application/x-mspublisher,other, +application/x-msschedule,application/x-msschedule,other, +application/x-msterminal,application/x-msterminal,other, +application/x-mswrite,application/x-mswrite,document, +application/x-netcdf,application/x-netcdf,other, +application/x-object,application/x-object,other, +application/x-pkcs12,application/x-pkcs12,other, +application/x-pkcs7-certificates,application/x-pkcs7-certificates,other, +application/x-pkcs7-certreqresp,application/x-pkcs7-certreqresp,other, +application/x-project,application/x-project,other, +application/x-prt,application/x-prt,other, +application/x-quattro-pro,application/x-quattro-pro,other, +application/x-roxio-toast,application/x-roxio-toast,other, +application/x-rpm,application/x-rpm,other, +application/x-sas,application/x-sas,other, +application/x-sas-access,application/x-sas-access,other, +application/x-sas-audit,application/x-sas-audit,other, +application/x-sas-backup,application/x-sas-backup,other, +application/x-sas-catalog,application/x-sas-catalog,other, +application/x-sas-data,application/x-sas-data,other, +application/x-sas-data-index,application/x-sas-data-index,other, +application/x-sas-dmdb,application/x-sas-dmdb,other, +application/x-sas-fdb,application/x-sas-fdb,other, +application/x-sas-itemstor,application/x-sas-itemstor,other, +application/x-sas-mddb,application/x-sas-mddb,other, +application/x-sas-program-data,application/x-sas-program-data,other, +application/x-sas-putility,application/x-sas-putility,other, +application/x-sas-transport,application/x-sas-transport,other, +application/x-sas-utility,application/x-sas-utility,other, +application/x-sas-view,application/x-sas-view,other, +application/x-sc,application/x-sc,other, +application/x-shar,application/x-shar,other, +application/x-sharedlib,application/x-sharedlib,other, +application/x-silverlight-app,application/x-silverlight-app,other, +application/x-staroffice-template,application/x-staroffice-template,other, +application/x-stuffit,application/x-stuffit,other, +application/x-stuffitx,application/x-stuffitx,other, +application/x-sv4cpio,application/x-sv4cpio,other, +application/x-sv4crc,application/x-sv4crc,other, +application/x-tcl,application/x-tcl,other, +application/x-tex-tfm,application/x-tex-tfm,other, +application/x-tika-iworks-protected,application/x-tika-iworks-protected,other, +application/x-tika-java-enterprise-archive,application/x-tika-java-enterprise-archive,other, +application/x-tika-java-web-archive,application/x-tika-java-web-archive,other, +application/x-tika-msoffice,application/x-tika-msoffice,other, +application/x-tika-msoffice-embedded,application/x-tika-msoffice-embedded,other, +application/x-tika-msoffice-embedded;format=comp_obj,application/x-tika-msoffice-embedded;format=comp_obj,other, +application/x-tika-msoffice-embedded;format=ole10_native,application/x-tika-msoffice-embedded;format=ole10_native,other, +application/x-tika-msworks-spreadsheet,application/x-tika-msworks-spreadsheet,other, +application/x-tika-ooxml,application/x-tika-ooxml,other, +application/x-tika-ooxml-protected,application/x-tika-ooxml-protected,other, +application/x-tika-unix-dump,application/x-tika-unix-dump,other, +application/x-troff,application/x-troff,other, +application/x-troff-me,application/x-troff-me,other, +application/x-troff-mes,application/x-troff-mes,other, +application/x-uc2-compressed,application/x-uc2-compressed,other, +application/x-ustar,application/x-ustar,other, +application/x-vmdk,application/x-vmdk,other, +application/x-wais-source,application/x-wais-source,other, +application/x-webarchive,application/x-webarchive,other, +application/x-www-form-urlencoded,application/x-www-form-urlencoded,other, +application/x-x509-ca-cert,application/x-x509-ca-cert,other, +application/x-xfig,application/x-xfig,other, +application/x-xmind,application/x-xmind,other, +application/x-xpinstall,application/x-xpinstall,other, +application/x-xz,application/x-xz,other, +application/x-zoo,application/x-zoo,other, +application/x400-bp,application/x400-bp,other, +application/xacml+xml,application/xacml+xml,structureddata, +application/xcap-att+xml,application/xcap-att+xml,structureddata, +application/xcap-caps+xml,application/xcap-caps+xml,structureddata, +application/xcap-diff+xml,application/xcap-diff+xml,structureddata, +application/xcap-el+xml,application/xcap-el+xml,structureddata, +application/xcap-error+xml,application/xcap-error+xml,structureddata, +application/xcap-ns+xml,application/xcap-ns+xml,structureddata, +application/xcon-conference-info+xml,application/xcon-conference-info+xml,structureddata, +application/xcon-conference-info-diff+xml,application/xcon-conference-info-diff+xml,structureddata, +application/xenc+xml,application/xenc+xml,structureddata, +application/xhtml-voice+xml,application/xhtml-voice+xml,structureddata, +application/xml,application/xml,other, +application/xml-dtd,application/xml-dtd,other, +application/xml-external-parsed-entity,application/xml-external-parsed-entity,other, +application/xml-patch+xml,application/xml-patch+xml,structureddata, +application/xmpp+xml,application/xmpp+xml,structureddata, +application/xop+xml,application/xop+xml,structureddata, +application/xquery,application/xquery,other, +application/xslt+xml,application/xslt+xml,structureddata, +application/xspf+xml,application/xspf+xml,structureddata, +application/xv+xml,application/xv+xml,structureddata, +application/yang,application/yang,other, +application/yin+xml,application/yin+xml,structureddata, +application/zlib,application/zlib,other, +audio/1d-interleaved-parityfec,audio/1d-interleaved-parityfec,audio, +audio/32kadpcm,audio/32kadpcm,audio, +audio/3gpp,audio/3gpp,audio, +audio/3gpp2,audio/3gpp2,audio, +audio/ac3,audio/ac3,audio, +audio/adpcm,audio/adpcm,audio, +audio/amr,audio/amr,audio, +audio/amr-wb,audio/amr-wb,audio, +audio/amr-wb+,audio/amr-wb+,audio, +audio/aptx,audio/aptx,audio, +audio/asc,audio/asc,audio, +audio/ATRAC-ADVANCED-LOSSLESS,audio/ATRAC-ADVANCED-LOSSLESS,audio, +audio/ATRAC-X,audio/ATRAC-X,audio, +audio/ATRAC3,audio/ATRAC3,audio, +audio/bv16,audio/bv16,audio, +audio/bv32,audio/bv32,audio, +audio/clearmode,audio/clearmode,audio, +audio/cn,audio/cn,audio, +audio/dat12,audio/dat12,audio, +audio/dls,audio/dls,audio, +audio/dsr-es201108,audio/dsr-es201108,audio, +audio/dsr-es202050,audio/dsr-es202050,audio, +audio/dsr-es202211,audio/dsr-es202211,audio, +audio/dsr-es202212,audio/dsr-es202212,audio, +audio/DV,audio/DV,audio, +audio/dvi4,audio/dvi4,audio, +audio/eac3,audio/eac3,audio, +audio/encaprtp,audio/encaprtp,audio, +audio/evrc,audio/evrc,audio, +audio/evrc-qcp,audio/evrc-qcp,audio, +audio/evrc0,audio/evrc0,audio, +audio/evrc1,audio/evrc1,audio, +audio/evrcb,audio/evrcb,audio, +audio/evrcb0,audio/evrcb0,audio, +audio/evrcb1,audio/evrcb1,audio, +audio/EVRCNW,audio/EVRCNW,audio, +audio/EVRCNW0,audio/EVRCNW0,audio, +audio/EVRCNW1,audio/EVRCNW1,audio, +audio/evrcwb,audio/evrcwb,audio, +audio/evrcwb0,audio/evrcwb0,audio, +audio/evrcwb1,audio/evrcwb1,audio, +audio/example,audio/example,audio, +audio/fwdred,audio/fwdred,audio, +audio/g719,audio/g719,audio, +audio/G721,audio/G721,audio, +audio/g722,audio/g722,audio, +audio/g7221,audio/g7221,audio, +audio/g723,audio/g723,audio, +audio/g726-16,audio/g726-16,audio, +audio/g726-24,audio/g726-24,audio, +audio/g726-32,audio/g726-32,audio, +audio/g726-40,audio/g726-40,audio, +audio/g728,audio/g728,audio, +audio/g729,audio/g729,audio, +audio/g7291,audio/g7291,audio, +audio/g729d,audio/g729d,audio, +audio/g729e,audio/g729e,audio, +audio/gsm,audio/gsm,audio, +audio/gsm-efr,audio/gsm-efr,audio, +audio/GSM-HR-08,audio/GSM-HR-08,audio, +audio/ilbc,audio/ilbc,audio, +audio/ip-mr_v2.5,audio/ip-mr_v2.5,audio, +audio/l16,audio/l16,audio, +audio/l20,audio/l20,audio, +audio/l24,audio/l24,audio, +audio/l8,audio/l8,audio, +audio/lpc,audio/lpc,audio, +audio/midi,audio/midi,audio, +audio/mobile-xmf,audio/mobile-xmf,audio, +audio/mp4a-latm,audio/mp4a-latm,audio, +audio/mpa,audio/mpa,audio, +audio/mpa-robust,audio/mpa-robust,audio, +audio/mpeg4-generic,audio/mpeg4-generic,audio, +audio/opus,audio/opus,audio, +audio/parityfec,audio/parityfec,audio, +audio/pcma,audio/pcma,audio, +audio/pcma-wb,audio/pcma-wb,audio, +audio/pcmu,audio/pcmu,audio, +audio/pcmu-wb,audio/pcmu-wb,audio, +audio/prs.sid,audio/prs.sid,audio, +audio/qcelp,audio/qcelp,audio, +audio/raptorfec,audio/raptorfec,audio, +audio/red,audio/red,audio, +audio/rtp-enc-aescm128,audio/rtp-enc-aescm128,audio, +audio/rtp-midi,audio/rtp-midi,audio, +audio/rtploopback,audio/rtploopback,audio, +audio/rtx,audio/rtx,audio, +audio/smv,audio/smv,audio, +audio/smv-qcp,audio/smv-qcp,audio, +audio/smv0,audio/smv0,audio, +audio/sp-midi,audio/sp-midi,audio, +audio/speex,audio/speex,audio, +audio/t140c,audio/t140c,audio, +audio/t38,audio/t38,audio, +audio/telephone-event,audio/telephone-event,audio, +audio/tone,audio/tone,audio, +audio/UEMCLIP,audio/UEMCLIP,audio, +audio/ulpfec,audio/ulpfec,audio, +audio/vdvi,audio/vdvi,audio, +audio/vmr-wb,audio/vmr-wb,audio, +audio/vnd.3gpp.iufp,audio/vnd.3gpp.iufp,audio, +audio/vnd.4sb,audio/vnd.4sb,audio, +audio/vnd.audiokoz,audio/vnd.audiokoz,audio, +audio/vnd.celp,audio/vnd.celp,audio, +audio/vnd.cisco.nse,audio/vnd.cisco.nse,audio, +audio/vnd.cmles.radio-events,audio/vnd.cmles.radio-events,audio, +audio/vnd.cns.anp1,audio/vnd.cns.anp1,audio, +audio/vnd.cns.inf1,audio/vnd.cns.inf1,audio, +audio/vnd.dece.audio,audio/vnd.dece.audio,audio, +audio/vnd.digital-winds,audio/vnd.digital-winds,audio, +audio/vnd.dlna.adts,audio/vnd.dlna.adts,audio, +audio/vnd.dolby.heaac.1,audio/vnd.dolby.heaac.1,audio, +audio/vnd.dolby.heaac.2,audio/vnd.dolby.heaac.2,audio, +audio/vnd.dolby.mlp,audio/vnd.dolby.mlp,audio, +audio/vnd.dolby.mps,audio/vnd.dolby.mps,audio, +audio/vnd.dolby.pl2,audio/vnd.dolby.pl2,audio, +audio/vnd.dolby.pl2x,audio/vnd.dolby.pl2x,audio, +audio/vnd.dolby.pl2z,audio/vnd.dolby.pl2z,audio, +audio/vnd.dolby.pulse.1,audio/vnd.dolby.pulse.1,audio, +audio/vnd.dra,audio/vnd.dra,audio, +audio/vnd.dts,audio/vnd.dts,audio, +audio/vnd.dts.hd,audio/vnd.dts.hd,audio, +audio/vnd.dvb.file,audio/vnd.dvb.file,audio, +audio/vnd.everad.plj,audio/vnd.everad.plj,audio, +audio/vnd.hns.audio,audio/vnd.hns.audio,audio, +audio/vnd.lucent.voice,audio/vnd.lucent.voice,audio, +audio/vnd.ms-playready.media.pya,audio/vnd.ms-playready.media.pya,audio, +audio/vnd.nokia.mobile-xmf,audio/vnd.nokia.mobile-xmf,audio, +audio/vnd.nortel.vbk,audio/vnd.nortel.vbk,audio, +audio/vnd.nuera.ecelp4800,audio/vnd.nuera.ecelp4800,audio, +audio/vnd.nuera.ecelp7470,audio/vnd.nuera.ecelp7470,audio, +audio/vnd.nuera.ecelp9600,audio/vnd.nuera.ecelp9600,audio, +audio/vnd.octel.sbc,audio/vnd.octel.sbc,audio, +audio/vnd.qcelp,audio/vnd.qcelp,audio, +audio/vnd.rhetorex.32kadpcm,audio/vnd.rhetorex.32kadpcm,audio, +audio/vnd.rip,audio/vnd.rip,audio, +audio/vnd.sealedmedia.softseal-mpeg,audio/vnd.sealedmedia.softseal-mpeg,audio, +audio/vnd.sealedmedia.softseal.mpeg,audio/vnd.sealedmedia.softseal.mpeg,audio, +audio/vnd.vmx.cvsd,audio/vnd.vmx.cvsd,audio, +audio/vorbis-config,audio/vorbis-config,audio, +audio/x-aac,audio/x-aac,audio, +audio/x-adbcm,audio/x-adbcm,audio, +audio/x-dec-adbcm,audio/x-dec-adbcm,audio, +audio/x-dec-basic,audio/x-dec-basic,audio, +audio/x-matroska,audio/x-matroska,audio, +audio/x-mod,audio/x-mod,audio, +audio/x-mpegurl,audio/x-mpegurl,audio, +audio/x-ms-wax,audio/x-ms-wax,audio, +audio/x-oggflac,audio/x-oggflac,audio, +audio/x-oggpcm,audio/x-oggpcm,audio, +audio/x-pn-realaudio,audio/x-pn-realaudio,audio, +audio/x-pn-realaudio-plugin,audio/x-pn-realaudio-plugin,audio, +chemical/x-cdx,chemical/x-cdx,other, +chemical/x-cif,chemical/x-cif,other, +chemical/x-cmdf,chemical/x-cmdf,other, +chemical/x-cml,chemical/x-cml,structureddata, +chemical/x-csml,chemical/x-csml,other, +chemical/x-pdb,chemical/x-pdb,other, +chemical/x-xyz,chemical/x-xyz,other, +image/example,image/example,image, +image/fits,image/fits,image, +image/g3fax,image/g3fax,image, +image/jpm,image/jpm,image, +image/jpx,image/jpx,image, +image/naplps,image/naplps,image, +image/nitf,image/nitf,image, +image/prs.btif,image/prs.btif,image, +image/prs.pti,image/prs.pti,image, +image/pwg-raster,image/pwg-raster,image, +image/t38,image/t38,image, +image/tiff-fx,image/tiff-fx,image, +image/vnd-djvu,image/vnd-djvu,image, +image/vnd-svf,image/vnd-svf,image, +image/vnd-wap-wbmp,image/vnd-wap-wbmp,image, +image/vnd.airzip.accelerator.azv,image/vnd.airzip.accelerator.azv,image, +image/vnd.cns.inf2,image/vnd.cns.inf2,image, +image/vnd.dece.graphic,image/vnd.dece.graphic,image, +image/vnd.djvu,image/vnd.djvu,image, +image/vnd.dvb.subtitle,image/vnd.dvb.subtitle,image, +image/vnd.dxf,image/vnd.dxf,image, +image/vnd.fastbidsheet,image/vnd.fastbidsheet,image, +image/vnd.fpx,image/vnd.fpx,image, +image/vnd.fst,image/vnd.fst,image, +image/vnd.fujixerox.edmics-mmr,image/vnd.fujixerox.edmics-mmr,image, +image/vnd.fujixerox.edmics-rlc,image/vnd.fujixerox.edmics-rlc,image, +image/vnd.globalgraphics.pgb,image/vnd.globalgraphics.pgb,image, +image/vnd.microsoft.icon,image/vnd.microsoft.icon,image, +image/vnd.mix,image/vnd.mix,image, +image/vnd.ms-modi,image/vnd.ms-modi,image, +image/vnd.net-fpx,image/vnd.net-fpx,image, +image/vnd.radiance,image/vnd.radiance,image, +image/vnd.sealed-png,image/vnd.sealed-png,image, +image/vnd.sealed.png,image/vnd.sealed.png,image, +image/vnd.sealedmedia.softseal-gif,image/vnd.sealedmedia.softseal-gif,image, +image/vnd.sealedmedia.softseal-jpg,image/vnd.sealedmedia.softseal-jpg,image, +image/vnd.sealedmedia.softseal.gif,image/vnd.sealedmedia.softseal.gif,image, +image/vnd.sealedmedia.softseal.jpg,image/vnd.sealedmedia.softseal.jpg,image, +image/vnd.svf,image/vnd.svf,image, +image/vnd.tencent.tap,image/vnd.tencent.tap,image, +image/vnd.valve.source.texture,image/vnd.valve.source.texture,image, +image/vnd.wap.wbmp,image/vnd.wap.wbmp,image, +image/vnd.xiff,image/vnd.xiff,image, +image/x-cmx,image/x-cmx,image, +image/x-freehand,image/x-freehand,image, +image/x-jp2-codestream,image/x-jp2-codestream,image, +image/x-jp2-container,image/x-jp2-container,image, +image/x-ms-bmp,image/x-ms-bmp,image, +image/x-niff,image/x-niff,image, +image/x-pcx,image/x-pcx,image, +image/x-pict,image/x-pict,image, +image/x-raw-casio,image/x-raw-casio,image, +image/x-raw-epson,image/x-raw-epson,image, +image/x-raw-imacon,image/x-raw-imacon,image, +image/x-raw-leaf,image/x-raw-leaf,image, +image/x-raw-logitech,image/x-raw-logitech,image, +image/x-raw-mamiya,image/x-raw-mamiya,image, +image/x-raw-phaseone,image/x-raw-phaseone,image, +image/x-raw-rawzor,image/x-raw-rawzor,image, +image/x-xcf,image/x-xcf,image, +message/cpim,message/cpim,message, +message/delivery-status,message/delivery-status,message, +message/disposition-notification,message/disposition-notification,message, +message/example,message/example,message, +message/external-body,message/external-body,message, +message/feedback-report,message/feedback-report,message, +message/global,message/global,message, +message/global-delivery-status,message/global-delivery-status,message, +message/global-disposition-notification,message/global-disposition-notification,message, +message/global-headers,message/global-headers,message, +message/http,message/http,message, +message/imdn+xml,message/imdn+xml,message, +message/news,message/news,message, +message/partial,message/partial,message, +message/s-http,message/s-http,message, +message/sip,message/sip,message, +message/sipfrag,message/sipfrag,message, +message/tracking-status,message/tracking-status,message, +message/vnd.si.simp,message/vnd.si.simp,message, +message/vnd.wfa.wsc,message/vnd.wfa.wsc,message, +message/x-emlx,message/x-emlx,message, +model/example,model/example,other, +model/iges,model/iges,other, +model/mesh,model/mesh,other, +model/vnd-dwf,model/vnd-dwf,other, +model/vnd.collada+xml,model/vnd.collada+xml,structureddata, +model/vnd.dwf,model/vnd.dwf,other, +model/vnd.flatland.3dml,model/vnd.flatland.3dml,other, +model/vnd.gdl,model/vnd.gdl,other, +model/vnd.gs-gdl,model/vnd.gs-gdl,other, +model/vnd.gs.gdl,model/vnd.gs.gdl,other, +model/vnd.gtw,model/vnd.gtw,other, +model/vnd.moml+xml,model/vnd.moml+xml,structureddata, +model/vnd.mts,model/vnd.mts,other, +model/vnd.opengex,model/vnd.opengex,other, +model/vnd.parasolid.transmit-binary,model/vnd.parasolid.transmit-binary,other, +model/vnd.parasolid.transmit-text,model/vnd.parasolid.transmit-text,structureddata, +model/vnd.parasolid.transmit.binary,model/vnd.parasolid.transmit.binary,other, +model/vnd.parasolid.transmit.text,model/vnd.parasolid.transmit.text,other, +model/vnd.valve.source.compiled-map,model/vnd.valve.source.compiled-map,other, +model/vnd.vtu,model/vnd.vtu,other, +model/vrml,model/vrml,other, +model/x3d+fastinfoset,model/x3d+fastinfoset,other, +model/x3d+xml,model/x3d+xml,structureddata, +model/x3d-vrml,model/x3d-vrml,other, +multipart/alternative,multipart/alternative,other, +multipart/appledouble,multipart/appledouble,other, +multipart/byteranges,multipart/byteranges,other, +multipart/digest,multipart/digest,other, +multipart/encrypted,multipart/encrypted,other, +multipart/example,multipart/example,other, +multipart/form-data,multipart/form-data,other, +multipart/header-set,multipart/header-set,other, +multipart/mixed,multipart/mixed,other, +multipart/parallel,multipart/parallel,other, +multipart/related,multipart/related,other, +multipart/report,multipart/report,other, +multipart/signed,multipart/signed,other, +multipart/voice-message,multipart/voice-message,message, +multipart/x-mixed-replace,multipart/x-mixed-replace,other, +text/1d-interleaved-parityfec,text/1d-interleaved-parityfec,sourcecode, +text/asp,text/asp,sourcecode, +text/aspdotnet,text/aspdotnet,sourcecode, +text/cache-manifest,text/cache-manifest,sourcecode, +text/directory,text/directory,sourcecode, +text/dns,text/dns,sourcecode, +text/ecmascript,text/ecmascript,web, +text/encaprtp,text/encaprtp,sourcecode, +text/enriched,text/enriched,sourcecode, +text/example,text/example,sourcecode, +text/fwdred,text/fwdred,sourcecode, +text/grammar-ref-list,text/grammar-ref-list,sourcecode, +text/javascript,text/javascript,web, +text/jcr-cnd,text/jcr-cnd,sourcecode, +text/mizar,text/mizar,sourcecode, +text/n3,text/n3,sourcecode, +text/parameters,text/parameters,sourcecode, +text/parityfec,text/parityfec,sourcecode, +text/provenance-notation,text/provenance-notation,sourcecode, +text/prs.fallenstein.rst,text/prs.fallenstein.rst,sourcecode, +text/prs.lines.tag,text/prs.lines.tag,sourcecode, +text/raptorfec,text/raptorfec,sourcecode, +text/red,text/red,sourcecode, +text/rfc822-headers,text/rfc822-headers,sourcecode, +text/rtf,text/rtf,sourcecode, +text/rtp-enc-aescm128,text/rtp-enc-aescm128,sourcecode, +text/rtploopback,text/rtploopback,sourcecode, +text/rtx,text/rtx,sourcecode, +text/t140,text/t140,sourcecode, +text/troff,text/troff,sourcecode, +text/turtle,text/turtle,sourcecode, +text/ulpfec,text/ulpfec,sourcecode, +text/uri-list,text/uri-list,sourcecode, +text/vcard,text/vcard,sourcecode, +text/vnd-a,text/vnd-a,sourcecode, +text/vnd-curl,text/vnd-curl,sourcecode, +text/vnd.abc,text/vnd.abc,sourcecode, +text/vnd.curl,text/vnd.curl,sourcecode, +text/vnd.curl.dcurl,text/vnd.curl.dcurl,sourcecode, +text/vnd.curl.mcurl,text/vnd.curl.mcurl,sourcecode, +text/vnd.curl.scurl,text/vnd.curl.scurl,sourcecode, +text/vnd.debian.copyright,text/vnd.debian.copyright,sourcecode, +text/vnd.dmclientscript,text/vnd.dmclientscript,sourcecode, +text/vnd.dvb.subtitle,text/vnd.dvb.subtitle,sourcecode, +text/vnd.esmertec.theme-descriptor,text/vnd.esmertec.theme-descriptor,sourcecode, +text/vnd.fly,text/vnd.fly,sourcecode, +text/vnd.fmi.flexstor,text/vnd.fmi.flexstor,sourcecode, +text/vnd.graphviz,text/vnd.graphviz,sourcecode, +text/vnd.in3d.3dml,text/vnd.in3d.3dml,sourcecode, +text/vnd.in3d.spot,text/vnd.in3d.spot,sourcecode, +text/vnd.iptc.anpa,text/vnd.iptc.anpa,sourcecode, +text/vnd.iptc.newsml,text/vnd.iptc.newsml,sourcecode, +text/vnd.iptc.nitf,text/vnd.iptc.nitf,sourcecode, +text/vnd.latex-z,text/vnd.latex-z,sourcecode, +text/vnd.motorola.reflex,text/vnd.motorola.reflex,sourcecode, +text/vnd.ms-mediapackage,text/vnd.ms-mediapackage,sourcecode, +text/vnd.net2phone.commcenter.command,text/vnd.net2phone.commcenter.command,sourcecode, +text/vnd.radisys.msml-basic-layout,text/vnd.radisys.msml-basic-layout,sourcecode, +text/vnd.si.uricatalogue,text/vnd.si.uricatalogue,sourcecode, +text/vnd.sun.j2me.app-descriptor,text/vnd.sun.j2me.app-descriptor,sourcecode, +text/vnd.trolltech.linguist,text/vnd.trolltech.linguist,sourcecode, +text/vnd.wap-wml,text/vnd.wap-wml,sourcecode, +text/vnd.wap.si,text/vnd.wap.si,sourcecode, +text/vnd.wap.sl,text/vnd.wap.sl,sourcecode, +text/vnd.wap.wml,text/vnd.wap.wml,sourcecode, +text/vnd.wap.wmlscript,text/vnd.wap.wmlscript,sourcecode, +text/x-actionscript,text/x-actionscript,sourcecode, +text/x-ada,text/x-ada,sourcecode, +text/x-applescript,text/x-applescript,sourcecode, +text/x-asciidoc,text/x-asciidoc,sourcecode, +text/x-aspectj,text/x-aspectj,sourcecode, +text/x-assembly,text/x-assembly,sourcecode, +text/x-awk,text/x-awk,sourcecode, +text/x-basic,text/x-basic,sourcecode, +text/x-c++hdr,text/x-c++hdr,sourcecode, +text/x-c++src,text/x-c++src,sourcecode, +text/x-cgi,text/x-cgi,sourcecode, +text/x-chdr,text/x-chdr,sourcecode, +text/x-clojure,text/x-clojure,sourcecode, +text/x-cobol,text/x-cobol,sourcecode, +text/x-coffeescript,text/x-coffeescript,sourcecode, +text/x-coldfusion,text/x-coldfusion,sourcecode, +text/x-common-lisp,text/x-common-lisp,sourcecode, +text/x-csharp,text/x-csharp,sourcecode, +text/x-csrc,text/x-csrc,sourcecode, +text/x-d,text/x-d,sourcecode, +text/x-diff,text/x-diff,sourcecode, +text/x-eiffel,text/x-eiffel,sourcecode, +text/x-emacs-lisp,text/x-emacs-lisp,sourcecode, +text/x-erlang,text/x-erlang,sourcecode, +text/x-expect,text/x-expect,sourcecode, +text/x-forth,text/x-forth,sourcecode, +text/x-fortran,text/x-fortran,sourcecode, +text/x-go,text/x-go,sourcecode, +text/x-groovy,text/x-groovy,sourcecode, +text/x-haml,text/x-haml,sourcecode, +text/x-haskell,text/x-haskell,sourcecode, +text/x-haxe,text/x-haxe,sourcecode, +text/x-idl,text/x-idl,sourcecode, +text/x-ini,text/x-ini,sourcecode, +text/x-less,text/x-less,sourcecode, +text/x-lex,text/x-lex,sourcecode, +text/x-log,text/x-log,sourcecode, +text/x-lua,text/x-lua,sourcecode, +text/x-matlab,text/x-matlab,sourcecode, +text/x-ml,text/x-ml,sourcecode, +text/x-modula,text/x-modula,sourcecode, +text/x-objcsrc,text/x-objcsrc,sourcecode, +text/x-ocaml,text/x-ocaml,sourcecode, +text/x-pascal,text/x-pascal,sourcecode, +text/x-perl,text/x-perl,sourcecode, +text/x-php,text/x-php,sourcecode, +text/x-prolog,text/x-prolog,sourcecode, +text/x-python,text/x-python,sourcecode, +text/x-rexx,text/x-rexx,sourcecode, +text/x-rsrc,text/x-rsrc,sourcecode, +text/x-rst,text/x-rst,sourcecode, +text/x-ruby,text/x-ruby,sourcecode, +text/x-scala,text/x-scala,sourcecode, +text/x-scheme,text/x-scheme,sourcecode, +text/x-sed,text/x-sed,sourcecode, +text/x-setext,text/x-setext,sourcecode, +text/x-sql,text/x-sql,sourcecode, +text/x-stsrc,text/x-stsrc,sourcecode, +text/x-tcl,text/x-tcl,sourcecode, +text/x-uuencode,text/x-uuencode,sourcecode, +text/x-vbasic,text/x-vbasic,sourcecode, +text/x-vbdotnet,text/x-vbdotnet,sourcecode, +text/x-vbscript,text/x-vbscript,sourcecode, +text/x-vcalendar,text/x-vcalendar,sourcecode, +text/x-vcard,text/x-vcard,sourcecode, +text/x-verilog,text/x-verilog,sourcecode, +text/x-vhdl,text/x-vhdl,sourcecode, +text/x-web-markdown,text/x-web-markdown,sourcecode, +text/x-yacc,text/x-yacc,sourcecode, +text/x-yaml,text/x-yaml,sourcecode, +text/xml-external-parsed-entity,text/xml-external-parsed-entity,sourcecode, +video/1d-interleaved-parityfec,video/1d-interleaved-parityfec,video, +video/3gpp-tt,video/3gpp-tt,video, +video/bmpeg,video/bmpeg,video, +video/bt656,video/bt656,video, +video/celb,video/celb,video, +video/dv,video/dv,video, +video/encaprtp,video/encaprtp,video, +video/example,video/example,video, +video/h261,video/h261,video, +video/h263,video/h263,video, +video/h263-1998,video/h263-1998,video, +video/h263-2000,video/h263-2000,video, +video/h264,video/h264,video, +video/H264-RCDO,video/H264-RCDO,video, +video/H264-SVC,video/H264-SVC,video, +video/iso.segment,video/iso.segment,video, +video/jpeg,video/jpeg,video, +video/jpeg2000,video/jpeg2000,video, +video/mj2,video/mj2,video, +video/mp1s,video/mp1s,video, +video/mp2p,video/mp2p,video, +video/mp4v-es,video/mp4v-es,video, +video/mpeg4-generic,video/mpeg4-generic,video, +video/mpv,video/mpv,video, +video/nv,video/nv,video, +video/parityfec,video/parityfec,video, +video/pointer,video/pointer,video, +video/raptorfec,video/raptorfec,video, +video/raw,video/raw,video, +video/rtp-enc-aescm128,video/rtp-enc-aescm128,video, +video/rtploopback,video/rtploopback,video, +video/rtx,video/rtx,video, +video/smpte292m,video/smpte292m,video, +video/theora,video/theora,video, +video/ulpfec,video/ulpfec,video, +video/vc1,video/vc1,video, +video/vnd-mpegurl,video/vnd-mpegurl,video, +video/vnd-vivo,video/vnd-vivo,video, +video/vnd.cctv,video/vnd.cctv,video, +video/vnd.dece-mp4,video/vnd.dece-mp4,video, +video/vnd.dece.hd,video/vnd.dece.hd,video, +video/vnd.dece.mobile,video/vnd.dece.mobile,video, +video/vnd.dece.pd,video/vnd.dece.pd,video, +video/vnd.dece.sd,video/vnd.dece.sd,video, +video/vnd.dece.video,video/vnd.dece.video,video, +video/vnd.directv-mpeg,video/vnd.directv-mpeg,video, +video/vnd.directv.mpeg-tts,video/vnd.directv.mpeg-tts,video, +video/vnd.dlna.mpeg-tts,video/vnd.dlna.mpeg-tts,video, +video/vnd.dvb.file,video/vnd.dvb.file,video, +video/vnd.fvt,video/vnd.fvt,video, +video/vnd.hns.video,video/vnd.hns.video,video, +video/vnd.iptvforum.1dparityfec-1010,video/vnd.iptvforum.1dparityfec-1010,video, +video/vnd.iptvforum.1dparityfec-2005,video/vnd.iptvforum.1dparityfec-2005,video, +video/vnd.iptvforum.2dparityfec-1010,video/vnd.iptvforum.2dparityfec-1010,video, +video/vnd.iptvforum.2dparityfec-2005,video/vnd.iptvforum.2dparityfec-2005,video, +video/vnd.iptvforum.ttsavc,video/vnd.iptvforum.ttsavc,video, +video/vnd.iptvforum.ttsmpeg2,video/vnd.iptvforum.ttsmpeg2,video, +video/vnd.motorola.video,video/vnd.motorola.video,video, +video/vnd.motorola.videop,video/vnd.motorola.videop,video, +video/vnd.mpegurl,video/vnd.mpegurl,video, +video/vnd.ms-playready.media.pyv,video/vnd.ms-playready.media.pyv,video, +video/vnd.nokia.interleaved-multimedia,video/vnd.nokia.interleaved-multimedia,video, +video/vnd.nokia.videovoip,video/vnd.nokia.videovoip,video, +video/vnd.objectvideo,video/vnd.objectvideo,video, +video/vnd.radgamettools.bink,video/vnd.radgamettools.bink,video, +video/vnd.radgamettools.smacker,video/vnd.radgamettools.smacker,video, +video/vnd.sealed-swf,video/vnd.sealed-swf,video, +video/vnd.sealed.mpeg1,video/vnd.sealed.mpeg1,video, +video/vnd.sealed.mpeg4,video/vnd.sealed.mpeg4,video, +video/vnd.sealed.swf,video/vnd.sealed.swf,video, +video/vnd.sealedmedia.softseal-mov,video/vnd.sealedmedia.softseal-mov,video, +video/vnd.sealedmedia.softseal.mov,video/vnd.sealedmedia.softseal.mov,video, +video/vnd.uvvu-mp4,video/vnd.uvvu-mp4,video, +video/vnd.vivo,video/vnd.vivo,video, +video/x-dirac,video/x-dirac,video, +video/x-f4v,video/x-f4v,video, +video/x-flc,video/x-flc,video, +video/x-fli,video/x-fli,video, +video/x-jng,video/x-jng,video, +video/x-matroska,video/x-matroska,video, +video/x-mng,video/x-mng,video, +video/x-ms-wm,video/x-ms-wm,video, +video/x-ms-wmx,video/x-ms-wmx,video, +video/x-ms-wvx,video/x-ms-wvx,video, +video/x-oggrgb,video/x-oggrgb,video, +video/x-ogguvs,video/x-ogguvs,video, +video/x-oggyuv,video/x-oggyuv,video, +video/x-ogm,video/x-ogm,video, +x-conference/x-cooltalk,x-conference/x-cooltalk,other, diff --git a/alfresco-solr/src/test/resources/test-files/conf/opencmis-qnamefilter-context.xml b/alfresco-solr/src/test/resources/test-files/conf/opencmis-qnamefilter-context.xml new file mode 100644 index 000000000..553864a79 --- /dev/null +++ b/alfresco-solr/src/test/resources/test-files/conf/opencmis-qnamefilter-context.xml @@ -0,0 +1,17 @@ + + + + + + + + {http://www.jcp.org/jcr/1.0}* + {http://www.jcp.org/jcr/nt/1.0}* + {http://www.jcp.org/jcr/mix/1.0}* + {http://www.jcp.org/jcr/sv/1.0}* + {http://www.alfresco.org/model/wcmappmodel/1.0}* + {http://www.alfresco.org/model/wcmmodel/1.0}* + + + + \ No newline at end of file diff --git a/alfresco-solr/src/test/resources/test-files/conf/shared.properties b/alfresco-solr/src/test/resources/test-files/conf/shared.properties new file mode 100644 index 000000000..44539d0d6 --- /dev/null +++ b/alfresco-solr/src/test/resources/test-files/conf/shared.properties @@ -0,0 +1,36 @@ +# Shared Properties file + +#Host details an external client would use to connect to Solr +solr.host=localhost +solr.port=8983 +solr.baseurl=/solr + +# Properties treated as identifiers when indexed + +alfresco.identifier.property.0={http://www.alfresco.org/model/content/1.0}creator +alfresco.identifier.property.1={http://www.alfresco.org/model/content/1.0}modifier +alfresco.identifier.property.2={http://www.alfresco.org/model/content/1.0}userName +alfresco.identifier.property.3={http://www.alfresco.org/model/content/1.0}authorityName + + + +# Suggestable Propeties + +#alfresco.suggestable.property.0={http://www.alfresco.org/model/content/1.0}name +#alfresco.suggestable.property.1={http://www.alfresco.org/model/content/1.0}title +#alfresco.suggestable.property.2={http://www.alfresco.org/model/content/1.0}description +#alfresco.suggestable.property.3={http://www.alfresco.org/model/content/1.0}content + + + +# Data types that support cross locale/word splitting/token patterns if tokenised + +alfresco.cross.locale.property.0={http://www.alfresco.org/model/content/1.0}name + + + +# Data types that support cross locale/word splitting/token patterns if tokenised + +# alfresco.cross.locale.datatype.0={http://www.alfresco.org/model/dictionary/1.0}text +# alfresco.cross.locale.datatype.1={http://www.alfresco.org/model/dictionary/1.0}content +# alfresco.cross.locale.datatype.2={http://www.alfresco.org/model/dictionary/1.0}mltext From 5730f86a4596f7bb69d99835a00e421882c78fe4 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 14:39:31 +0200 Subject: [PATCH 07/15] Moving around the test resources --- .../src/test/resources/{test-resources => }/log4j.properties | 0 .../src/test/resources/test-web/META-INF/context.xml | 4 ---- 2 files changed, 4 deletions(-) rename alfresco-solr/src/test/resources/{test-resources => }/log4j.properties (100%) delete mode 100644 alfresco-solr/src/test/resources/test-web/META-INF/context.xml diff --git a/alfresco-solr/src/test/resources/test-resources/log4j.properties b/alfresco-solr/src/test/resources/log4j.properties similarity index 100% rename from alfresco-solr/src/test/resources/test-resources/log4j.properties rename to alfresco-solr/src/test/resources/log4j.properties diff --git a/alfresco-solr/src/test/resources/test-web/META-INF/context.xml b/alfresco-solr/src/test/resources/test-web/META-INF/context.xml deleted file mode 100644 index 6014f74c8..000000000 --- a/alfresco-solr/src/test/resources/test-web/META-INF/context.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file From 40406d2406459edd60f2fe7ec99b213f380f1ddf Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 14:40:44 +0200 Subject: [PATCH 08/15] SEARCH-56: Switching to use external properties for the Model Home --- .../alfresco/solr/tracker/ModelTracker.java | 52 ++----------------- .../alfresco/solr/AlfrescoSolrTestCaseJ4.java | 2 +- .../java/org/alfresco/solr/SolrTestFiles.java | 2 +- .../solr/tracker/ModelTrackerTest.java | 8 +-- 4 files changed, 11 insertions(+), 53 deletions(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/ModelTracker.java b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/ModelTracker.java index 5eafabbb6..8d0b399ca 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/tracker/ModelTracker.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/tracker/ModelTracker.java @@ -49,6 +49,8 @@ import org.alfresco.solr.InformationServer; import org.alfresco.solr.client.AlfrescoModel; import org.alfresco.solr.client.AlfrescoModelDiff; import org.alfresco.solr.client.SOLRAPIClient; +import org.alfresco.solr.config.ConfigUtil; +import org.apache.solr.core.SolrResourceLoader; import org.json.JSONException; /** @@ -107,7 +109,8 @@ public class ModelTracker extends AbstractTracker implements Tracker InformationServer informationServer) { super(p, client, coreName, informationServer); - alfrescoModelDir = locateModelHome(solrHome); + String normalSolrHome = SolrResourceLoader.normalizeDir(solrHome); + alfrescoModelDir = new File(ConfigUtil.locateProperty("solr.model.dir", normalSolrHome+"alfrescoModels")); log.info("Alfresco Model dir " + alfrescoModelDir); if (!alfrescoModelDir.exists()) { @@ -565,53 +568,6 @@ public class ModelTracker extends AbstractTracker implements Tracker { return model.getName().replace(":", ".") + "." + model.getChecksum(XMLBindingType.DEFAULT) + ".xml"; } - - public static File locateModelHome(String solrHome) - { - String modelDir = null; - // Try JNDI - try - { - Context c = new InitialContext(); - modelDir = (String) c.lookup("java:comp/env/solr/model/dir"); - log.info("Using JNDI solr.model.dir: " + modelDir); - } - catch (NoInitialContextException e) - { - log.info("JNDI not configured for solr (NoInitialContextEx)"); - } - catch (NamingException e) - { - log.info("No solr/model/dir in JNDI"); - } - catch (RuntimeException ex) - { - log.warn("Odd RuntimeException while testing for JNDI: " + ex.getMessage()); - } - - // Now try system property - if (modelDir == null) - { - String prop = "solr.solr.model.dir"; - modelDir = System.getProperty(prop); - if (modelDir != null) - { - log.info("using system property " + prop + ": " + modelDir); - } - } - - // if all else fails, try - if (modelDir == null) - { - File answer = new File(solrHome, "alfrescoModels"); - log.info("solr home defaulted to " + answer + "(could not find system property or JNDI)"); - return answer; - } - else - { - return new File(modelDir); - } - } public boolean hasModels() { diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java b/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java index 13e4a7541..5bc088867 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java @@ -133,7 +133,7 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi ignoreException("ignore_exception"); System.setProperty("solr.directoryFactory","solr.RAMDirectoryFactory"); - System.setProperty("solr.solr.home", getFile(TEST_FILES_LOCATION).toString()); + System.setProperty("solr.solr.home", testSolrHome.toAbsolutePath().toString()); System.setProperty("solr.tests.maxBufferedDocs", "1000"); System.setProperty("solr.tests.maxIndexingThreads", "10"); diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/SolrTestFiles.java b/alfresco-solr/src/test/java/org/alfresco/solr/SolrTestFiles.java index 17a580954..426d393c1 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/SolrTestFiles.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/SolrTestFiles.java @@ -24,7 +24,7 @@ package org.alfresco.solr; */ public interface SolrTestFiles { - public final String TEST_FILES_LOCATION = "src/test/resources/test-files"; + public final String TEST_FILES_LOCATION = "target/test-classes/test-files"; public final String TEST_SOLR_COLLECTION = TEST_FILES_LOCATION + "/collection1"; public final String TEST_SOLR_CONF = TEST_SOLR_COLLECTION + "/conf/"; diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/tracker/ModelTrackerTest.java b/alfresco-solr/src/test/java/org/alfresco/solr/tracker/ModelTrackerTest.java index 3d4d9caee..20e611278 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/tracker/ModelTrackerTest.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/tracker/ModelTrackerTest.java @@ -69,16 +69,19 @@ public class ModelTrackerTest @Mock private TrackerStats trackerStats; + private static File alfrescoModelDir; + @BeforeClass public static void setUpBeforeClass() throws Exception { + alfrescoModelDir = new File("target/testalfrescoModels"); + alfrescoModelDir.mkdir(); } @AfterClass public static void tearDownAfterClass() throws Exception { try { - File alfrescoModelDir = new File("alfrescoModels"); File[] listFiles = alfrescoModelDir.listFiles(); for (File file : listFiles) { @@ -103,8 +106,8 @@ public class ModelTrackerTest when(props.getProperty("acl.shard.count", "1")).thenReturn("1"); when(props.getProperty("acl.shard.instance", "0")).thenReturn("0"); when(this.srv.getTrackerStats()).thenReturn(trackerStats); + System.setProperty("solr.model.dir", alfrescoModelDir.getAbsolutePath()); - // TODO: create test folder for model sync? this.modelTracker = new ModelTracker(null, props, repositoryClient, coreName, srv); } @@ -137,7 +140,6 @@ public class ModelTrackerTest { verify(this.srv).afterInitModels(); - File alfrescoModelDir = new File("alfrescoModels"); assertTrue(alfrescoModelDir.isDirectory()); File[] modelRepresentations = alfrescoModelDir.listFiles(new FileFilter() From b8dae213869dd77529d544aa4e8d3f48beefa331 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 16:02:08 +0200 Subject: [PATCH 09/15] SEARCH-56: Changed to use "proxy" rather than "solr" host --- .../alfresco/solr/SolrInformationServer.java | 19 +++++++++++-------- .../org/alfresco/solr/config/ConfigUtil.java | 1 + .../solr/instance/conf/shared.properties | 6 +++--- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java index 06d2dc112..1d585e043 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -203,17 +203,20 @@ public class SolrInformationServer implements InformationServer public static final String DOC_TYPE_TX = "Tx"; public static final String DOC_TYPE_ACL_TX = "AclTx"; public static final String DOC_TYPE_STATE = "State"; - + + public static final String SOLR_PROXY_HOST = "proxy.host"; + public static final String SOLR_PROXY_PORT = "proxy.port"; + public static final String SOLR_PROXY_BASEURL = "proxy.baseurl"; + private static final Pattern CAPTURE_SITE = Pattern.compile("^/\\{http\\://www\\.alfresco\\.org/model/application/1\\.0\\}company\\_home/\\{http\\://www\\.alfresco\\.org/model/site/1\\.0\\}sites/\\{http\\://www\\.alfresco\\.org/model/content/1\\.0}([^/]*)/.*" ); private static final Pattern CAPTURE_TAG = Pattern.compile("^/\\{http\\://www\\.alfresco\\.org/model/content/1\\.0\\}taggable/\\{http\\://www\\.alfresco\\.org/model/content/1\\.0\\}([^/]*)/\\{\\}member"); - private static final Pattern CAPTURE_SHARED_FILES = Pattern.compile("^/\\{http\\://www\\.alfresco\\.org/model/application/1\\.0\\}company\\_home/\\{http\\://www\\.alfresco\\.org/model/application/1\\.0\\}shared/.*" ); - + private static final Pattern CAPTURE_SHARED_FILES = Pattern.compile("^/\\{http\\://www\\.alfresco\\.org/model/application/1\\.0\\}company\\_home/\\{http\\://www\\.alfresco\\.org/model/application/1\\.0\\}shared/.*" ); /* 4096 is 2 to the power of (6*2), and we do this because the precision step for the long is 6, * and the transactions are long */ - public static final int BATCH_FACET_TXS = 4096; - + public static final int BATCH_FACET_TXS = 4096; + private AlfrescoCoreAdminHandler adminHandler; private SolrCore core; private SolrRequestHandler nativeRequestHandler; @@ -312,15 +315,15 @@ public class SolrInformationServer implements InformationServer // build base URL - host and port have to come from configuration. Properties props = AlfrescoSolrDataModel.getCommonConfig(); - hostName = ConfigUtil.locateProperty("solr.host", props.getProperty("solr.host")); - String portNumber = ConfigUtil.locateProperty("solr.port", props.getProperty("solr.port")); + hostName = ConfigUtil.locateProperty(SOLR_PROXY_HOST, props.getProperty(SOLR_PROXY_HOST)); + String portNumber = ConfigUtil.locateProperty(SOLR_PROXY_PORT, props.getProperty(SOLR_PROXY_PORT)); try { port = Integer.parseInt(portNumber); } catch (NumberFormatException e) { log.error("Failed to find a valid solr.port number, the default value is in shared.properties"); throw e; } - baseUrl = ConfigUtil.locateProperty("solr.baseurl", props.getProperty("solr.baseurl")); + baseUrl = ConfigUtil.locateProperty(SOLR_PROXY_BASEURL, props.getProperty(SOLR_PROXY_BASEURL)); baseUrl = (baseUrl.startsWith("/") ? "" : "/") + baseUrl + "/" + core.getName() + "/"; } diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java index b0e8fc287..d90968393 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/config/ConfigUtil.java @@ -92,6 +92,7 @@ public class ConfigUtil { } //if all else fails then return the default + log.info("Using default value for variable "+propertyName+": " + defaultValue ); return defaultValue; } diff --git a/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties b/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties index 44539d0d6..e037cdca4 100644 --- a/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties +++ b/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties @@ -1,9 +1,9 @@ # Shared Properties file #Host details an external client would use to connect to Solr -solr.host=localhost -solr.port=8983 -solr.baseurl=/solr +proxy.host=localhost +proxy.port=8983 +proxy.baseurl=/solr # Properties treated as identifiers when indexed From d6f563186f38171c3124a628ee7940493777c354 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Thu, 9 Jun 2016 16:02:47 +0200 Subject: [PATCH 10/15] SEARCH-56: setup() no longer needed for the test --- .../solr/content/SolrContentStoreTest.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java b/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java index 0465c70e3..258cf49b1 100644 --- a/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java +++ b/alfresco-solr/src/test/java/org/alfresco/solr/content/SolrContentStoreTest.java @@ -18,23 +18,21 @@ */ package org.alfresco.solr.content; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.util.Properties; - import org.alfresco.repo.content.ContentContext; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; + /** * Tests {@link SolrContentStoreTest} * @@ -44,14 +42,6 @@ import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class SolrContentStoreTest { - private String rootStr; - - @Before - public void setUp() throws IOException - { - System.setProperty("solr.solr.home","target"); - } - @After public void tearDown() throws IOException { From 0ab3593ba1c43aff332f50ce03ba451c0deffed9 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Fri, 10 Jun 2016 15:48:07 +0200 Subject: [PATCH 11/15] SEARCH-56: Clearer alfresco.version default value --- .../src/main/java/org/alfresco/solr/SolrInformationServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java index 1d585e043..1fe161a9a 100644 --- a/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -302,7 +302,7 @@ public class SolrInformationServer implements InformationServer this.solrContentStore = solrContentStore; Properties p = core.getResourceLoader().getCoreProperties(); - alfrescoVersion = p.getProperty("alfresco.version", "5.0.0"); + alfrescoVersion = p.getProperty("alfresco.version", "Unknown"); transformContent = Boolean.parseBoolean(p.getProperty("alfresco.index.transformContent", "true")); recordUnindexedNodes = Boolean.parseBoolean(p.getProperty("alfresco.recordUnindexedNodes", "true")); lag = Integer.parseInt(p.getProperty("alfresco.lag", "1000")); From 86ff60b2d6e423e6fdd5d5253977d785953c22db Mon Sep 17 00:00:00 2001 From: Gethin James Date: Fri, 10 Jun 2016 15:48:27 +0200 Subject: [PATCH 12/15] SEARCH-56: Changed to use "proxy" rather than "solr" host --- .../test-files/collection1/conf/solrcore.properties | 11 +++++++---- .../test/resources/test-files/conf/shared.properties | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/alfresco-solr/src/test/resources/test-files/collection1/conf/solrcore.properties b/alfresco-solr/src/test/resources/test-files/collection1/conf/solrcore.properties index 093eab396..c45b0965d 100644 --- a/alfresco-solr/src/test/resources/test-files/collection1/conf/solrcore.properties +++ b/alfresco-solr/src/test/resources/test-files/collection1/conf/solrcore.properties @@ -1,10 +1,7 @@ # # solrcore.properties - used in solrconfig.xml # -# data is in ${data.dir.root}/${data.dir.store} -data.dir.root=@@ALFRESCO_SOLR4_DATA_DIR@@ -data.dir.store=archive/SpacesStore enable.alfresco.tracking=true # @@ -12,6 +9,12 @@ enable.alfresco.tracking=true # alfresco.version=5.1 +# +#These are replaced by the admin handler +# +#data.dir.root=DATA_DIR +#data.dir.store=workspace/SpacesStore +#alfresco.stores=workspace://SpacesStore # # Properties loaded during alfresco tracking @@ -22,7 +25,7 @@ alfresco.port=8080 alfresco.port.ssl=8443 alfresco.baseUrl=/alfresco alfresco.cron=0/15 * * * * ? * -alfresco.stores=archive://SpacesStore + #alfresco.index.transformContent=false #alfresco.ignore.datatype.1=d:content alfresco.lag=1000 diff --git a/alfresco-solr/src/test/resources/test-files/conf/shared.properties b/alfresco-solr/src/test/resources/test-files/conf/shared.properties index 44539d0d6..e037cdca4 100644 --- a/alfresco-solr/src/test/resources/test-files/conf/shared.properties +++ b/alfresco-solr/src/test/resources/test-files/conf/shared.properties @@ -1,9 +1,9 @@ # Shared Properties file #Host details an external client would use to connect to Solr -solr.host=localhost -solr.port=8983 -solr.baseurl=/solr +proxy.host=localhost +proxy.port=8983 +proxy.baseurl=/solr # Properties treated as identifiers when indexed From 4a396989fd6c50e592974c3006500a6e652ed478 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Fri, 10 Jun 2016 17:04:40 +0200 Subject: [PATCH 13/15] SEARCH-9: Updated the docker test for the new distribution structure --- packaging/buildAndTest.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/buildAndTest.sh b/packaging/buildAndTest.sh index 6d35bb103..5c03c5f52 100755 --- a/packaging/buildAndTest.sh +++ b/packaging/buildAndTest.sh @@ -25,9 +25,9 @@ fi # running tests docker run --rm "$dockerImage" [ -d /opt/alfresco-solr/data ] || (echo "Data dir does not exist" && exit 1) -docker run --rm "$dockerImage" [ -e /opt/alfresco-solr/solr/server/solr/conf/shared.properties ] || (echo "shared.properties does not exist" && exit 1) +docker run --rm "$dockerImage" [ -e /opt/alfresco-solr/solrhome/conf/shared.properties ] || (echo "shared.properties does not exist" && exit 1) docker run --rm "$dockerImage" /opt/alfresco-solr/solr/bin/solr start echo "Publishing $dockerImage..." docker push "$dockerImage" -echo "SUCCESS" +echo "Docker SUCCESS" From 3cd3b594f4d2513f0b8a70f4c434064fe9f17c67 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Mon, 13 Jun 2016 12:24:07 +0200 Subject: [PATCH 14/15] SEARCH-56: Now using a valid share.properties that matches the default configuration --- .../resources/test-files/conf/shared.properties | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/alfresco-solr/src/test/resources/test-files/conf/shared.properties b/alfresco-solr/src/test/resources/test-files/conf/shared.properties index e037cdca4..df1d50509 100644 --- a/alfresco-solr/src/test/resources/test-files/conf/shared.properties +++ b/alfresco-solr/src/test/resources/test-files/conf/shared.properties @@ -16,10 +16,10 @@ alfresco.identifier.property.3={http://www.alfresco.org/model/content/1.0}author # Suggestable Propeties -#alfresco.suggestable.property.0={http://www.alfresco.org/model/content/1.0}name -#alfresco.suggestable.property.1={http://www.alfresco.org/model/content/1.0}title -#alfresco.suggestable.property.2={http://www.alfresco.org/model/content/1.0}description -#alfresco.suggestable.property.3={http://www.alfresco.org/model/content/1.0}content +alfresco.suggestable.property.0={http://www.alfresco.org/model/content/1.0}name +alfresco.suggestable.property.1={http://www.alfresco.org/model/content/1.0}title +alfresco.suggestable.property.2={http://www.alfresco.org/model/content/1.0}description +alfresco.suggestable.property.3={http://www.alfresco.org/model/content/1.0}content @@ -31,6 +31,6 @@ alfresco.cross.locale.property.0={http://www.alfresco.org/model/content/1.0}name # Data types that support cross locale/word splitting/token patterns if tokenised -# alfresco.cross.locale.datatype.0={http://www.alfresco.org/model/dictionary/1.0}text -# alfresco.cross.locale.datatype.1={http://www.alfresco.org/model/dictionary/1.0}content -# alfresco.cross.locale.datatype.2={http://www.alfresco.org/model/dictionary/1.0}mltext +alfresco.cross.locale.datatype.0={http://www.alfresco.org/model/dictionary/1.0}text +alfresco.cross.locale.datatype.1={http://www.alfresco.org/model/dictionary/1.0}content +alfresco.cross.locale.datatype.2={http://www.alfresco.org/model/dictionary/1.0}mltext From 8b6c25daf1285626d2678ed6a9614f5a84b54419 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Mon, 13 Jun 2016 13:01:57 +0200 Subject: [PATCH 15/15] SEARCH-9: Cleaning up the branch name for the docker image --- packaging/buildAndTest.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packaging/buildAndTest.sh b/packaging/buildAndTest.sh index 5c03c5f52..83bc697ff 100755 --- a/packaging/buildAndTest.sh +++ b/packaging/buildAndTest.sh @@ -6,7 +6,9 @@ set -eo pipefail # set current working directory to the directory of the script cd "$(dirname "$0")" -dockerImage="dockerreg.alfresco.com/alfresco-solr:${bamboo_planRepository_1_branch}-latest" +nicebranch=`echo "$bamboo_planRepository_1_branch" | sed 's/\//_/'` +dockerImage="dockerreg.alfresco.com/alfresco-solr:${nicebranch}-latest" + rm -rf target/alfresco-solr rm -rf target/solr-*