You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by rd...@apache.org on 2011/12/01 22:41:57 UTC

svn commit: r1209261 - in /incubator/rat/whisker/trunk: apache-whisker-model/src/main/java/org/apache/rat/whisker/model/ apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/ apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/

Author: rdonkin
Date: Thu Dec  1 21:41:56 2011
New Revision: 1209261

URL: http://svn.apache.org/viewvc?rev=1209261&view=rev
Log:
Build license

Added:
    incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java   (with props)
Modified:
    incubator/rat/whisker/trunk/apache-whisker-model/src/main/java/org/apache/rat/whisker/model/License.java
    incubator/rat/whisker/trunk/apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/JDomBuilder.java

Modified: incubator/rat/whisker/trunk/apache-whisker-model/src/main/java/org/apache/rat/whisker/model/License.java
URL: http://svn.apache.org/viewvc/incubator/rat/whisker/trunk/apache-whisker-model/src/main/java/org/apache/rat/whisker/model/License.java?rev=1209261&r1=1209260&r2=1209261&view=diff
==============================================================================
--- incubator/rat/whisker/trunk/apache-whisker-model/src/main/java/org/apache/rat/whisker/model/License.java (original)
+++ incubator/rat/whisker/trunk/apache-whisker-model/src/main/java/org/apache/rat/whisker/model/License.java Thu Dec  1 21:41:56 2011
@@ -35,13 +35,13 @@ public class License implements Comparab
     private final String url;
     private final String name;
     
