Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefect.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefect.java	(revision 1036)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefect.java	(revision 1040)
@@ -1,2 +1,15 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   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.
 
 package de.ugoe.cs.autoquest.usability.evaluation.result;
@@ -7,23 +20,24 @@
 import java.util.Map;
 
-import lombok.AllArgsConstructor;
-import lombok.ExtensionMethod;
-import lombok.Getter;
-
 import org.apache.commons.lang.StringUtils;
 
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
 import de.ugoe.cs.autoquest.usability.DefectDescription;
 import de.ugoe.cs.autoquest.usability.ParameterFragment;
-import de.ugoe.cs.autoquest.usability.util.DefectDescriptionExtensionMethods;
 
-@AllArgsConstructor
-@ExtensionMethod({DefectDescriptionExtensionMethods.class})
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
 public class UsabilityDefect {
 
-    @Getter
     private UsabilityDefectSeverityLevel severityLevel;
 
@@ -32,21 +46,48 @@
     private Map<String, String> descriptionParametersValues;
 
+    public UsabilityDefect(UsabilityDefectSeverityLevel severityLevel,
+                           DefectDescription defectDescription,
+                           Map<String, String> descriptionParametersValues)
+    {
+        super();
+        this.severityLevel = severityLevel;
+        this.defectDescription = defectDescription;
+        this.descriptionParametersValues = descriptionParametersValues;
+    }
+
     public String defectDescription() {
-        if(defectDescription.containsParameterFragments()) {
+        if (containsParameterFragments(defectDescription)) {
             return assembleDefectDescription();
-        } else {
-            return Joiner.on(" ").skipNulls().join(defectDescription.getTextFragmentOrParameterFragment());
+        }
+        else {
+            return Joiner.on(" ").skipNulls()
+                .join(defectDescription.getTextFragmentOrParameterFragment());
         }
     }
 
+    private boolean containsParameterFragments(DefectDescription defectDescription) {
+        return Iterables.any(defectDescription.getTextFragmentOrParameterFragment(),
+                             new Predicate<Object>() {
+
+                                 @Override
+                                 public boolean apply(Object fragment) {
+                                     return fragment instanceof ParameterFragment;
+                                 }
+
+                             });
+    }
+
     private String assembleDefectDescription() {
-        List<String> descriptionParts = 
-                Lists.newArrayListWithCapacity(defectDescription.getTextFragmentOrParameterFragment().size());
+        List<String> descriptionParts =
+            Lists.newArrayListWithCapacity(defectDescription.getTextFragmentOrParameterFragment()
+                .size());
 
         for (Object fragment : defectDescription.getTextFragmentOrParameterFragment()) {
-            if (fragment.isParameterFragment()) {
+            if (isParameterFragment(fragment)) {
                 descriptionParts.add(parameterFragmentAsString((ParameterFragment) fragment));
-            } else {
-                 descriptionParts.add(CharMatcher.WHITESPACE.collapseFrom((String) fragment, ' ').trim());
+            }
+            else {
+                descriptionParts.add(CharMatcher.WHITESPACE.collapseFrom((String) fragment, ' ')
+                    .trim());
             }
         }
@@ -55,12 +96,29 @@
     }
 
+    private boolean isParameterFragment(Object object) {
+        return object instanceof ParameterFragment;
+    }
+
     private String parameterFragmentAsString(ParameterFragment fragment) {
-        String value = descriptionParametersValues.getValueOrEmptyString(fragment.getParameterName());
+        String value =
+            getValueOrEmptyString(descriptionParametersValues, fragment.getParameterName());
         if (StringUtils.isNotEmpty(value)) {
             return value;
-        } else {
-            throw new IllegalArgumentException(format("required parameter \"%s\" for usability defect description not provided", fragment.getParameterName()));
+        }
+        else {
+            throw new IllegalArgumentException(
+                                               format("required parameter \"%s\" for usability defect description not provided",
+                                                      fragment.getParameterName()));
         }
     }
 
+    private String getValueOrEmptyString(Map<String, String> stringKeyValueMap, String key) {
+        return stringKeyValueMap != null && stringKeyValueMap.containsKey(key) ? stringKeyValueMap
+            .get(key) : StringUtils.EMPTY;
+    }
+
+    public UsabilityDefectSeverityLevel getSeverityLevel() {
+        return severityLevel;
+    }
+
 }
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectDescriptionResolver.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectDescriptionResolver.java	(revision 1036)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectDescriptionResolver.java	(revision 1040)
@@ -1,2 +1,16 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   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.
+
 package de.ugoe.cs.autoquest.usability.evaluation.result;
 
@@ -4,4 +18,11 @@
 import de.ugoe.cs.autoquest.usability.evaluation.rule.set.UsabilityRule;
 
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
 public interface UsabilityDefectDescriptionResolver {
 
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectFactory.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectFactory.java	(revision 1036)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectFactory.java	(revision 1040)
@@ -1,2 +1,15 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   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.
 
 package de.ugoe.cs.autoquest.usability.evaluation.result;
@@ -6,8 +19,19 @@
 import de.ugoe.cs.autoquest.usability.DefectDescription;
 import de.ugoe.cs.autoquest.usability.evaluation.rule.set.UsabilityRule;
-import lombok.AllArgsConstructor;
 
-@AllArgsConstructor
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
 public class UsabilityDefectFactory {
+
+    public UsabilityDefectFactory(UsabilityDefectDescriptionResolver usabilityDefectDescriptionResolver)
+    {
+        super();
+        this.usabilityDefectDescriptionResolver = usabilityDefectDescriptionResolver;
+    }
 
     private final UsabilityDefectDescriptionResolver usabilityDefectDescriptionResolver;
@@ -15,5 +39,6 @@
     public UsabilityDefect createUsabilityGuidlineRecommendation(UsabilityDefectSeverityLevel recommendationSeverityLevel,
                                                                  UsabilityRule usabilityRule,
-                                                                 Map<String, String> recommendationMessageParameteValues) {
+                                                                 Map<String, String> recommendationMessageParameteValues)
+    {
         DefectDescription guidlineDescription =
             usabilityDefectDescriptionResolver.descriptionFor(usabilityRule);
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectSeverityLevel.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectSeverityLevel.java	(revision 1036)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectSeverityLevel.java	(revision 1040)
@@ -1,7 +1,28 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   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.
+
 package de.ugoe.cs.autoquest.usability.evaluation.result;
 
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
 public enum UsabilityDefectSeverityLevel {
 
     INFO, LOW, MEDIUM, HIGH;
-    
+
 }
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectXmlDescriptionResolver.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectXmlDescriptionResolver.java	(revision 1036)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/evaluation/result/UsabilityDefectXmlDescriptionResolver.java	(revision 1040)
@@ -1,2 +1,16 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   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.
+
 package de.ugoe.cs.autoquest.usability.evaluation.result;
 
@@ -16,20 +30,27 @@
 import de.ugoe.cs.autoquest.usability.evaluation.rule.set.UsabilityRule;
 
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Alexander Deicke
+ */
 public class UsabilityDefectXmlDescriptionResolver implements UsabilityDefectDescriptionResolver {
-    
+
     private static final String DEFAULT_MESSAGES_FILE = "defectDescriptions_en.xml";
-    
-    private static final UsabilityDefectXmlDescriptionResolver instance = new UsabilityDefectXmlDescriptionResolver();
-    
+
+    private static final UsabilityDefectXmlDescriptionResolver instance =
+        new UsabilityDefectXmlDescriptionResolver();
+
     private DefectDescriptions defectDescriptions;
-    
+
     private UsabilityDefectXmlDescriptionResolver() {
         loadDescriptions();
     }
-    
+
     @SuppressWarnings("unchecked")
     private void loadDescriptions() {
-        InputStream inputStream =
-                ClassLoader.getSystemResourceAsStream(DEFAULT_MESSAGES_FILE);
+        InputStream inputStream = ClassLoader.getSystemResourceAsStream(DEFAULT_MESSAGES_FILE);
         try {
             String packageName = DefectDescriptions.class.getPackage().getName();
@@ -38,10 +59,8 @@
 
             defectDescriptions =
-                ((JAXBElement<DefectDescriptions>) unmarshaller.unmarshal(inputStream))
-                    .getValue();
+                ((JAXBElement<DefectDescriptions>) unmarshaller.unmarshal(inputStream)).getValue();
         }
         catch (Exception e) {
-            throw new RuntimeException
-                ("error while initializing usability defect descriptions", e);
+            throw new RuntimeException("error while initializing usability defect descriptions", e);
         }
         finally {
@@ -56,5 +75,5 @@
         }
     }
-    
+
     public static UsabilityDefectXmlDescriptionResolver instance() {
         return instance;
@@ -63,15 +82,19 @@
     @Override
     public DefectDescription descriptionFor(final UsabilityRule usabilityRule) {
-        Optional<DefectDescription> guidlineDescription = Iterables.tryFind(defectDescriptions.getDefectDescription(), new Predicate<DefectDescription>() {
-            
-            public boolean apply(DefectDescription defectDescription) {
-                return usabilityRule.ruleIdentifier().equals(defectDescription.getDefectId());
-            }
-            
-        });
-        if(!guidlineDescription.isPresent())
-            throw new RuntimeException
-            ("error while initializing usability defect descriptions. No " +
-                    "description text available for description " + usabilityRule.ruleIdentifier());
+        Optional<DefectDescription> guidlineDescription =
+            Iterables.tryFind(defectDescriptions.getDefectDescription(),
+                              new Predicate<DefectDescription>() {
+
+                                  public boolean apply(DefectDescription defectDescription) {
+                                      return usabilityRule.ruleIdentifier()
+                                          .equals(defectDescription.getDefectId());
+                                  }
+
+                              });
+        if (!guidlineDescription.isPresent())
+            throw new RuntimeException(
+                                       "error while initializing usability defect descriptions. No " +
+                                           "description text available for description " +
+                                           usabilityRule.ruleIdentifier());
         return guidlineDescription.get();
     }
