Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/MetadataTestCase.java Tue Oct 14 19:56:52 2014 @@ -86,12 +86,6 @@ public class MetadataTestCase extends Te * @throws IOException If an I/O error occurs. */ public File getTestDataFile(String name) throws IOException { - String[] entries = tmpDir.list(); // Check the play area by - for (int i = 0; i < entries.length; ++i) { // going through each entry - File candidate = new File(tmpDir, name); // and making a File for each - if (candidate.exists()) // Found it? - return candidate; // Wootness! - } InputStream in = MetadataTestCase.class.getResourceAsStream(name); // Not found? Try resource stream if (in == null) // Still not found? Bummer. throw new IllegalArgumentException("Unknown test data file `" + name + "`; not found in resource path");
Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestAbstractSAXConfigReader.java Tue Oct 14 19:56:52 2014 @@ -42,7 +42,7 @@ public class TestAbstractSAXConfigReader @Before public void setup() throws Exception { - URL url = getClass().getResource("/org/apache/oodt/cas/metadata/product-type-patterns.xml"); + URL url = getClass().getResource("/product-type-patterns.xml"); configFile = new File(url.toURI()); configReader = new AbstractSAXConfigReader() { @Override Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestCopyAndRewriteExtractor.java Tue Oct 14 19:56:52 2014 @@ -102,9 +102,9 @@ public class TestCopyAndRewriteExtractor @Override public void setUp() throws Exception { super.setUp(); - String confFilename = "copyandrewrite.test.conf"; - String sampleMetFilename = "samplemet.xml"; - String extractFilename = "testfile.txt"; + String confFilename = "/copyandrewrite.test.conf"; + String sampleMetFilename = "/samplemet.xml"; + String extractFilename = "/testfile.txt"; String origMetFilePath = "orig.met.file.path"; // get all the needed files staged Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractor.java Tue Oct 14 19:56:52 2014 @@ -24,7 +24,6 @@ import org.apache.oodt.cas.metadata.Meta import org.apache.oodt.cas.metadata.exceptions.MetExtractionException; import org.apache.oodt.cas.metadata.util.PathUtils; import org.apache.oodt.commons.exec.ExecHelper; -import org.apache.oodt.commons.exec.ExecUtils; //JDK imports import java.io.File; @@ -45,7 +44,7 @@ public class TestExternMetExtractor exte private static final String PRODUCT_TYPE = "ProductType"; - private static final String expectedFilename = "testfile.txt"; + private static final String expectedFilename = "/testfile.txt"; private static final String expectedProductType = "GenericFile"; @@ -77,7 +76,7 @@ public class TestExternMetExtractor exte assertTrue(met.containsKey(FILE_LOCATION)); assertTrue(met.containsKey(PRODUCT_TYPE)); - assertEquals(expectedFilename, met.getMetadata(FILENAME)); + assertEquals(expectedFilename.substring(1), met.getMetadata(FILENAME)); assertEquals("Expected: ["+this.expectedFileLocation+"]; Actual: ["+met.getMetadata(FILE_LOCATION)+"]", this.expectedFileLocation, met.getMetadata(FILE_LOCATION)); assertEquals(expectedProductType, met.getMetadata(PRODUCT_TYPE)); @@ -107,10 +106,10 @@ public class TestExternMetExtractor exte @Override public void setUp() throws Exception { super.setUp(); - String configFilename = "extern-config.xml"; - String extractFilename = "testfile.txt"; - String extractorFilename = "testExtractor"; - String sampleMetFilename = "samplemet.xml"; + String configFilename = "/extern-config.xml"; + String extractFilename = "/testfile.txt"; + String extractorFilename = "/testExtractor"; + String sampleMetFilename = "/samplemet.xml"; this.confFile = super.getTestDataFile(configFilename); this.extractFile = super.getTestDataFile(extractFilename); Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestExternMetExtractorConfigReader.java Tue Oct 14 19:56:52 2014 @@ -26,10 +26,9 @@ import org.apache.oodt.cas.metadata.util //JDK imports import java.io.File; -import java.io.FileNotFoundException; //Junit imports -import junit.framework.TestCase; + /** * @author mattmann @@ -50,7 +49,7 @@ public class TestExternMetExtractorConfi super(name); } - private static final String configFilePath = "extern-config.xml"; + private static final String configFilePath = "/extern-config.xml"; private static final String expectedBinPathEnding = "/testExtractor"; Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestMetReader.java Tue Oct 14 19:56:52 2014 @@ -82,8 +82,8 @@ public class TestMetReader extends Metad @Override public void setUp() throws Exception { super.setUp(); - String extractFilename = "testfile2.txt"; - String sampleMetFilename = "testfile2.txt.met"; + String extractFilename = "/testfile2.txt"; + String sampleMetFilename = "/testfile2.txt.met"; this.extractFile = super.getTestDataFile(extractFilename); this.expectedFileLocation = this.extractFile.getParent(); Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/extractors/TestProdTypePatternMetExtractor.java Tue Oct 14 19:56:52 2014 @@ -45,7 +45,7 @@ public class TestProdTypePatternMetExtra @Before public void setup() throws Exception { - URL url = getClass().getResource("/org/apache/oodt/cas/metadata/product-type-patterns.xml"); + URL url = getClass().getResource("/product-type-patterns.xml"); configFile = new File(url.toURI()); extractor = new ProdTypePatternMetExtractor(); extractor.setConfigFile(configFile); @@ -60,7 +60,7 @@ public class TestProdTypePatternMetExtra Files.touch(page1); Files.touch(page2); - url = getClass().getResource("/org/apache/oodt/cas/metadata/product-type-patterns-2.xml"); + url = getClass().getResource("/product-type-patterns-2.xml"); configFile2 = new File(url.toURI()); page1a = new File(tmpDir, "page-111-1234567890.txt"); page2a = new File(tmpDir, "page-222-0987654321.txt"); Modified: oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java?rev=1631859&r1=1631858&r2=1631859&view=diff ============================================================================== --- oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java (original) +++ oodt/trunk/metadata/src/test/org/apache/oodt/cas/metadata/preconditions/TestPreCondEvalUtils.java Tue Oct 14 19:56:52 2014 @@ -23,15 +23,14 @@ import org.apache.oodt.cas.metadata.Meta //JDK imports import java.io.File; -import java.io.IOException; import java.util.LinkedList; //Spring imports -import org.springframework.beans.BeansException; +import org.junit.Before; import org.springframework.context.support.FileSystemXmlApplicationContext; //Junit imports -import junit.framework.TestCase; + /** * @@ -53,19 +52,20 @@ public class TestPreCondEvalUtils extend super(name); } + @Before public void setUp() throws Exception { super.setUp(); this.preconditions = new LinkedList<String>(); this.preconditions.add("CheckThatDataFileSizeIsGreaterThanZero"); this.preconditions.add("CheckThatDataFileExists"); this.preconditions.add("CheckDataFileMimeType"); - File preCondFile = getTestDataFile("met_extr_preconditions.xml"); - this.evalUtils = new PreCondEvalUtils(new FileSystemXmlApplicationContext(preCondFile.toURL().toExternalForm())); + File preCondFile = getTestDataFile("/met_extr_preconditions.xml"); + this.evalUtils = new PreCondEvalUtils(new FileSystemXmlApplicationContext("file:" + preCondFile.getAbsolutePath())); } public void testEval() throws Throwable { // Test file is also the config file we used, neat! - File prodFile = getTestDataFile("met_extr_preconditions.xml"); + File prodFile = getTestDataFile("/met_extr_preconditions.xml"); assertTrue(this.evalUtils.eval(this.preconditions, prodFile)); } } Added: oodt/trunk/metadata/src/test/resources/copyandrewrite.test.conf URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/copyandrewrite.test.conf?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/copyandrewrite.test.conf (added) +++ oodt/trunk/metadata/src/test/resources/copyandrewrite.test.conf Tue Oct 14 19:56:52 2014 @@ -0,0 +1,5 @@ +numRewriteFields=2 +rewriteField1=ProductType +rewriteField2=FileLocation +ProductType.pattern=NewProductType[ProductType] +FileLocation.pattern=/new/loc/[FileLocation] Added: oodt/trunk/metadata/src/test/resources/extern-config.xml URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/extern-config.xml?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/extern-config.xml (added) +++ oodt/trunk/metadata/src/test/resources/extern-config.xml Tue Oct 14 19:56:52 2014 @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE.txt file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. +--> +<!-- FIXME: change namespace URI? --> +<cas:externextractor xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas"> + + <!-- + workingDir: specifies the directory that the external command line met extractor will + be run in. + + if workingDir is not specified, and if the external command line met extractor honors + the workingDir contract (generating .met file in directory that it is called from), then + the .met file will be generated in /path/to/file's parent directory. Otherwise, if the + external command let met extractor doesn't honor working dir, then all bets + are off. + --> + <exec workingDir=""> + <!-- this path can be absolute or relative --> + <!-- you can optionally specify envReplace tag (=true) + to turn on environment variable replacement + --> + <extractorBinPath>[TEST_PATH]/testExtractor</extractorBinPath> + + <!-- make sure to use character entities if there are any weird + parameters here that would screw up the XML. + + args come after providing the file to this met extractor. So, in other + words, we assume that extractorBinPath >file< <args...> + + where the first parameter is always the file to extract metadata from, + and the remaining parameters are optional to provide to the underlying + met extractor. + --> + <args> + <arg isDataFile="true"/> + <arg isMetFile="true"/> + <arg>-Dtrue=always</arg> + <arg>foo</arg> + <arg>bar</arg> + <!-- you can optionally specify that you would like environment + variable replacement on a particular argument + + You can also optionally specify that the argument is a path + and that you would like it to be treated as such using the + isPath="true". If not specified, the path is treated as if + isPath was specified as "false", and String.replaceAll("\\s", "\\\\ ") + is not called. If called, all white spaces are replaced from the path + (using the above regex), and replaced with the literal string + "\ ". + --> + <arg envReplace="true" isPath="true">[HOME]/test boo</arg> + </args> + </exec> + +</cas:externextractor> \ No newline at end of file Added: oodt/trunk/metadata/src/test/resources/met_extr_preconditions.xml URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/met_extr_preconditions.xml?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/met_extr_preconditions.xml (added) +++ oodt/trunk/metadata/src/test/resources/met_extr_preconditions.xml Tue Oct 14 19:56:52 2014 @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE.txt file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you under the Apache License, Version 2.0 (the "License"); you may not +use this file except in compliance with the License. You may obtain a copy of +the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. +--> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> + + + <!-- Precondition Comparators --> + <bean id="PreconditionComparator" lazy-init="true" abstract="true" class="org.apache.oodt.cas.metadata.preconditions.PreConditionComparator"/> + + + <bean id="CheckThatDataFileSizeIsGreaterThanZero" lazy-init="true" parent="PreconditionComparator" class="org.apache.oodt.cas.metadata.preconditions.FileSizeComparator"> + <property name="description" value="Check if the current data file size is greater than zero"/> + <property name="compareItem"> + <value type="java.lang.Long">0</value> + </property> + <property name="type" value="greater_than"/> + </bean> + + <bean id="CheckThatDataFileExists" lazy-init="true" parent="PreconditionComparator" class="org.apache.oodt.cas.metadata.preconditions.ExistanceCheckComparator"> + <property name="description" value="Check if the current data file exists"/> + <property name="compareItem"> + <value type="java.lang.Boolean">true</value> + </property> + <property name="type" value="equal_to"/> + </bean> + + <bean id="CheckDataFileMimeType" lazy-init="true" parent="PreconditionComparator" class="org.apache.oodt.cas.metadata.preconditions.MimeTypeComparator"> + <property name="description" value="Check that data file mime type matches the specified mime type"/> + <property name="compareItem"> + <value type="java.lang.String">application/xml</value> + </property> + <property name="type" value="equal_to"/> + <property name="mimeTypeRepo" value="./src/testdata/tika-mimetypes.xml"/> + <property name="useMagic" value="true"/> + </bean> + +</beans> \ No newline at end of file Added: oodt/trunk/metadata/src/test/resources/product-type-patterns-2.xml URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/product-type-patterns-2.xml?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/product-type-patterns-2.xml (added) +++ oodt/trunk/metadata/src/test/resources/product-type-patterns-2.xml Tue Oct 14 19:56:52 2014 @@ -0,0 +1,12 @@ +<config> + <!-- <element> MUST be defined before <product-type> so their patterns can be resolved --> + <!-- name MUST be an element defined in elements.xml (also only upper and lower case alpha chars) --> + <!-- regexp MUST be valid input to java.util.regex.Pattern.compile() --> + <element name="ISBN" regexp="[0-9]{10}"/> + <element name="Page" regexp="[0-9]*"/> + + <!-- name MUST be a ProductType name defined in product-types.xml --> + <!-- metadata elements inside brackets MUST be mapped to the ProductType, as defined in product-type-element-map.xml --> + <product-type name="Book" template="book-[ISBN].txt"/> + <product-type name="BookPage" template="page-[Page]-[ISBN].txt"/> +</config> Added: oodt/trunk/metadata/src/test/resources/product-type-patterns.xml URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/product-type-patterns.xml?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/product-type-patterns.xml (added) +++ oodt/trunk/metadata/src/test/resources/product-type-patterns.xml Tue Oct 14 19:56:52 2014 @@ -0,0 +1,12 @@ +<config> + <!-- <element> MUST be defined before <product-type> so their patterns can be resolved --> + <!-- name MUST be an element defined in elements.xml (also only upper and lower case alpha chars) --> + <!-- regexp MUST be valid input to java.util.regex.Pattern.compile() --> + <element name="ISBN" regexp="[0-9]{10}"/> + <element name="Page" regexp="[0-9]*"/> + + <!-- name MUST be a ProductType name defined in product-types.xml --> + <!-- metadata elements inside brackets MUST be mapped to the ProductType, as defined in product-type-element-map.xml --> + <product-type name="Book" template="book-[ISBN].txt"/> + <product-type name="BookPage" template="page-[ISBN]-[Page].txt"/> +</config> Added: oodt/trunk/metadata/src/test/resources/samplemet.xml URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/samplemet.xml?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/samplemet.xml (added) +++ oodt/trunk/metadata/src/test/resources/samplemet.xml Tue Oct 14 19:56:52 2014 @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- FIXME: change namespace URI? --> +<cas:metadata xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas"> + <keyval> + <key>Filename</key> + <val>testfile.txt</val> + </keyval> + <keyval> + <key>FileLocation</key> + <val>[EXTRACT_FILE_LOC]</val> + </keyval> + <keyval> + <key>ProductType</key> + <val>GenericFile</val> + </keyval> +</cas:metadata> Added: oodt/trunk/metadata/src/test/resources/testExtractor URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/testExtractor?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/testExtractor (added) +++ oodt/trunk/metadata/src/test/resources/testExtractor Tue Oct 14 19:56:52 2014 @@ -0,0 +1,21 @@ +#!/bin/sh + +export PROD_FILE=$1 +export MET_FILE=$2 + +set PROD_FILE +set MET_FILE + +#echo "PWD IS $PWD and CWD is $CWD" +#echo "product file: $PROD_FILE, met file: $MET_FILE" + +export PROD_DIR=`dirname $PROD_FILE` +set PROD_DIR +export MET_DIR=`dirname $MET_FILE` +set PROD_DIR + + +if [ $PROD_DIR = $MET_DIR ]; then + # just copy the sample metadata + cp <TEST_SAMPLE_MET_PATH> $MET_FILE +fi Propchange: oodt/trunk/metadata/src/test/resources/testExtractor ------------------------------------------------------------------------------ svn:executable = * Added: oodt/trunk/metadata/src/test/resources/testfile.txt URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/testfile.txt?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/testfile.txt (added) +++ oodt/trunk/metadata/src/test/resources/testfile.txt Tue Oct 14 19:56:52 2014 @@ -0,0 +1 @@ +This is a test file. Added: oodt/trunk/metadata/src/test/resources/testfile2.txt URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/testfile2.txt?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/testfile2.txt (added) +++ oodt/trunk/metadata/src/test/resources/testfile2.txt Tue Oct 14 19:56:52 2014 @@ -0,0 +1 @@ +This is a test file. Added: oodt/trunk/metadata/src/test/resources/testfile2.txt.met URL: http://svn.apache.org/viewvc/oodt/trunk/metadata/src/test/resources/testfile2.txt.met?rev=1631859&view=auto ============================================================================== --- oodt/trunk/metadata/src/test/resources/testfile2.txt.met (added) +++ oodt/trunk/metadata/src/test/resources/testfile2.txt.met Tue Oct 14 19:56:52 2014 @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- FIXME: change namespace URI? --> +<cas:metadata xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas"> + <keyval> + <key>Filename</key> + <val>testfile.txt</val> + </keyval> + <keyval> + <key>FileLocation</key> + <val>[EXTRACT_FILE_LOC]</val> + </keyval> + <keyval> + <key>ProductType</key> + <val>GenericFile</val> + </keyval> +</cas:metadata>
