// Path: common/src/main/java/org/artificer/common/error/ArtificerConflictException.java
// public class ArtificerConflictException extends ArtificerUserException {
//     
//     private static final long serialVersionUID = 8618489938635309807L;
// 
//     public ArtificerConflictException() {
//         super();
//     }
// 
//     public ArtificerConflictException(String message) {
//         super(message);
//     }
// 
//     public ArtificerConflictException(String msg, String stackTrace) {
//         super(msg, stackTrace);
//     }
// 
//     public static ArtificerConflictException artifactConflict(String uuid) {
//        return new ArtificerConflictException(Messages.i18n.format("ARTIFACT_ALREADY_EXISTS", uuid));
//     }
// 
//     public static ArtificerConflictException derivedRelationshipCreation(String relationshipType) {
//         return new ArtificerConflictException(Messages.i18n.format("DERIVED_RELATIONSHIP_CREATION", relationshipType));
//     }
// 
//     public static ArtificerConflictException relationshipConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("RELATIONSHIP_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException reservedName(String name) {
//         return new ArtificerConflictException(Messages.i18n.format("RESERVED_WORD", name));
//     }
// 
//     public static ArtificerConflictException customPropertyConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("CUSTOM_PROPERTY_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException classifierConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("CLASSIFIER_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException ontologyConflict(String ontologyUuid) {
//         return new ArtificerConflictException(Messages.i18n.format("ONTOLOGY_ALREADY_EXISTS", ontologyUuid));
//     }
// 
//     public static ArtificerConflictException storedQueryConflict() {
//         return new ArtificerConflictException(Messages.i18n.format("STOREDQUERY_NAME_REQUIRED"));
//     }
// 
//     public static ArtificerConflictException storedQueryConflict(String queryName) {
//         return new ArtificerConflictException(Messages.i18n.format("STOREDQUERY_ALREADY_EXISTS", queryName));
//     }
// 
//     public static ArtificerConflictException duplicateName(String name) {
//         return new ArtificerConflictException(Messages.i18n.format("DUPLICATE_NAME", name));
//     }
// }
// 
// Path: api/src/main/java/org/oasis_open/docs/s_ramp/ns/s_ramp_v1/TaskEnum.java
// @XmlType(name = "taskEnum")
// @XmlEnum(BaseArtifactEnum.class)
// public enum TaskEnum {
// 
//     @XmlEnumValue("Task")
//     TASK(BaseArtifactEnum.TASK);
//     private final BaseArtifactEnum value;
// 
//     TaskEnum(BaseArtifactEnum v) {
//         value = v;
//     }
// 
//     public BaseArtifactEnum value() {
//         return value;
//     }
// 
//     public static TaskEnum fromValue(BaseArtifactEnum v) {
//         for (TaskEnum c: TaskEnum.values()) {
//             if (c.value.equals(v)) {
//                 return c;
//             }
//         }
//         throw new IllegalArgumentException(v.toString());
//     }
// 
// }


import java.io.InputStream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.artificer.common.ArtifactContent;
import org.artificer.common.ArtifactType;
import org.artificer.common.ArtificerModelUtils;
import org.artificer.common.error.ArtificerConflictException;
import org.artificer.common.query.ArtifactSummary;
import org.artificer.repository.query.PagedResult;
import org.junit.Test;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Actor;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BaseArtifactEnum;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BaseArtifactType;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Task;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.TaskEnum;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.TaskTarget;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.WsdlDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.XsdDocument;
/*
 * Copyright 2014 JBoss Inc
 *
 * 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 org.artificer.repository.test;




/**
 * @author Brett Meyer.
 */
public class ConstraintTest extends AbstractNoAuditingPersistenceTest {

