You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jl...@apache.org on 2022/05/03 12:22:12 UTC

svn commit: r1900504 [3/22] - in /geronimo/specs/trunk: ./ geronimo-activation_2.0_spec/ geronimo-activation_2.0_spec/src/ geronimo-activation_2.0_spec/src/main/ geronimo-activation_2.0_spec/src/main/java/ geronimo-activation_2.0_spec/src/main/java/jak...

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.java Tue May  3 12:22:08 2022
@@ -0,0 +1,143 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE 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.
+ */
+package org.apache.geronimo.specs.activation;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ConcurrentHashMap;
+
+import jakarta.activation.MailcapCommandMap;
+import jakarta.activation.CommandMap;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleEvent;
+import org.osgi.service.log.LogService;
+import org.osgi.util.tracker.BundleTrackerCustomizer;
+
+public class CommandMapBundleTrackerCustomizer implements BundleTrackerCustomizer {
+    // our base Activator (used as a service source)
+    private Activator activator;
+    // the bundle hosting the activation code
+    private Bundle activationBundle;
+    // the accumulated list of provider bundles that have command definitions
+    private ConcurrentMap<Long, URL> mailCaps = new ConcurrentHashMap<Long, URL>();
+
+    public CommandMapBundleTrackerCustomizer(Activator a, Bundle b) {
+        activator = a;
+        activationBundle = b;
+    }
+
+    /**
+     * Handle the activation of a new bundle.
+     *
+     * @param bundle The source bundle.
+     * @param event  The bundle event information.
+     *
+     * @return A return object.
+     */
+    public Object addingBundle(Bundle bundle, BundleEvent event) {
+        if (bundle.equals(activationBundle)) {
+            return null;
+        }
+
+        return registerBundle(bundle);
+    }
+
+    /**
+     * Perform the check for an existing mailcap file when
+     * a bundle is registered.
+     *
+     * @param bundle The potential provider bundle.
+     *
+     * @return A URL object if this bundle contains a mailcap file.
+     */
+    private Object registerBundle(Bundle bundle) {
+        URL url = bundle.getResource("/META-INF/mailcap");
+        if (url != null) {
+            log(LogService.LOG_DEBUG, "found mailcap at " + url);
+            mailCaps.put(bundle.getBundleId(), url);
+            rebuildCommandMap();
+        }
+        // the url marks our interest in additional activity for this
+        // bundle.
+        return url;
+    }
+
+
+    /**
+     * Remove a bundle from our potential mailcap pool.
+     *
+     * @param bundle The potential source bundle.
+     */
+    protected void unregisterBundle(Bundle bundle) {
+        URL mailcap = mailCaps.remove(bundle.getBundleId());
+        if (mailcap != null ){
+            log(LogService.LOG_DEBUG, "removing mailcap at " + mailcap);
+            rebuildCommandMap();
+        }
+    }
+
+
+    public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
+        log(LogService.LOG_DEBUG, "Bundle Considered for mailcap providers: " + bundle.getSymbolicName());
+        // this will update for the new bundle
+        registerBundle(bundle);
+    }
+
+    public void removedBundle(Bundle bundle, BundleEvent event, Object object) {
+        unregisterBundle(bundle);
+    }
+
+    private void log(int level, String message) {
+        activator.log(level, message);
+    }
+
+    private void log(int level, String message, Throwable th) {
+        activator.log(level, message, th);
+    }
+
+    /**
+     * Rebuild a new default command map after a change in
+     * the status of bundles providing command maps.
+     */
+    private void rebuildCommandMap() {
+        MailcapCommandMap commandMap = new MailcapCommandMap();
+        for (URL url : mailCaps.values()) {
+            try {
+                InputStream is = url.openStream();
+                try {
+                    BufferedReader br = new BufferedReader(new InputStreamReader(is));
+                    String line;
+                    while ((line = br.readLine()) != null) {
+                        commandMap.addMailcap(line);
+                    }
+                } finally {
+                    is.close();
+                }
+            } catch (Exception e) {
+                // Ignore
+            }
+        }
+        // this is our new default command map
+        CommandMap.setDefaultCommandMap(commandMap);
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/resources/META-INF/mimetypes.default
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/resources/META-INF/mimetypes.default?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/resources/META-INF/mimetypes.default (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/main/resources/META-INF/mimetypes.default Tue May  3 12:22:08 2022
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE 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.
+text/html               html htm HTML HTM
+text/plain              txt text TXT TEXT
+image/gif               gif GIF
+image/ief               ief
+image/jpeg              jpeg jpg jpe JPG
+image/tiff              tiff tif
+image/x-xwindowdump     xwd
+application/postscript  ai eps ps
+application/rtf         rtf
+application/x-tex       tex
+application/x-texinfo   texinfo texi
+application/x-troff     t tr roff
+audio/basic             au
+audio/midi              midi mid
+audio/x-aifc            aifc
+audio/x-aiff            aif aiff
+audio/x-wav             wav
+video/mpeg              mpeg mpg mpe
+video/quicktime         qt mov
+video/x-msvideo         avi

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/ActivationDataFlavorTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/ActivationDataFlavorTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/ActivationDataFlavorTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/ActivationDataFlavorTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,60 @@
+/**
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package jakarta.activation;
+
+import java.io.InputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ActivationDataFlavorTest extends TestCase {
+    public void testMimeTypeConstructorWithoutClass() {
+        ActivationDataFlavor adf = new ActivationDataFlavor("application/*", null);
+        assertEquals("application/*", adf.getMimeType());
+        assertEquals(InputStream.class, adf.getRepresentationClass());
+    }
+
+    public void testMimeTypeConstructorWithClass() {
+        ActivationDataFlavor adf = new ActivationDataFlavor("application/x-java-serialized-object; class=java.lang.Object", null);
+        assertEquals("application/x-java-serialized-object; class=java.lang.Object", adf.getMimeType());
+        assertEquals(InputStream.class, adf.getRepresentationClass());
+    }
+
+    public void testHumanName() {
+        ActivationDataFlavor adf = new ActivationDataFlavor("text/html", "Human Name");
+        assertEquals("Human Name", adf.getHumanPresentableName());
+        adf.setHumanPresentableName("Name 2");
+        assertEquals("Name 2", adf.getHumanPresentableName());
+        adf = new ActivationDataFlavor("text/html", null);
+        assertNull(adf.getHumanPresentableName());
+    }
+
+    public void testEquals() {
+        ActivationDataFlavor adf1 = new ActivationDataFlavor("text/plain", "text/plain");
+        ActivationDataFlavor adf2 = new ActivationDataFlavor("text/plain", "text/plain");
+        assertTrue(adf1.equals(adf2));
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/CommandInfoTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/CommandInfoTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/CommandInfoTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/CommandInfoTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,72 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package jakarta.activation;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import jakarta.activation.CommandInfo;
+import jakarta.activation.CommandObject;
+import jakarta.activation.DataHandler;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class CommandInfoTest extends TestCase {
+    public void testAttributes() {
+        CommandInfo info = new CommandInfo("test", "test.class");
+        assertEquals("test", info.getCommandName());
+        assertEquals("test.class", info.getCommandClass());
+    }
+
+    public void testInvalidClassName() throws IOException {
+        CommandInfo info = new CommandInfo("test", "test.class");
+        try {
+            info.getCommandObject(null, null);
+            fail("Expected ClassNotFoundException");
+        } catch (ClassNotFoundException e) {
+            // ok
+        }
+    }
+
+    public void testCommandObject() throws IOException, ClassNotFoundException {
+        CommandInfo info = new CommandInfo("test", MockCommandObject.class.getName());
+        DataHandler dh = new DataHandler("Hello", "text/plain");
+        Object o = info.getCommandObject(dh, MockCommandObject.class.getClassLoader());
+        assertTrue(o instanceof MockCommandObject);
+        MockCommandObject bean = (MockCommandObject) o;
+        assertEquals("test", bean.verb);
+        assertSame(dh, bean.dh);
+    }
+
+    public static class MockCommandObject implements CommandObject {
+        private String verb;
+        private DataHandler dh;
+
+        public void setCommandContext(String verb, DataHandler dh) {
+            this.verb = verb;
+            this.dh = dh;
+        }
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/DataHandlerTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/DataHandlerTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/DataHandlerTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/DataHandlerTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,73 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package jakarta.activation;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DataHandlerTest extends TestCase {
+    private CommandMap defaultMap;
+
+    public void testObjectInputStream() throws IOException {
+        DataHandler handler = new DataHandler("Hello World", "text/plain");
+        InputStream is = handler.getInputStream();
+        byte[] bytes = new byte[128];
+        assertEquals(11, is.read(bytes));
+        assertEquals("Hello World", new String(bytes, 0, 11));
+    }
+
+    protected void setUp() throws Exception {
+        defaultMap = CommandMap.getDefaultCommandMap();
+        MailcapCommandMap myMap = new MailcapCommandMap();
+        myMap.addMailcap("text/plain;;    x-java-content-handler=" + DummyTextHandler.class.getName());
+        CommandMap.setDefaultCommandMap(myMap);
+    }
+
+    protected void tearDown() throws Exception {
+        CommandMap.setDefaultCommandMap(defaultMap);
+    }
+
+    public static class DummyTextHandler implements DataContentHandler {
+        public ActivationDataFlavor[] getTransferDataFlavors() {
+            throw new UnsupportedOperationException();
+        }
+
+        public Object getTransferData(ActivationDataFlavor df, DataSource ds) throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        public Object getContent(DataSource ds) throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        public void writeTo(Object obj, String mimeType, OutputStream os) throws IOException {
+            os.write(((String)obj).getBytes());
+        }
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MailcapCommandMapTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MailcapCommandMapTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MailcapCommandMapTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MailcapCommandMapTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,122 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package jakarta.activation;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class MailcapCommandMapTest extends TestCase {
+    private MailcapCommandMap map;
+
+    public void testAdd() {
+        map.addMailcap("foo/bar ;; x-java-view=Foo; x-java-edit=Bar");
+        CommandInfo info = map.getCommand("foo/bar", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Foo", info.getCommandClass());
+        info = map.getCommand("foo/bar", "edit");
+        assertEquals("edit", info.getCommandName());
+        assertEquals("Bar", info.getCommandClass());
+    }
+
+    public void testExplicitWildcard() {
+        map.addMailcap("foo/bar ;; x-java-view=Bar");
+        map.addMailcap("foo/* ;; x-java-view=Star");
+        CommandInfo info = map.getCommand("foo/bar", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Bar", info.getCommandClass());
+        info = map.getCommand("foo/foo", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Star", info.getCommandClass());
+        info = map.getCommand("foo/*", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Star", info.getCommandClass());
+// The reference implementation does not appear to handle this the same way.
+//        info = map.getCommand("foo", "view");
+//        assertEquals("view", info.getCommandName());
+//        assertEquals("Star", info.getCommandClass());
+    }
+
+    public void testImplicitWildcard() {
+        map.addMailcap("foo/bar ;; x-java-view=Bar");
+        map.addMailcap("foo ;; x-java-view=Star");
+        CommandInfo info = map.getCommand("foo/bar", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Bar", info.getCommandClass());
+        info = map.getCommand("foo/foo", "view");
+        assertEquals("view", info.getCommandName());
+        assertEquals("Star", info.getCommandClass());
+// The RI is not finding this one either
+//        info = map.getCommand("foo/*", "view");
+//        assertEquals("view", info.getCommandName());
+//        assertEquals("Star", info.getCommandClass());
+    }
+
+    public void testParameterizedMimeType() {
+// TODO:  the RI is not getting a hit on this one.
+//        map.addMailcap("foo/bar ;; x-java-view=Bar");
+//        CommandInfo info = map.getCommand("foo/bar ; type=\"text/plain\"", "view");
+//        assertEquals(
+//        assertEquals("view", info.getCommandName());
+//        assertEquals("Bar", info.getCommandClass());
+    }
+
+    public void testGetNativeCommands() {
+        MailcapCommandMap tmap = new MailcapCommandMap();
+        // a few filler entries just to increase the noise level.
+        tmap.addMailcap("image/gif;;x-java-view=com.sun.activation.viewers.ImageViewer");
+        tmap.addMailcap("image/jpeg;;x-java-view=com.sun.activation.viewers.ImageViewer");
+        tmap.addMailcap("text/*;yada yada;x-java-view=com.sun.activation.viewers.TextViewer");
+        // neither of these is a match
+        tmap.addMailcap("text/*;;x-java-edit=com.sun.activation.viewers.TextEditor");
+        tmap.addMailcap("text/*; ;x-java-edit=com.sun.activation.viewers.TextEditor");
+
+        // need one with multiple entries
+        tmap.addMailcap("text/plain;yada yada;x-java-view=com.sun.activation.viewers.TextViewer");
+        tmap.addMailcap("text/plain;bad a bing;x-java-view=com.sun.activation.viewers.TextViewer");
+
+        String[] commands = tmap.getNativeCommands("text/*");
+
+        assertEquals(1, commands.length);
+        assertEquals("text/*;yada yada;x-java-view=com.sun.activation.viewers.TextViewer", commands[0]);
+
+        commands = tmap.getNativeCommands("text/plain");
+        assertEquals(2, commands.length);
+        assertTrue("text/plain;yada yada;x-java-view=com.sun.activation.viewers.TextViewer".equals(commands[0]) ||
+            "text/plain;bad a bing;x-java-view=com.sun.activation.viewers.TextViewer".equals(commands[0]));
+        assertTrue("text/plain;yada yada;x-java-view=com.sun.activation.viewers.TextViewer".equals(commands[1]) ||
+            "text/plain;bad a bing;x-java-view=com.sun.activation.viewers.TextViewer".equals(commands[1]));
+
+        commands = tmap.getNativeCommands("image/gif");
+        assertEquals(0, commands.length);
+
+        commands = tmap.getNativeCommands("text/html");
+        assertEquals(0, commands.length);
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        map = new MailcapCommandMap();
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeParameterListTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeParameterListTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeParameterListTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeParameterListTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,132 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+package jakarta.activation;
+
+import java.util.Enumeration;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class MimeTypeParameterListTest extends TestCase {
+	public void testEmptyParameterList() {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList();
+		assertEquals(0, parameterList.size());
+        assertTrue(parameterList.isEmpty());
+	}
+
+	public void testSimpleParameterList() throws MimeTypeParseException {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList(";name=value");
+        assertEquals(1, parameterList.size());
+        assertFalse(parameterList.isEmpty());
+        Enumeration e = parameterList.getNames();
+        assertTrue(e.hasMoreElements());
+        assertEquals("name", e.nextElement());
+        assertFalse(e.hasMoreElements());
+		assertEquals("value", parameterList.get("name"));
+	}
+
+    public void testQuotedValue() throws MimeTypeParseException {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList(";name=\"val()ue\"");
+        assertEquals(1, parameterList.size());
+        assertEquals("val()ue", parameterList.get("name"));
+    }
+
+	public void testWhiteSpacesParameterList() throws MimeTypeParseException {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList("; name= value");
+        assertEquals(1, parameterList.size());
+        assertEquals("name", parameterList.getNames().nextElement());
+		assertEquals("value", parameterList.get("name"));
+	}
+
+	public void testLongParameterList() throws MimeTypeParseException {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList(";name1=value1; name2 = value2; name3=value3;name4  = value4");
+		assertEquals(4, parameterList.size());
+		assertEquals("value1", parameterList.get("name1"));
+		assertEquals("value2", parameterList.get("name2"));
+		assertEquals("value3", parameterList.get("name3"));
+		assertEquals("value4", parameterList.get("name4"));
+	}
+
+    public void testCaseInsensitivity() throws MimeTypeParseException {
+		MimeTypeParameterList parameterList = new MimeTypeParameterList(";name1=value; NAME2=VALUE; NaMe3=VaLuE");
+        assertEquals(3, parameterList.size());
+        assertEquals("value", parameterList.get("name1"));
+        assertEquals("VALUE", parameterList.get("name2"));
+        assertEquals("VaLuE", parameterList.get("name3"));
+        assertEquals("value", parameterList.get("NAME1"));
+        assertEquals("value", parameterList.get("NaMe1"));
+        parameterList.remove("NAME1");
+        assertNull(parameterList.get("name1"));
+        parameterList.remove("name3");
+        assertEquals("; name2=VALUE", parameterList.toString());
+    }
+
+	public void testNoValueParameterList() {
+		try {
+			MimeTypeParameterList parameterList = new MimeTypeParameterList("; name=");
+            fail("Expected MimeTypeParseException");
+        } catch (MimeTypeParseException e) {
+            // ok
+		}
+	}
+
+	public void testMissingValueParameterList() {
+		try {
+			MimeTypeParameterList parameterList = new MimeTypeParameterList("; name=;name2=value");
+            fail("Expected MimeTypeParseException");
+        } catch (MimeTypeParseException e) {
+            // ok
+		}
+	}
+
+	public void testNoNameParameterList() {
+		try {
+			MimeTypeParameterList parameterList = new MimeTypeParameterList("; = value");
+// if running on Java 6, the activation framework is included directly in the JRE...it appears
+// the reference implementation is not handling this correctly.
+//          fail("Expected MimeTypeParseException");
+        } catch (MimeTypeParseException e) {
+            // ok
+		}
+	}
+
+	public void testUnterminatedQuotedString() {
+		try {
+			MimeTypeParameterList parameterList = new MimeTypeParameterList("; = \"value");
+            fail("Expected MimeTypeParseException");
+        } catch (MimeTypeParseException e) {
+            // ok
+		}
+	}
+
+	public void testSpecialInAttribute() {
+        String specials = "()<>@,;:\\\"/[]?= \t";
+        for (int i=0; i < specials.length(); i++) {
+            try {
+				MimeTypeParameterList parameterList = new MimeTypeParameterList(";na"+specials.charAt(i)+"me=value");
+                fail("Expected MimeTypeParseException for special: " + specials.charAt(i));
+            } catch (MimeTypeParseException e) {
+                // ok
+            }
+        }
+	}
+}
+

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,283 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+package jakarta.activation;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class MimeTypeTest extends TestCase {
+    private MimeType mimeType;
+
+	public MimeTypeTest(String name) {
+		super(name);
+	}
+
+	public void setUp() throws Exception {
+		super.setUp();
+        mimeType = new MimeType();
+	}
+
+	public void testDefaultConstructor() throws MimeTypeParseException {
+        assertEquals("application/*", mimeType.getBaseType());
+		assertEquals("application", mimeType.getPrimaryType());
+        // not sure as RFC2045 does not allow "*" but this is what the RI does
+		assertEquals("*", mimeType.getSubType());
+
+		assertTrue(mimeType.match(new MimeType()));
+		assertTrue(mimeType.match(new MimeType("application/*")));
+
+        assertNull(mimeType.getParameter("foo"));
+        assertEquals(0, mimeType.getParameters().size());
+        assertTrue(mimeType.getParameters().isEmpty());
+	}
+
+	public void testMimeTypeConstructor() throws MimeTypeParseException {
+		mimeType = new MimeType("text/plain");
+        assertEquals("text/plain", mimeType.getBaseType());
+        assertEquals("text", mimeType.getPrimaryType());
+        assertEquals("plain", mimeType.getSubType());
+        assertEquals("text/plain", mimeType.toString());
+	}
+
+    public void testTypeConstructor() throws MimeTypeParseException {
+        mimeType = new MimeType("text", "plain");
+        assertEquals("text/plain", mimeType.getBaseType());
+        assertEquals("text", mimeType.getPrimaryType());
+        assertEquals("plain", mimeType.getSubType());
+        assertEquals("text/plain", mimeType.toString());
+    }
+
+    public void testConstructorWithParams() throws MimeTypeParseException {
+        mimeType = new MimeType("text/plain; charset=\"iso-8859-1\"");
+        assertEquals("text/plain", mimeType.getBaseType());
+        assertEquals("text", mimeType.getPrimaryType());
+        assertEquals("plain", mimeType.getSubType());
+        MimeTypeParameterList params = mimeType.getParameters();
+        assertEquals(1, params.size());
+        assertEquals("iso-8859-1", params.get("charset"));
+        assertEquals("text/plain; charset=iso-8859-1", mimeType.toString());
+    }
+
+    public void testConstructorWithQuotableParams() throws MimeTypeParseException {
+        mimeType = new MimeType("text/plain; charset=\"iso(8859)\"");
+        assertEquals("text/plain", mimeType.getBaseType());
+        assertEquals("text", mimeType.getPrimaryType());
+        assertEquals("plain", mimeType.getSubType());
+        MimeTypeParameterList params = mimeType.getParameters();
+        assertEquals(1, params.size());
+        assertEquals("iso(8859)", params.get("charset"));
+        assertEquals("text/plain; charset=\"iso(8859)\"", mimeType.toString());
+    }
+
+    public void testWriteExternal() throws MimeTypeParseException, IOException {
+        mimeType = new MimeType("text/plain; charset=iso8859-1");
+        mimeType.writeExternal(new ObjectOutput() {
+            public void writeUTF(String str) {
+                assertEquals("text/plain; charset=iso8859-1", str);
+            }
+
+            public void close() {
+                fail();
+            }
+
+            public void flush() {
+            }
+
+            public void write(int b) {
+                fail();
+            }
+
+            public void write(byte b[]) {
+                fail();
+            }
+
+            public void write(byte b[], int off, int len) {
+                fail();
+            }
+
+            public void writeObject(Object obj) {
+                fail();
+            }
+
+            public void writeDouble(double v) {
+                fail();
+            }
+
+            public void writeFloat(float v) {
+                fail();
+            }
+
+            public void writeByte(int v) {
+                fail();
+            }
+
+            public void writeChar(int v) {
+                fail();
+            }
+
+            public void writeInt(int v) {
+                fail();
+            }
+
+            public void writeShort(int v) {
+                fail();
+            }
+
+            public void writeLong(long v) {
+                fail();
+            }
+
+            public void writeBoolean(boolean v) {
+                fail();
+            }
+
+            public void writeBytes(String s) {
+                fail();
+            }
+
+            public void writeChars(String s){
+                fail();
+            }
+        });
+    }
+
+    public void testReadExternal() throws IOException, ClassNotFoundException {
+        mimeType.readExternal(new ObjectInput() {
+            public String readUTF() {
+                return "text/plain; charset=iso-8859-1";
+            }
+
+            public int available() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int read() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public void close() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public long skip(long n) {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int read(byte b[]) {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int read(byte b[], int off, int len) {
+                fail();
+                throw new AssertionError();
+            }
+
+            public Object readObject() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public byte readByte() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public char readChar() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public double readDouble() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public float readFloat() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int readInt() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int readUnsignedByte() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int readUnsignedShort() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public long readLong() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public short readShort() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public boolean readBoolean() {
+                fail();
+                throw new AssertionError();
+            }
+
+            public int skipBytes(int n) {
+                fail();
+                throw new AssertionError();
+            }
+
+            public void readFully(byte b[]) {
+                fail();
+            }
+
+            public void readFully(byte b[], int off, int len) {
+                fail();
+            }
+
+            public String readLine() {
+                fail();
+                throw new AssertionError();
+            }
+        });
+        assertEquals("text/plain", mimeType.getBaseType());
+        assertEquals("text", mimeType.getPrimaryType());
+        assertEquals("plain", mimeType.getSubType());
+        MimeTypeParameterList params = mimeType.getParameters();
+        assertEquals(1, params.size());
+        assertEquals("iso-8859-1", params.get("charset"));
+        assertEquals("text/plain; charset=iso-8859-1", mimeType.toString());
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimetypesFileTypeMapTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimetypesFileTypeMapTest.java?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimetypesFileTypeMapTest.java (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimetypesFileTypeMapTest.java Tue May  3 12:22:08 2022
@@ -0,0 +1,53 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package jakarta.activation;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class MimetypesFileTypeMapTest extends TestCase {
+    private MimetypesFileTypeMap typeMap;
+
+    public void testDefault() {
+        // unmapped
+        assertEquals("application/octet-stream", typeMap.getContentType("x.foo"));
+        // from META-INF/mimetypes.default
+        assertEquals("text/html", typeMap.getContentType("x.html"));
+    }
+
+    public void testCommentRemoval() {
+        typeMap.addMimeTypes(" text/foo foo #txt");
+        assertEquals("text/foo", typeMap.getContentType("x.foo"));
+        typeMap.addMimeTypes("#text/foo bar");
+        assertEquals("text/foo", typeMap.getContentType("x.foo"));
+        typeMap.addMimeTypes("text/foo #bar");
+        assertEquals("text/foo", typeMap.getContentType("x.foo"));
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        typeMap = new MimetypesFileTypeMap();
+    }
+}

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/META-INF/mimetypes.default
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/META-INF/mimetypes.default?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/META-INF/mimetypes.default (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/META-INF/mimetypes.default Tue May  3 12:22:08 2022
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE 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.
+text/html               html htm HTML HTM
+text/plain              txt text TXT TEXT
+image/gif               gif GIF
+image/ief               ief
+image/jpeg              jpeg jpg jpe JPG
+image/tiff              tiff tif
+image/x-xwindowdump     xwd
+application/postscript  ai eps ps
+application/rtf         rtf
+application/x-tex       tex
+application/x-texinfo   texinfo texi
+application/x-troff     t tr roff
+audio/basic             au
+audio/midi              midi mid
+audio/x-aifc            aifc
+audio/x-aiff            aif aiff
+audio/x-wav             wav
+video/mpeg              mpeg mpg mpe
+video/quicktime         qt mov
+video/x-msvideo         avi

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/ActivationDataFlavor.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/ActivationDataFlavor.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/ActivationDataFlavor.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandInfo.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandInfo.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandInfo.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandMap.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandMap.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandMap.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandObject.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandObject.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/CommandObject.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandler.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandler.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandler.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandlerFactory.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandlerFactory.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataContentHandlerFactory.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler$ObjectDataSource$1.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler%24ObjectDataSource%241.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler$ObjectDataSource$1.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler$ObjectDataSource.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler%24ObjectDataSource.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler$ObjectDataSource.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataHandler.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataSource.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataSource.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/DataSource.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileDataSource.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileDataSource.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileDataSource.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileTypeMap.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileTypeMap.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/FileTypeMap.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MailcapCommandMap.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MailcapCommandMap.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MailcapCommandMap.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeType.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeType.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeType.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList$RFC2045Parser.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList%24RFC2045Parser.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList$RFC2045Parser.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParameterList.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParseException.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParseException.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimeTypeParseException.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimetypesFileTypeMap.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimetypesFileTypeMap.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/MimetypesFileTypeMap.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/URLDataSource.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/URLDataSource.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/URLDataSource.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/UnsupportedDataTypeException.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/UnsupportedDataTypeException.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/jakarta/activation/UnsupportedDataTypeException.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator$LogServiceTracker.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator%24LogServiceTracker.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator$LogServiceTracker.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/Activator.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/classes/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/rat.txt
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/rat.txt?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-activation_2.0_spec/target/rat.txt (added)
+++ geronimo/specs/trunk/geronimo-activation_2.0_spec/target/rat.txt Tue May  3 12:22:08 2022
@@ -0,0 +1,54 @@
+
+*****************************************************
+Summary
+-------
+Generated at: 2022-05-03T14:00:21+02:00
+
+Notes: 0
+Binaries: 0
+Archives: 0
+Standards: 28
+
+Apache Licensed: 28
+Generated Documents: 0
+
+JavaDocs are generated, thus a license header is optional.
+Generated files do not require license headers.
+
+0 Unknown Licenses
+
+*****************************************************
+  Files with Apache License headers will be marked AL
+  Binary files (which do not require any license headers) will be marked B
+  Compressed archives will be marked A
+  Notices, licenses etc. will be marked N
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/pom.xml
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/CommandInfoTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimeTypeParameterListTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/DataHandlerTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MailcapCommandMapTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/MimetypesFileTypeMapTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/test/java/jakarta/activation/ActivationDataFlavorTest.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/resources/META-INF/mimetypes.default
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/CommandMapBundleTrackerCustomizer.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/org/apache/geronimo/specs/activation/Activator.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/MimetypesFileTypeMap.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/URLDataSource.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/UnsupportedDataTypeException.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/MailcapCommandMap.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/DataContentHandler.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/ActivationDataFlavor.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/CommandObject.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/DataHandler.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/MimeTypeParameterList.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/DataContentHandlerFactory.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/MimeTypeParseException.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/FileDataSource.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/CommandInfo.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/MimeType.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/CommandMap.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/FileTypeMap.java
+  AL    /private/tmp/geronimo-specs/geronimo-activation_2.0_spec/src/main/java/jakarta/activation/DataSource.java
+ 
+*****************************************************

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/ActivationDataFlavorTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/ActivationDataFlavorTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/ActivationDataFlavorTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest$MockCommandObject.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest%24MockCommandObject.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest$MockCommandObject.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/CommandInfoTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest$DummyTextHandler.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest%24DummyTextHandler.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest$DummyTextHandler.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/DataHandlerTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MailcapCommandMapTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MailcapCommandMapTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MailcapCommandMapTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeParameterListTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeParameterListTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeParameterListTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest$1.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest%241.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest$1.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest$2.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest%242.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest$2.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimeTypeTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimetypesFileTypeMapTest.class
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimetypesFileTypeMapTest.class?rev=1900504&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/specs/trunk/geronimo-activation_2.0_spec/target/test-classes/jakarta/activation/MimetypesFileTypeMapTest.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/LICENSE
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/LICENSE?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/LICENSE (added)
+++ geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/LICENSE Tue May  3 12:22:08 2022
@@ -0,0 +1,257 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+
+#########################################################################
+## ADDITIONAL LICENSES                                                 ##
+#########################################################################
+
+The XMLSchema.dtd included in this project was developed by the
+W3C Consortium (http://www.w3c.org/).
+Use of the source code, thus licensed, and the resultant binary are
+subject to the terms and conditions of the following license.
+
+W3C¨ SOFTWARE NOTICE AND LICENSE
+Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
+Technology, Institut National de Recherche en Informatique et en Automatique,
+Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items) is
+being provided by the copyright holders under the following license. By
+obtaining, using and/or copying this work, you (the licensee) agree that you
+have read, understood, and will comply with the following terms and
+conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification,  for any purpose and without
+fee or royalty is hereby granted, provided that you include the following on
+ALL copies of the software and documentation or portions thereof, including
+modifications, that you make:
+
+   1. The full text of this NOTICE in a location viewable to users of the
+         redistributed or derivative work.
+   2. Any pre-existing intellectual property disclaimers, notices, or terms
+         and conditions. If none exist, a short notice of the following form
+         (hypertext is preferred, text is permitted) should be used within
+         the body of any redistributed or derivative code: "Copyright ©
+         [$date-of-software] World Wide Web Consortium, (Massachusetts Institute
+         of Technology, Institut National de Recherche en Informatique et en
+         Automatique, Keio University). All Rights Reserved.
+         http://www.w3.org/Consortium/Legal/"
+   3. Notice of any changes or modifications to the W3C files, including the
+         date changes were made. (We recommend you provide URIs to the location
+         from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
+NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
+THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
+COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to the software without specific, written prior permission.
+Title to copyright in this software and any associated documentation will at all
+times remain with copyright holders.

Added: geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/NOTICE
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/NOTICE?rev=1900504&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/NOTICE (added)
+++ geronimo/specs/trunk/geronimo-jakartamail_2.1_spec/NOTICE Tue May  3 12:22:08 2022
@@ -0,0 +1,5 @@
+Apache Geronimo
+Copyright 2003-2018 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).