Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
refactor(exceptions): Create sbt project "shared" and move exceptions (
…DEV-990) (#2075)

* create sbt project "shared" and move exceptions to this project

* remove unused method

* fix failing tests

* fix failing test

* restructure project and packages
  • Loading branch information
irinaschubert committed Jun 8, 2022
1 parent f3a66cb commit c09392d
Show file tree
Hide file tree
Showing 227 changed files with 497 additions and 529 deletions.
10 changes: 5 additions & 5 deletions build.sbt
Expand Up @@ -201,7 +201,7 @@ lazy val webapi: Project = Project(id = "webapi", base = file("webapi"))
),
buildInfoPackage := "org.knora.webapi.http.version"
)
.dependsOn(valueObjects)
.dependsOn(shared)

lazy val webapiJavaRunOptions = Seq(
// "-showversion",
Expand Down Expand Up @@ -284,10 +284,10 @@ lazy val schemaRepoSearchService = project
)
.dependsOn(schemaRepo)

lazy val valueObjects = project
.in(file("dsp-value-objects"))
lazy val shared = project
.in(file("dsp-shared"))
.settings(
name := "valueObjects",
libraryDependencies ++= Dependencies.valueObjectsLibraryDependencies,
name := "shared",
libraryDependencies ++= Dependencies.sharedLibraryDependencies,
testFrameworks := Seq(new TestFramework("zio.test.sbt.ZTestFramework"))
)
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package org.knora.webapi.exceptions
package dsp.errors

import akka.event.LoggingAdapter
import org.apache.commons.lang3.SerializationException
Expand Down
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation
import dsp.errors.BadRequestException