    @Test
    public void testDelete() throws Exception {
        // Add an artifact
        Task task = new Task();
        task.setArtifactType(BaseArtifactEnum.TASK);
        task = (Task) persistenceManager.persistArtifact(task, null);

        // Create another artifact with a generic relationship targeting the original.
        Actor actor = new Actor();
        actor.setArtifactType(BaseArtifactEnum.ACTOR);
        ArtificerModelUtils.addGenericRelationship(actor, "fooRelationship", task.getUuid());
        actor = (Actor) persistenceManager.persistArtifact(actor, null);

        // Verify deleting the original fails
        boolean caught = false;
        try {
            persistenceManager.deleteArtifact(task.getUuid(), ArtifactType.valueOf(task), false);
// Path: common/src/main/java/org/artificer/common/error/ArtificerConflictException.java
// public class ArtificerConflictException extends ArtificerUserException {
//     
//     private static final long serialVersionUID = 8618489938635309807L;
// 
//     public ArtificerConflictException() {
//         super();
//     }
// 
//     public ArtificerConflictException(String message) {
//         super(message);
//     }
// 
//     public ArtificerConflictException(String msg, String stackTrace) {
//         super(msg, stackTrace);
//     }
// 
//     public static ArtificerConflictException artifactConflict(String uuid) {
//        return new ArtificerConflictException(Messages.i18n.format("ARTIFACT_ALREADY_EXISTS", uuid));
//     }
// 
//     public static ArtificerConflictException derivedRelationshipCreation(String relationshipType) {
//         return new ArtificerConflictException(Messages.i18n.format("DERIVED_RELATIONSHIP_CREATION", relationshipType));
//     }
// 
//     public static ArtificerConflictException relationshipConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("RELATIONSHIP_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException reservedName(String name) {
//         return new ArtificerConflictException(Messages.i18n.format("RESERVED_WORD", name));
//     }
// 
//     public static ArtificerConflictException customPropertyConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("CUSTOM_PROPERTY_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException classifierConstraint(String uuid) {
//         return new ArtificerConflictException(Messages.i18n.format("CLASSIFIER_CONSTRAINT", uuid));
//     }
// 
//     public static ArtificerConflictException ontologyConflict(String ontologyUuid) {
//         return new ArtificerConflictException(Messages.i18n.format("ONTOLOGY_ALREADY_EXISTS", ontologyUuid));
//     }
// 
//     public static ArtificerConflictException storedQueryConflict() {
//         return new ArtificerConflictException(Messages.i18n.format("STOREDQUERY_NAME_REQUIRED"));
//     }
// 
//     public static ArtificerConflictException storedQueryConflict(String queryName) {
//         return new ArtificerConflictException(Messages.i18n.format("STOREDQUERY_ALREADY_EXISTS", queryName));
//     }
// 
//     public static ArtificerConflictException duplicateName(String name) {
//         return new ArtificerConflictException(Messages.i18n.format("DUPLICATE_NAME", name));
//     }
// }
// 
// Path: api/src/main/java/org/oasis_open/docs/s_ramp/ns/s_ramp_v1/TaskEnum.java
// @XmlType(name = "taskEnum")
// @XmlEnum(BaseArtifactEnum.class)
// public enum TaskEnum {
// 
//     @XmlEnumValue("Task")
//     TASK(BaseArtifactEnum.TASK);
//     private final BaseArtifactEnum value;
// 
//     TaskEnum(BaseArtifactEnum v) {
//         value = v;
//     }
// 
//     public BaseArtifactEnum value() {
//         return value;
//     }
// 
//     public static TaskEnum fromValue(BaseArtifactEnum v) {
//         for (TaskEnum c: TaskEnum.values()) {
//             if (c.value.equals(v)) {
//                 return c;
//             }
//         }
//         throw new IllegalArgumentException(v.toString());
//     }
// 
// }


// Path: repository/test/src/test/java/org/artificer/repository/test/ConstraintTest.java
import java.io.InputStream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.artificer.common.ArtifactContent;
import org.artificer.common.ArtifactType;
import org.artificer.common.ArtificerModelUtils;
import org.artificer.common.error.ArtificerConflictException;
import org.artificer.common.query.ArtifactSummary;
import org.artificer.repository.query.PagedResult;
import org.junit.Test;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Actor;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BaseArtifactEnum;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.BaseArtifactType;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.Task;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.TaskEnum;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.TaskTarget;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.WsdlDocument;
import org.oasis_open.docs.s_ramp.ns.s_ramp_v1.XsdDocument;

/*
 * Copyright 2014 JBoss Inc
 *
 * 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 org.artificer.repository.test;




/**
 * @author Brett Meyer.
 */
public class ConstraintTest extends AbstractNoAuditingPersistenceTest {

    @Test
    public void testDelete() throws Exception {
        // Add an artifact
        Task task = new Task();
        task.setArtifactType(BaseArtifactEnum.TASK);
        task = (Task) persistenceManager.persistArtifact(task, null);

        // Create another artifact with a generic relationship targeting the original.
        Actor actor = new Actor();
        actor.setArtifactType(BaseArtifactEnum.ACTOR);
        ArtificerModelUtils.addGenericRelationship(actor, "fooRelationship", task.getUuid());
        actor = (Actor) persistenceManager.persistArtifact(actor, null);

        // Verify deleting the original fails
        boolean caught = false;
        try {
            persistenceManager.deleteArtifact(task.getUuid(), ArtifactType.valueOf(task), false);
        } catch (ArtificerConflictException e) {