You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:55:10 UTC

[sling-org-apache-sling-models-api] 30/34: SLING-4161 move validation to separate bundle

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.models.api-1.2.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-api.git

commit f817ebe997085d2177f8ea7c6b7d04e85349561f
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon Jun 1 16:24:13 2015 +0000

    SLING-4161 move validation to separate bundle
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/models/api@1682946 13f79535-47bb-0310-9956-ffa450edef68
---
 pom.xml                                            | 13 -----
 .../InvalidModelException.java}                    | 19 +++++-
 .../models/factory/InvalidResourceException.java   | 68 ----------------------
 .../apache/sling/models/factory/ModelFactory.java  | 10 ++--
 ...odelException.java => ValidationException.java} | 12 ++--
 .../apache/sling/models/spi/ModelValidation.java   | 35 +++++++++++
 .../org/apache/sling/models/spi/package-info.java  |  2 +-
 7 files changed, 64 insertions(+), 95 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7f4e053..9ead9f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,19 +68,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.validation.api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.5</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>com.google.code.findbugs</groupId>
             <artifactId>jsr305</artifactId>
             <version>3.0.0</version>
diff --git a/src/main/java/org/apache/sling/models/spi/package-info.java b/src/main/java/org/apache/sling/models/factory/InvalidModelException.java
similarity index 61%
copy from src/main/java/org/apache/sling/models/spi/package-info.java
copy to src/main/java/org/apache/sling/models/factory/InvalidModelException.java
index f97a279..fefaa2b 100644
--- a/src/main/java/org/apache/sling/models/spi/package-info.java
+++ b/src/main/java/org/apache/sling/models/factory/InvalidModelException.java
@@ -14,7 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.0.3")
-package org.apache.sling.models.spi;
+package org.apache.sling.models.factory;
 
-import aQute.bnd.annotation.Version;
\ No newline at end of file
+import org.apache.sling.models.spi.ModelValidation;
+
+/**
+ * Thrown in case the given model type could not be validated through the {@link ModelValidation}.
+ * The actual validation error message is encapsulated
+ * @see ModelFactory
+ */
+public class InvalidModelException extends RuntimeException {
+    private static final long serialVersionUID = 366657841414210438L;
+
+    public InvalidModelException(String message) {
+        super(message);
+    }
+    
+}
diff --git a/src/main/java/org/apache/sling/models/factory/InvalidResourceException.java b/src/main/java/org/apache/sling/models/factory/InvalidResourceException.java
deleted file mode 100644
index 78fbdc3..0000000
--- a/src/main/java/org/apache/sling/models/factory/InvalidResourceException.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.sling.models.factory;
-
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.sling.validation.api.ValidationResult;
-
-/**
- * Thrown in case Sling Validation detected an invalid resource upon which the model should be instantiated.
- * @see <a href="http://sling.apache.org/documentation/bundles/validation.html">Sling Validation</a>
- * @see ModelFactory
- */
-public class InvalidResourceException extends RuntimeException {
-    private static final long serialVersionUID = 366657841414210438L;
-    private final ValidationResult result;
-    private final String path;
-
-    public InvalidResourceException(ValidationResult result, String path) {
-        if (result.isValid()) {
-            throw new IllegalArgumentException("Could not create a validator exception from a valid validation result!");
-        }
-        this.path = path;
-        this.result = result;
-    }
-    
-    /**
-     * 
-     * @return the underlying {@link ValidationResult}
-     */
-    public ValidationResult getResult() {
-        return result;
-    }
-    
-    /**
-     * 
-     * @return the path of the resource which was considered invalid
-     */
-    public String getPath() {
-        return path;
-    }
-
-    @Override
-    public String getMessage() {
-        StringBuilder builder = new StringBuilder("Validation errors for ");
-        builder.append("'" + path +"':");
-        for (Entry<String, List<String>> entry : result.getFailureMessages().entrySet()) {
-            builder.append("\n" + entry.getKey() + ":" + StringUtils.join(entry.getValue(), "\n\t"));
-        }
-        return builder.toString();
-    }
-}
diff --git a/src/main/java/org/apache/sling/models/factory/ModelFactory.java b/src/main/java/org/apache/sling/models/factory/ModelFactory.java
index 7a88d81..462e7c9 100644
--- a/src/main/java/org/apache/sling/models/factory/ModelFactory.java
+++ b/src/main/java/org/apache/sling/models/factory/ModelFactory.java
@@ -20,6 +20,8 @@ package org.apache.sling.models.factory;
 
 import javax.annotation.Nonnull;
 
