Coverage Report - org.apache.creadur.whisker.model.LicenseTemplateException
 
Classes in this File Line Coverage Branch Coverage Complexity
LicenseTemplateException
0%
0/32
0%
0/12
2.2
 
 1  
 /**
 2  
  * Licensed to the Apache Software Foundation (ASF) under one
 3  
  * or more contributor license agreements.  See the NOTICE file
 4  
  * distributed with this work for additional information
 5  
  * regarding copyright ownership.  The ASF licenses this file
 6  
  *  to you under the Apache License, Version 2.0 (the
 7  
  * "License"); you may not use this file except in compliance
 8  
  *  with the License.  You may obtain a copy of the License at
 9  
  *
 10  
  *   http://www.apache.org/licenses/LICENSE-2.0
 11  
  *
 12  
  * Unless required by applicable law or agreed to in writing,
 13  
  * software distributed under the License is distributed on an
 14  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15  
  * KIND, either express or implied.  See the License for the
 16  
  * specific language governing permissions and limitations
 17  
  * under the License. 
 18  
  */
 19  
 package org.apache.creadur.whisker.model;
 20  
 
 21  
 import java.util.Collection;
 22  
 import java.util.Map;
 23  
 
 24  
 /**
 25  
  * Indicates that generating an instance of a license
 26  
  * from the template (for the license family) has failed.
 27  
  */
 28  
 public class LicenseTemplateException extends Exception {
 29  
 
 30  
     /** Exception are serializable, so provide a SUID. */
 31  
     private static final long serialVersionUID = -4085365930968672572L;
 32  
     /** Names the erroneous license */
 33  
     private final String licenseName;
 34  
 
 35  
     /**
 36  
      * Builds an exception indicating that parameter passed
 37  
      * do not fulfill expectations.
 38  
      * @param expectedParameters not null
 39  
      * @param actualParameters not null
 40  
      * @param licenseName not null
 41  
      * @return not null
 42  
      */
 43  
     public static LicenseTemplateException parameterMismatch(
 44  
             final Collection<String> expectedParameters,
 45  
             final Collection<String> actualParameters,
 46  
             final String licenseName) {
 47  0
         final StringBuilder message = new StringBuilder("Parameter mismatch for license '");
 48  0
         message.append(licenseName);
 49  0
         message.append('.');
 50  0
         explainDiffs(expectedParameters, actualParameters, message, " Missing parameters: ");
 51  0
         explainDiffs(actualParameters, expectedParameters, message, " Unexpected parameters: ");
 52  0
         return new LicenseTemplateException(message.toString(), licenseName);
 53  
     }
 54  
 
 55  
     /**
 56  
      * Explains the differences between the sample and the base.
 57  
      * @param sample not null
 58  
      * @param base not null
 59  
      * @param message not null
 60  
      * @param preamble not null
 61  
      */
 62  
     private static void explainDiffs(final Collection<String> sample,
 63  
             final Collection<String> base, final StringBuilder message,
 64  
             final String preamble) {
 65  0
         boolean first = true;
 66  0
         for (final String expected:sample) {
 67  0
             if (!base.contains(expected)) {
 68  0
                 if (first) {
 69  0
                     first = false;
 70  0
                     message.append(preamble);
 71  
                 } else {
 72  0
                     message.append(", ");
 73  
                 }
 74  0
                 message.append(expected);
 75  
             }
 76  
         }
 77  0
         if (!first) {
 78  0
             message.append('.');
 79  
         }
 80  0
     }
 81  
 
 82  
     
 83  
     /**
 84  
      * Builds an instance.
 85  
      * @param parameters not null
 86  
      * @param licenseName not null
 87  
      * @return not null 
 88  
      */
 89  
     public static LicenseTemplateException notLicenseTemplate(
 90  
             final Map<String, String> parameters, final String licenseName) {
 91  0
         final StringBuilder message = new StringBuilder("'");
 92  0
         message.append(licenseName);
 93  0
         message.append("' is not a templated license but parameters were set (");
 94  0
         boolean first = true;
 95  0
         for (final String name:parameters.keySet()) {
 96  0
             if (first) {
 97  0
                 first = false;
 98  
             } else {
 99  0
                 message.append(", ");
 100  
             }
 101  0
             message.append(name);
 102  
         }
 103  0
         message.append(")");
 104  0
         return new LicenseTemplateException(message.toString(), licenseName);
 105  
     }
 106  
 
 107  
     /**
 108  
      * Constructs an instance.
 109  
      * @param message not null
 110  
      * @param parameters parameters passed
 111  
      * @param licenseName license name, not null
 112  
      */
 113  
     private LicenseTemplateException(final String message, final String licenseName) {
 114  0
         super(message);
 115  0
         this.licenseName = licenseName;
 116  0
     }
 117  
 
 118  
     /**
 119  
      * Gets the name of the erroneous license.
 120  
      * @return license name, not null
 121  
      */
 122  
     public String getLicenseName() {
 123  0
         return licenseName;
 124  
     }
 125  
 
 126  
     
 127  
 }