object Group {

Expand All @@ -16,12 +17,12 @@ object Group {
object GroupName { self =>
def make(value: String): Validation[Throwable, GroupName] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(GroupErrorMessages.GroupNameMissing))
Validation.fail(BadRequestException(GroupErrorMessages.GroupNameMissing))
} else {
val validatedValue = Validation(
V2IriValidation.toSparqlEncodedString(
value,
throw V2.BadRequestException(GroupErrorMessages.GroupNameInvalid)
throw BadRequestException(GroupErrorMessages.GroupNameInvalid)
)
)

Expand All @@ -42,13 +43,13 @@ object Group {
object GroupDescriptions { self =>
def make(value: Seq[V2.StringLiteralV2]): Validation[Throwable, GroupDescriptions] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(GroupErrorMessages.GroupDescriptionsMissing))
Validation.fail(BadRequestException(GroupErrorMessages.GroupDescriptionsMissing))
} else {
val validatedDescriptions = Validation(value.map { description =>
val validatedDescription =
V2IriValidation.toSparqlEncodedString(
description.value,
throw V2.BadRequestException(GroupErrorMessages.GroupDescriptionsInvalid)
throw BadRequestException(GroupErrorMessages.GroupDescriptionsInvalid)
)
V2.StringLiteralV2(value = validatedDescription, language = description.language)
})
Expand Down
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation
import dsp.errors.BadRequestException

sealed trait Iri
object Iri {
Expand All @@ -17,17 +18,17 @@ object Iri {
object GroupIri { self =>
def make(value: String): Validation[Throwable, GroupIri] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(IriErrorMessages.GroupIriMissing))
Validation.fail(BadRequestException(IriErrorMessages.GroupIriMissing))
} else {
val isUuid: Boolean = V2UuidValidation.hasUuidLength(value.split("/").last)

if (!V2IriValidation.isKnoraGroupIriStr(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.GroupIriInvalid))
Validation.fail(BadRequestException(IriErrorMessages.GroupIriInvalid))
} else if (isUuid && !V2UuidValidation.isUuidVersion4Or5(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UuidVersionInvalid))
Validation.fail(BadRequestException(IriErrorMessages.UuidVersionInvalid))
} else {
val validatedValue = Validation(
V2IriValidation.validateAndEscapeIri(value, throw V2.BadRequestException(IriErrorMessages.GroupIriInvalid))
V2IriValidation.validateAndEscapeIri(value, throw BadRequestException(IriErrorMessages.GroupIriInvalid))
)

validatedValue.map(new GroupIri(_) {})
Expand All @@ -48,19 +49,19 @@ object Iri {
object ListIri { self =>
def make(value: String): Validation[Throwable, ListIri] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(IriErrorMessages.ListIriMissing))
Validation.fail(BadRequestException(IriErrorMessages.ListIriMissing))
} else {
val isUuid: Boolean = V2UuidValidation.hasUuidLength(value.split("/").last)

if (!V2IriValidation.isKnoraListIriStr(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.ListIriInvalid))
Validation.fail(BadRequestException(IriErrorMessages.ListIriInvalid))
} else if (isUuid && !V2UuidValidation.isUuidVersion4Or5(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UuidVersionInvalid))
Validation.fail(BadRequestException(IriErrorMessages.UuidVersionInvalid))
} else {
val validatedValue = Validation(
V2IriValidation.validateAndEscapeIri(
value,
throw V2.BadRequestException(IriErrorMessages.ListIriInvalid)
throw BadRequestException(IriErrorMessages.ListIriInvalid)
)
)

Expand All @@ -82,19 +83,19 @@ object Iri {
object ProjectIri { self =>
def make(value: String): Validation[Throwable, ProjectIri] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(IriErrorMessages.ProjectIriMissing))
Validation.fail(BadRequestException(IriErrorMessages.ProjectIriMissing))
} else {
val isUuid: Boolean = V2UuidValidation.hasUuidLength(value.split("/").last)

if (!V2IriValidation.isKnoraProjectIriStr(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.ProjectIriInvalid))
Validation.fail(BadRequestException(IriErrorMessages.ProjectIriInvalid))
} else if (isUuid && !V2UuidValidation.isUuidVersion4Or5(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UuidVersionInvalid))
Validation.fail(BadRequestException(IriErrorMessages.UuidVersionInvalid))
} else {
val validatedValue = Validation(
V2IriValidation.validateAndEscapeProjectIri(
value,
throw V2.BadRequestException(IriErrorMessages.ProjectIriInvalid)
throw BadRequestException(IriErrorMessages.ProjectIriInvalid)
)
)

Expand All @@ -116,19 +117,19 @@ object Iri {
object UserIri { self =>
def make(value: String): Validation[Throwable, UserIri] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UserIriMissing))
Validation.fail(BadRequestException(IriErrorMessages.UserIriMissing))
} else {
val isUuid: Boolean = V2UuidValidation.hasUuidLength(value.split("/").last)

if (!V2IriValidation.isKnoraUserIriStr(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UserIriInvalid))
Validation.fail(BadRequestException(IriErrorMessages.UserIriInvalid))
} else if (isUuid && !V2UuidValidation.isUuidVersion4Or5(value)) {
Validation.fail(V2.BadRequestException(IriErrorMessages.UuidVersionInvalid))
Validation.fail(BadRequestException(IriErrorMessages.UuidVersionInvalid))
} else {
val validatedValue = Validation(
V2IriValidation.validateAndEscapeUserIri(
value,
throw V2.BadRequestException(IriErrorMessages.UserIriInvalid)
throw BadRequestException(IriErrorMessages.UserIriInvalid)
)
)

Expand Down
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation
import dsp.errors.BadRequestException

object List {

Expand All @@ -16,10 +17,10 @@ object List {
object ListName { self =>
def make(value: String): Validation[Throwable, ListName] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ListErrorMessages.ListNameMissing))
Validation.fail(BadRequestException(ListErrorMessages.ListNameMissing))
} else {
val validatedValue = Validation(
V2IriValidation.toSparqlEncodedString(value, throw V2.BadRequestException(ListErrorMessages.ListNameInvalid))
V2IriValidation.toSparqlEncodedString(value, throw BadRequestException(ListErrorMessages.ListNameInvalid))
)

validatedValue.map(new ListName(_) {})
Expand All @@ -39,7 +40,7 @@ object List {
object Position { self =>
def make(value: Int): Validation[Throwable, Position] =
if (value < -1) {
Validation.fail(V2.BadRequestException(ListErrorMessages.InvalidPosition))
Validation.fail(BadRequestException(ListErrorMessages.InvalidPosition))
} else {
Validation.succeed(new Position(value) {})
}
Expand All @@ -58,13 +59,13 @@ object List {
object Labels { self =>
def make(value: Seq[V2.StringLiteralV2]): Validation[Throwable, Labels] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ListErrorMessages.LabelsMissing))
Validation.fail(BadRequestException(ListErrorMessages.LabelsMissing))
} else {
val validatedLabels = Validation(value.map { label =>
val validatedLabel =
V2IriValidation.toSparqlEncodedString(
label.value,
throw V2.BadRequestException(ListErrorMessages.LabelsInvalid)
throw BadRequestException(ListErrorMessages.LabelsInvalid)
)
V2.StringLiteralV2(value = validatedLabel, language = label.language)
})
Expand All @@ -86,13 +87,13 @@ object List {
object Comments { self =>
def make(value: Seq[V2.StringLiteralV2]): Validation[Throwable, Comments] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ListErrorMessages.CommentsMissing))
Validation.fail(BadRequestException(ListErrorMessages.CommentsMissing))
} else {
val validatedComments = Validation(value.map { comment =>
val validatedComment =
V2IriValidation.toSparqlEncodedString(
comment.value,
throw V2.BadRequestException(ListErrorMessages.CommentsInvalid)
throw BadRequestException(ListErrorMessages.CommentsInvalid)
)
V2.StringLiteralV2(value = validatedComment, language = comment.language)
})
Expand Down
Expand Up @@ -6,6 +6,7 @@
package dsp.valueobjects

import zio.prelude.Validation
import dsp.errors.BadRequestException

object Project {

Expand All @@ -18,12 +19,12 @@ object Project {
object Shortcode { self =>
def make(value: String): Validation[Throwable, Shortcode] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.ShortcodeMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.ShortcodeMissing))
} else {
val validatedValue: Validation[Throwable, String] = Validation(
V2ProjectIriValidation.validateProjectShortcode(
value,
throw V2.BadRequestException(ProjectErrorMessages.ShortcodeInvalid)
throw BadRequestException(ProjectErrorMessages.ShortcodeInvalid)
)
)
validatedValue.map(new Shortcode(_) {})
Expand All @@ -43,12 +44,12 @@ object Project {
object Shortname { self =>
def make(value: String): Validation[Throwable, Shortname] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.ShortnameMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.ShortnameMissing))
} else {
val validatedValue = Validation(
V2ProjectIriValidation.validateAndEscapeProjectShortname(
value,
throw V2.BadRequestException(ProjectErrorMessages.ShortnameInvalid)
throw BadRequestException(ProjectErrorMessages.ShortnameInvalid)
)
)
validatedValue.map(new Shortname(_) {})
Expand All @@ -68,7 +69,7 @@ object Project {
object Longname { self =>
def make(value: String): Validation[Throwable, Longname] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.LongnameMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.LongnameMissing))
} else {
Validation.succeed(new Longname(value) {})
}
Expand All @@ -87,7 +88,7 @@ object Project {
object ProjectDescription { self =>
def make(value: Seq[V2.StringLiteralV2]): Validation[Throwable, ProjectDescription] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.ProjectDescriptionsMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.ProjectDescriptionsMissing))
} else {
Validation.succeed(new ProjectDescription(value) {})
}
Expand All @@ -106,7 +107,7 @@ object Project {
object Keywords { self =>
def make(value: Seq[String]): Validation[Throwable, Keywords] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.KeywordsMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.KeywordsMissing))
} else {
Validation.succeed(new Keywords(value) {})
}
Expand All @@ -125,7 +126,7 @@ object Project {
object Logo { self =>
def make(value: String): Validation[Throwable, Logo] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(ProjectErrorMessages.LogoMissing))
Validation.fail(BadRequestException(ProjectErrorMessages.LogoMissing))
} else {
Validation.succeed(new Logo(value) {})
}
Expand Down
Expand Up @@ -7,6 +7,7 @@ package dsp.valueobjects

import zio.prelude.Validation
import scala.util.matching.Regex
import dsp.errors.BadRequestException

object User {

Expand All @@ -31,11 +32,11 @@ object User {
def make(value: String): Validation[Throwable, Username] =
if (value.isEmpty) {
// remove exception return just the error
Validation.fail(V2.BadRequestException(UserErrorMessages.UsernameMissing))
Validation.fail(BadRequestException(UserErrorMessages.UsernameMissing))
} else {
UsernameRegex.findFirstIn(value) match {
case Some(value) => Validation.succeed(new Username(value) {})
case None => Validation.fail(V2.BadRequestException(UserErrorMessages.UsernameInvalid))
case None => Validation.fail(BadRequestException(UserErrorMessages.UsernameInvalid))
}
}

Expand All @@ -55,11 +56,11 @@ object User {

def make(value: String): Validation[Throwable, Email] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(UserErrorMessages.EmailMissing))
Validation.fail(BadRequestException(UserErrorMessages.EmailMissing))
} else {
EmailRegex.findFirstIn(value) match {
case Some(value) => Validation.succeed(new Email(value) {})
case None => Validation.fail(V2.BadRequestException(UserErrorMessages.EmailInvalid))
case None => Validation.fail(BadRequestException(UserErrorMessages.EmailInvalid))
}
}

Expand All @@ -77,7 +78,7 @@ object User {
object GivenName { self =>
def make(value: String): Validation[Throwable, GivenName] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(UserErrorMessages.GivenNameMissing))
Validation.fail(BadRequestException(UserErrorMessages.GivenNameMissing))
} else {
Validation.succeed(new GivenName(value) {})
}
Expand All @@ -96,7 +97,7 @@ object User {
object FamilyName { self =>
def make(value: String): Validation[Throwable, FamilyName] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(UserErrorMessages.FamilyNameMissing))
Validation.fail(BadRequestException(UserErrorMessages.FamilyNameMissing))
} else {
Validation.succeed(new FamilyName(value) {})
}
Expand All @@ -117,11 +118,11 @@ object User {

def make(value: String): Validation[Throwable, Password] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(UserErrorMessages.PasswordMissing))
Validation.fail(BadRequestException(UserErrorMessages.PasswordMissing))
} else {
PasswordRegex.findFirstIn(value) match {
case Some(value) => Validation.succeed(new Password(value) {})
case None => Validation.fail(V2.BadRequestException(UserErrorMessages.PasswordInvalid))
case None => Validation.fail(BadRequestException(UserErrorMessages.PasswordInvalid))
}
}

Expand All @@ -148,9 +149,9 @@ object User {
object LanguageCode { self =>
def make(value: String): Validation[Throwable, LanguageCode] =
if (value.isEmpty) {
Validation.fail(V2.BadRequestException(UserErrorMessages.LanguageCodeMissing))
Validation.fail(BadRequestException(UserErrorMessages.LanguageCodeMissing))
} else if (!V2.SupportedLanguageCodes.contains(value)) {
Validation.fail(V2.BadRequestException(UserErrorMessages.LanguageCodeInvalid))
Validation.fail(BadRequestException(UserErrorMessages.LanguageCodeInvalid))
} else {
Validation.succeed(new LanguageCode(value) {})
}
Expand Down

0 comments on commit c09392d

Please sign in to comment.