-    private License(boolean isSourceRequired, String baseText,
+    public License(boolean isSourceRequired, String baseText,
             Collection<String> expectedParameters, String id, String url,
             String name) {
         super();
         this.isSourceRequired = isSourceRequired;
         this.baseText = baseText;
-        this.expectedParameters = expectedParameters;
+        this.expectedParameters = Collections.unmodifiableCollection(expectedParameters);
         this.id = id;
         this.url = url;
         this.name = name;
@@ -58,6 +58,10 @@ public class License implements Comparab
     public String getText(final Map<String, String> parameters) throws LicenseTemplateException {
         return substituteInto(validate(parameters), baseText);
     }
+    
+    public Collection<String> getExpectedParameters() {
+        return expectedParameters;
+    }
 
     /**
      * @param parameters

Modified: incubator/rat/whisker/trunk/apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/JDomBuilder.java
URL: http://svn.apache.org/viewvc/incubator/rat/whisker/trunk/apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/JDomBuilder.java?rev=1209261&r1=1209260&r2=1209261&view=diff
==============================================================================
--- incubator/rat/whisker/trunk/apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/JDomBuilder.java (original)
+++ incubator/rat/whisker/trunk/apache-whisker-xml/src/main/java/org/apache/rat/whisker/fromxml/JDomBuilder.java Thu Dec  1 21:41:56 2011
@@ -20,6 +20,7 @@ package org.apache.rat.whisker.fromxml;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.SortedSet;
@@ -27,6 +28,7 @@ import java.util.TreeSet;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.rat.whisker.model.ByOrganisation;
+import org.apache.rat.whisker.model.License;
 import org.apache.rat.whisker.model.Organisation;
 import org.apache.rat.whisker.model.Resource;
 import org.jdom.Element;
@@ -153,4 +155,31 @@ public class JDomBuilder {
         }
         return Collections.unmodifiableSortedSet(results);
     }
+
+    /**
+     * Builds a license model from xml.
+     * @param element not null
+     * @return not null
+     */
+    public License license(Element element) {
+        final Element text = element.getChild("text");
+        return new License("yes".equalsIgnoreCase(element.getAttributeValue("requires-source")), 
+                text == null ? "" : text.getText(), 
+                expectedParameters(element), 
+                element.getAttributeValue("id"), 
+                element.getAttributeValue("url"),
+                element.getAttributeValue("name"));
+    }
+    
+    @SuppressWarnings("unchecked")
+    private Collection<String> expectedParameters(final Element element) {
+        final Collection<String> results = new HashSet<String>();
+        final Element templateElement = element.getChild("template");
+        if (templateElement != null) {
+            for (Element parameterNameElement: (List<Element>) templateElement.getChildren("parameter-name")) {
+                results.add(parameterNameElement.getTextTrim());
+            }
+        }
+        return results;
+    }
 }

Added: incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java
URL: http://svn.apache.org/viewvc/incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java?rev=1209261&view=auto
==============================================================================
--- incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java (added)
+++ incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java Thu Dec  1 21:41:56 2011
@@ -0,0 +1,161 @@
+/**
+ * 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.rat.whisker.fromxml;
+
+import org.apache.rat.whisker.model.License;
+import org.jdom.CDATA;
+import org.jdom.Element;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ */
+public class JDomBuilderLicenseTest extends TestCase {
+
+    private JDomBuilder subject;
+    
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        subject = new JDomBuilder();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+    
+    public void testLicenseWithNameUrl() throws Exception {
+        checkSetNameUrlId("a name", "some url", "some id");
+        checkSetNameUrlId("name", "url", "id");
+        checkSetNameUrlId("NAME", "URL", "ID");
+        checkSetNameUrlId("a name", "  some url  ", "  some id  ");        
+    }
+
+    /**
+     * @param nameValue
+     * @param urlValue
+     * @param idValue
+     */
+    private void checkSetNameUrlId(final String nameValue,
+            final String urlValue, final String idValue) {
+        final License result = subject.license(new Element("license")
+                    .setAttribute("name", nameValue)
+                    .setAttribute("url", urlValue)
+                    .setAttribute("id", idValue));
+        assertNotNull("Builder should build", result);
+        assertEquals("Set id", idValue, result.getId());
+        assertEquals("Set url", urlValue, result.getURL());
+        assertEquals("Set name", nameValue, result.getName());
+    }
+    
+    public void testLicenseRequiresSourceTrue() throws Exception {
+        assertTrue("Expected required source to be set", licenseWithSource("yes").isSourceRequired());
+    }
+    
+    public void testLicenseRequiresSourceTrueAllCaps() throws Exception {
+        assertTrue("Expected required source to be set even when yes is in all caps case. This is against the schema.", 
+                licenseWithSource("YES").isSourceRequired());
+    }
+    
+    public void testLicenseRequiresSourceTrueMixedCase() throws Exception {
+        assertTrue("Expected required source to be set even when yes is in mixed case. This is against the schema.", 
+                licenseWithSource("Yes").isSourceRequired());
+    }
+
+    public void testLicenseRequiresSourceFalse() throws Exception {
+        assertFalse("Expected required source to be set", licenseWithSource("no").isSourceRequired());
+    }
+    
+    public void testLicenseRequiresSourceDefault() throws Exception {
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue"));
+        assertNotNull("Builder should build", result);
+        assertFalse("Expected to default to false", result.isSourceRequired());
+    }
+    
+    /**
+     * @param requireSourceValue
+     * @return
+     */
+    private License licenseWithSource(final String requireSourceValue) {
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue")
+            .setAttribute("requires-source", requireSourceValue));
+        assertNotNull("Builder should build", result);
+        return result;
+    }
+    
+    public void testLicenseNoParameters() throws Exception {
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue")
+            .setContent(new Element("template")));
+        assertNotNull("Builder should build", result);
+        assertNotNull("Builder should always set parameters even when empty", result.getExpectedParameters());
+        assertTrue("No parameters in template so collection should be empty", result.getExpectedParameters().isEmpty());
+    }
+
+    public void testLicenseOneParameter() throws Exception {
+        final String parameterName = "whatever";
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue")
+            .setContent(new Element("template").setContent(new Element("parameter-name").setContent(new CDATA(parameterName)))));
+        assertNotNull("Builder should build", result);
+        assertNotNull("Builder should always set parameters even when empty", result.getExpectedParameters());
+        assertEquals("One parameters in template", 1, result.getExpectedParameters().size());
+        assertEquals("Parameter name should be set from xml", parameterName, result.getExpectedParameters().iterator().next());
+    }
+
+    public void testLicenseTwoParameters() throws Exception {
+        final String parameterName = "whatever";
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue")
+            .setContent(new Element("template")
+                .addContent(new Element("parameter-name").setContent(new CDATA(parameterName)))
+                .addContent(new Element("parameter-name").setContent(new CDATA(parameterName + "2")))
+                ));
+        assertNotNull("Builder should build", result);
+        assertNotNull("Builder should always set parameters even when empty", result.getExpectedParameters());
+        assertEquals("One parameters in template", 2, result.getExpectedParameters().size());
+    }
+
+    
+    public void testLicenseBaseText() throws Exception {
+        final String text = "Some text";
+        final License result = subject.license(new Element("license")
+            .setAttribute("name", "name Value")
+            .setAttribute("url", "urlValue")
+            .setAttribute("id", "idValue")
+            .setContent(new Element("text").setContent(new CDATA(text))));
+        assertNotNull("Builder should build", result);
+        assertEquals("Expected base text to be set", text, result.getText());
+    }
+
+}

Propchange: incubator/rat/whisker/trunk/apache-whisker-xml/src/test/java/org/apache/rat/whisker/fromxml/JDomBuilderLicenseTest.java
------------------------------------------------------------------------------
    svn:eol-style = native