+import org.apache.sling.models.spi.ModelValidation;
+
 
 /**
  * The ModelFactory instantiates Sling Model classes similar to adaptTo but is allowed to throw an exception in case
@@ -34,13 +36,13 @@ public interface ModelFactory {
      * @return a new instance for the required model (never null)
      * @throws MissingElementsException in case no injector was able to inject some required values with the given types
      * @throws InvalidAdaptableException in case the given class cannot be instantiated from the given adaptable (different adaptable on the model annotation)
-     * @throws ModelClassException in case the model could not be instanciated because model annotation was missing, reflection failed, no valid constructor was found or post-construct could not be called
+     * @throws ModelClassException in case the model could not be instantiated because model annotation was missing, reflection failed, no valid constructor was found or post-construct could not be called
      * @throws PostConstructException in case the post-construct method has thrown an exception itself
-     * @throws InvalidValidationModelException in case an invalid validation model was found
-     * @throws InvalidResourceException in case the resource (for the Sling Model) could not be validated through Sling Validation
+     * @throws ValidationException in case validation could not be performed for some reason (e.g. no validation information available)
+     * @throws InvalidModelException in case the given model type could not be validated through the {@link ModelValidation}
      */
     public @Nonnull <ModelType> ModelType createModel(@Nonnull Object adaptable, @Nonnull Class<ModelType> type) throws MissingElementsException,
-            InvalidAdaptableException, ModelClassException, PostConstructException, InvalidValidationModelException, InvalidResourceException;
+            InvalidAdaptableException, ModelClassException, PostConstructException, ValidationException, InvalidModelException;
 
     /**
      * 
diff --git a/src/main/java/org/apache/sling/models/factory/InvalidValidationModelException.java b/src/main/java/org/apache/sling/models/factory/ValidationException.java
similarity index 69%
rename from src/main/java/org/apache/sling/models/factory/InvalidValidationModelException.java
rename to src/main/java/org/apache/sling/models/factory/ValidationException.java
index a1620e8..58f056e 100644
--- a/src/main/java/org/apache/sling/models/factory/InvalidValidationModelException.java
+++ b/src/main/java/org/apache/sling/models/factory/ValidationException.java
@@ -16,22 +16,22 @@
  */
 package org.apache.sling.models.factory;
 
+
 /**
- * Thrown in case an invalid Sling validation model was found or no validation model was found at all 
+ * Thrown in case an validation could not be performed for the given model.
  * (although it would be required through {@link org.apache.sling.models.annotations.ValidationStrategy.REQUIRED}).
- * Usually just wraps a {@link org.apache.sling.validation.api.exceptions.SlingValidationException}
- * @see <a href="http://sling.apache.org/documentation/bundles/validation.html">Sling Validation</a>
+ * Depends on the actual implementation under which exact cirumstances this is thrown.
  * @see ModelFactory
  */
-public class InvalidValidationModelException extends RuntimeException {
+public class ValidationException extends RuntimeException {
 
     private static final long serialVersionUID = 1115037385798809055L;
 
-    public InvalidValidationModelException(String message) {
+    public ValidationException(String message) {
         super(message);
     }
 
-    public InvalidValidationModelException(Throwable cause) {
+    public ValidationException(Throwable cause) {
         super(cause);
     }
 
diff --git a/src/main/java/org/apache/sling/models/spi/ModelValidation.java b/src/main/java/org/apache/sling/models/spi/ModelValidation.java
new file mode 100644
index 0000000..673b0db
--- /dev/null
+++ b/src/main/java/org/apache/sling/models/spi/ModelValidation.java
@@ -0,0 +1,35 @@
+/*
+ * 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.sling.models.spi;
+
+import org.apache.sling.models.factory.InvalidModelException;
+import org.apache.sling.models.factory.ValidationException;
+
+public interface ModelValidation {
+
+    /**
+     * Triggers validation for the given model on the given adaptable
+     * @param adaptable the adaptable about to be used instantiate the Sling Model Class
+     * @param modelClass the class of the model which is about to be instantiated
+     * @param required if {@code true} validation fails even if validation model can't be found.
+     * @return {@code null} if validation was successful, otherwise either {@link ValidationException} 
+     * in case validation could not be performed for some reason (e.g. no validation information available)
+     * or {@link InvalidModelException} in case the given model type could not be validated through the {@link ModelValidation}.
+     */
+    public abstract <ModelType> RuntimeException validate(Object adaptable, Class<ModelType> modelClass, boolean required) throws ValidationException, InvalidModelException;
+
+}
diff --git a/src/main/java/org/apache/sling/models/spi/package-info.java b/src/main/java/org/apache/sling/models/spi/package-info.java
index f97a279..a16e5d0 100644
--- a/src/main/java/org/apache/sling/models/spi/package-info.java
+++ b/src/main/java/org/apache/sling/models/spi/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.0.3")
+@Version("1.1.0")
 package org.apache.sling.models.spi;
 
 import aQute.bnd.annotation.Version;
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.