Skip to content

Commit

Permalink
Merge branch 'main' into refactor/remove-asResourceClassIri-from-IriC…
Browse files Browse the repository at this point in the history
…onverter
  • Loading branch information
seakayone authored Feb 4, 2025
2 parents 6a521b4 + cebb1ae commit b93078d
Show file tree
Hide file tree
Showing 11 changed files with 241 additions and 324 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import org.knora.webapi.messages.v2.responder.valuemessages.IntegerValueContentV
import org.knora.webapi.routing.UnsafeZioRun
import org.knora.webapi.sharedtestdata.SharedTestDataADM
import org.knora.webapi.slice.admin.domain.model.KnoraProject.ProjectIri
import org.knora.webapi.slice.common.KnoraIris.OntologyIri
import org.knora.webapi.slice.ontology.domain.model.Cardinality.*
import org.knora.webapi.slice.ontology.repo.service.OntologyCache
import org.knora.webapi.store.triplestore.api.TriplestoreService
Expand Down Expand Up @@ -220,7 +221,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val newLabel = "The modified foo ontology"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
label = Some(newLabel),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
Expand All @@ -243,7 +244,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val aComment = "a comment"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
comment = Some(aComment),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
Expand All @@ -267,7 +268,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val aComment = "a changed comment"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
label = Some(aLabel),
comment = Some(aComment),
lastModificationDate = fooLastModDate,
Expand All @@ -292,7 +293,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val newLabel = "a label changed again"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
label = Some(newLabel),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
Expand All @@ -314,7 +315,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {

"delete the comment from 'foo'" in {
appActor ! DeleteOntologyCommentRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
requestingUser = imagesUser,
Expand Down Expand Up @@ -375,7 +376,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val newComment = "a new comment"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = barIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(barIri.get.toSmartIri.toComplexSchema),
comment = Some(newComment),
lastModificationDate = barLastModDate,
apiRequestID = UUID.randomUUID,
Expand Down Expand Up @@ -410,7 +411,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {

"not delete an ontology that doesn't exist" in {
appActor ! DeleteOntologyRequestV2(
ontologyIri = "http://0.0.0.0:3333/ontology/1234/nonexistent/v2".toSmartIri,
ontologyIri = OntologyIri.unsafeFrom("http://0.0.0.0:3333/ontology/1234/nonexistent/v2".toSmartIri),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
requestingUser = imagesUser,
Expand All @@ -423,7 +424,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {

"not allow a user to delete an ontology if they are not a sysadmin or an admin in the ontology's project" in {
appActor ! DeleteOntologyRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
requestingUser = SharedTestDataADM.imagesUser02,
Expand All @@ -436,7 +437,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {

"delete the 'foo' ontology" in {
appActor ! DeleteOntologyRequestV2(
ontologyIri = fooIri.get.toSmartIri.toOntologySchema(ApiV2Complex),
ontologyIri = OntologyIri.unsafeFrom(fooIri.get.toSmartIri.toComplexSchema),
lastModificationDate = fooLastModDate,
apiRequestID = UUID.randomUUID,
requestingUser = imagesUser,
Expand Down Expand Up @@ -474,7 +475,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
.get

appActor ! DeleteOntologyRequestV2(
ontologyIri = AnythingOntologyIri,
ontologyIri = OntologyIri.unsafeFrom(AnythingOntologyIri),
lastModificationDate = anythingLastModDate,
apiRequestID = UUID.randomUUID,
requestingUser = anythingAdminUser,
Expand Down Expand Up @@ -2719,7 +2720,7 @@ class OntologyResponderV2Spec extends CoreSpec with ImplicitSender {
val newLabel = "The modified anything ontology"

appActor ! ChangeOntologyMetadataRequestV2(
ontologyIri = AnythingOntologyIri,
ontologyIri = OntologyIri.unsafeFrom(AnythingOntologyIri),
label = Some(newLabel),
lastModificationDate = anythingLastModDate,
apiRequestID = UUID.randomUUID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,7 @@ object StringFormatter {
StringFormatter.getGeneralInstance
}

def isKnoraOntologyIri(iri: SmartIri): Boolean =
iri.isKnoraApiV2DefinitionIri && OntologyConstants.InternalOntologyLabels.contains(iri.getOntologyName.value)
def isKnoraOntologyIri(iri: SmartIri): Boolean = iri.isKnoraApiV2DefinitionIri && iri.getOntologyName.isInternal

def makeValueIri(resourceIri: IRI, uuid: UUID): IRI =
s"$resourceIri/values/${UuidUtil.base64Encode(uuid)}"
Expand Down Expand Up @@ -1084,7 +1083,7 @@ class StringFormatter private (

private def externalToInternalEntityIri: SmartIri = {
// Construct the string representation of this IRI in the target schema.
val ontologyName = externalToInternalOntologyName(getOntologyName)
val ontologyName = getOntologyName.asInternal
val entityName = getEntityName
val ontologyIri =
OntologyIri.makeNew(ontologyName, iriInfo.sharedOntology, iriInfo.projectCode.map(Shortcode.unsafeFrom), self)
Expand Down Expand Up @@ -1119,7 +1118,7 @@ class StringFormatter private (
iriStr = convertedEntityIriStr,
creationFun = { () =>
val convertedSmartIriInfo = iriInfo.copy(
ontologyName = Some(internalToExternalOntologyName(getOntologyName).value),
ontologyName = Some(getOntologyName.asExternal.value),
ontologySchema = Some(targetSchema),
)

Expand All @@ -1136,9 +1135,7 @@ class StringFormatter private (
val versionSegment = getVersionSegment(targetSchema)

val convertedIriStr: IRI = if (isKnoraBuiltInDefinitionIri) {
OntologyConstants.KnoraApi.ApiOntologyStart + internalToExternalOntologyName(
ontologyName,
).value + versionSegment
OntologyConstants.KnoraApi.ApiOntologyStart + ontologyName.asExternal.value + versionSegment
} else if (isKnoraSharedDefinitionIri) {
val externalOntologyIri = new StringBuilder(OntologyConstants.KnoraApi.ApiOntologyStart).append("shared/")

Expand Down Expand Up @@ -1172,7 +1169,7 @@ class StringFormatter private (
iriStr = convertedIriStr,
creationFun = { () =>
val convertedSmartIriInfo = iriInfo.copy(
ontologyName = Some(internalToExternalOntologyName(getOntologyName).value),
ontologyName = Some(getOntologyName.asExternal.value),
ontologySchema = Some(targetSchema),
)

Expand All @@ -1187,7 +1184,7 @@ class StringFormatter private (
private lazy val asInternalOntologyIri: SmartIri = {
val convertedIriStr = OntologyIri
.makeNew(
externalToInternalOntologyName(getOntologyName),
getOntologyName.asInternal,
iriInfo.sharedOntology,
iriInfo.projectCode.map(Shortcode.unsafeFrom),
self,
Expand All @@ -1198,7 +1195,7 @@ class StringFormatter private (
iriStr = convertedIriStr,
creationFun = { () =>
val convertedSmartIriInfo = iriInfo.copy(
ontologyName = Some(externalToInternalOntologyName(getOntologyName).value),
ontologyName = Some(getOntologyName.asInternal.value),
ontologySchema = Some(InternalSchema),
)

Expand Down Expand Up @@ -1427,34 +1424,6 @@ class StringFormatter private (
private def isBuiltInOntologyName(ontologyName: String): Boolean =
OntologyConstants.BuiltInOntologyLabels.contains(ontologyName)

/**
* Converts an internal ontology name to an external ontology name. This only affects `knora-base`, whose
* external equivalent is `knora-api.`
*
* @param ontologyName an internal ontology name.
* @return the corresponding external ontology name.
*/
private def internalToExternalOntologyName(ontologyName: OntologyName): OntologyName =
if (ontologyName.value == OntologyConstants.KnoraBase.KnoraBaseOntologyLabel) {
OntologyName.unsafeFrom(OntologyConstants.KnoraApi.KnoraApiOntologyLabel)
} else {
ontologyName
}

/**
* Converts an external ontology name to an internal ontology name. This only affects `knora-api`, whose
* internal equivalent is `knora-base.`
*
* @param ontologyName an external ontology name.
* @return the corresponding internal ontology name.
*/
private def externalToInternalOntologyName(ontologyName: OntologyName): OntologyName =
if (ontologyName.value == OntologyConstants.KnoraApi.KnoraApiOntologyLabel) {
OntologyName.unsafeFrom(OntologyConstants.KnoraBase.KnoraBaseOntologyLabel)
} else {
ontologyName
}

/**
* Determines whether a URL path refers to a built-in API v2 ontology (simple or complex).
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
*/

package org.knora.webapi.messages.v2.responder.ontologymessages

import com.typesafe.scalalogging.Logger
import org.apache.commons.lang3.builder.HashCodeBuilder
import org.apache.pekko
Expand Down Expand Up @@ -51,6 +50,7 @@ import org.knora.webapi.messages.v2.responder.ontologymessages.OwlCardinality.Ow
import org.knora.webapi.messages.v2.responder.standoffmessages.StandoffDataTypeClasses
import org.knora.webapi.slice.admin.domain.model.KnoraProject.ProjectIri
import org.knora.webapi.slice.admin.domain.model.User
import org.knora.webapi.slice.common.KnoraIris.OntologyIri
import org.knora.webapi.slice.ontology.domain.model.Cardinality

/**
Expand Down Expand Up @@ -86,7 +86,7 @@ case class CreateOntologyRequestV2(
* @param requestingUser the user making the request.
*/
case class CanDeleteOntologyRequestV2(
ontologyIri: SmartIri,
ontologyIri: OntologyIri,
requestingUser: User,
) extends OntologiesResponderRequestV2

Expand All @@ -99,7 +99,7 @@ case class CanDeleteOntologyRequestV2(
* @param requestingUser the user making the request.
*/
case class DeleteOntologyRequestV2(
ontologyIri: SmartIri,
ontologyIri: OntologyIri,
lastModificationDate: Instant,
apiRequestID: UUID,
requestingUser: User,
Expand Down Expand Up @@ -957,7 +957,7 @@ object ChangeGuiOrderRequestV2 {
* @param requestingUser the user making the request.
*/
case class ChangeOntologyMetadataRequestV2(
ontologyIri: SmartIri,
ontologyIri: OntologyIri,
label: Option[String] = None,
comment: Option[String] = None,
lastModificationDate: Instant,
Expand All @@ -974,7 +974,7 @@ case class ChangeOntologyMetadataRequestV2(
* @param requestingUser the user making the request.
*/
case class DeleteOntologyCommentRequestV2(
ontologyIri: SmartIri,
ontologyIri: OntologyIri,
lastModificationDate: Instant,
apiRequestID: UUID,
requestingUser: User,
Expand Down Expand Up @@ -1119,7 +1119,7 @@ case class OntologyMetadataGetByIriRequestV2(ontologyIris: Set[SmartIri] = Set.e
* @param allLanguages true if information in all available languages should be returned.
* @param requestingUser the user making the request.
*/
case class OntologyEntitiesGetRequestV2(ontologyIri: SmartIri, allLanguages: Boolean, requestingUser: User)
case class OntologyEntitiesGetRequestV2(ontologyIri: OntologyIri, allLanguages: Boolean, requestingUser: User)
extends OntologiesResponderRequestV2

/**
Expand Down
Loading

0 comments on commit b93078d

Please sign in to comment.