api: Lifecycle can throw Exception
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/994d3891 Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/994d3891 Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/994d3891 Branch: refs/heads/develop Commit: 994d38913cd99c1a691611c50580c58d9fdc2940 Parents: ccb54f3 Author: Paul Merlin <[email protected]> Authored: Tue Dec 6 09:41:51 2016 +0100 Committer: Paul Merlin <[email protected]> Committed: Tue Dec 6 09:41:51 2016 +0100 ---------------------------------------------------------------------- .../org/apache/zest/api/entity/Lifecycle.java | 11 ++++------ .../zest/api/entity/LifecycleException.java | 14 +++++-------- .../zest/runtime/entity/EntityInstance.java | 2 -- .../zest/runtime/entity/EntityMixinsModel.java | 21 ++++++++++++++++++-- .../apache/zest/regression/qi382/Qi382Test.java | 11 ++++------ .../zest/runtime/entity/EntityCreationTest.java | 5 +---- .../zest/runtime/entity/LifecycleTest.java | 7 ++----- .../uowfile/plural/HasUoWFilesLifecycle.java | 7 +++---- .../uowfile/singular/HasUoWFileLifecycle.java | 7 +++---- 9 files changed, 41 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/api/src/main/java/org/apache/zest/api/entity/Lifecycle.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/zest/api/entity/Lifecycle.java b/core/api/src/main/java/org/apache/zest/api/entity/Lifecycle.java index e7bde27..3eb933a 100644 --- a/core/api/src/main/java/org/apache/zest/api/entity/Lifecycle.java +++ b/core/api/src/main/java/org/apache/zest/api/entity/Lifecycle.java @@ -65,17 +65,15 @@ package org.apache.zest.api.entity; */ public interface Lifecycle { - /** * Creation callback method. * <p> * Called by the Zest runtime before the newInstance of the entity completes, before the constraints are checked, * allowing for additional initialization. * </p> - * @throws LifecycleException if the entity could not be created + * @throws Exception if the entity could not be created */ - void create() - throws LifecycleException; + void create() throws Exception; /** * Removal callback method. @@ -83,8 +81,7 @@ public interface Lifecycle * Called by the Zest runtime before the entity is removed from the system, allowing * for clean-up operations. * </p> - * @throws LifecycleException if the entity could not be removed + * @throws Exception if the entity could not be removed */ - void remove() - throws LifecycleException; + void remove() throws Exception; } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/api/src/main/java/org/apache/zest/api/entity/LifecycleException.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/zest/api/entity/LifecycleException.java b/core/api/src/main/java/org/apache/zest/api/entity/LifecycleException.java index 4670cf8..c4b5957 100644 --- a/core/api/src/main/java/org/apache/zest/api/entity/LifecycleException.java +++ b/core/api/src/main/java/org/apache/zest/api/entity/LifecycleException.java @@ -21,23 +21,19 @@ package org.apache.zest.api.entity; /** - * Thrown by methods of Lifecycle if invocation fails + * Thrown if Lifecycle invocation fails */ public class LifecycleException extends RuntimeException { - public LifecycleException( String s ) - { - super( s ); - } + private static final long serialVersionUID = 1L; - public LifecycleException( String s, Throwable throwable ) + public LifecycleException() { - super( s, throwable ); } - public LifecycleException( Throwable throwable ) + public LifecycleException( String message, Throwable cause ) { - super( throwable ); + super( message, cause ); } } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityInstance.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityInstance.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityInstance.java index 86f00cc..09453f1 100644 --- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityInstance.java +++ b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityInstance.java @@ -33,7 +33,6 @@ import org.apache.zest.api.constraint.ConstraintViolationException; import org.apache.zest.api.entity.EntityComposite; import org.apache.zest.api.entity.EntityReference; import org.apache.zest.api.identity.HasIdentity; -import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.structure.ModuleDescriptor; import org.apache.zest.api.unitofwork.NoSuchEntityException; import org.apache.zest.api.unitofwork.UnitOfWork; @@ -242,7 +241,6 @@ public final class EntityInstance } public void remove( UnitOfWork unitOfWork ) - throws LifecycleException { invokeRemove(); http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityMixinsModel.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityMixinsModel.java b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityMixinsModel.java index 52ad5a9..c0737ed 100644 --- a/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityMixinsModel.java +++ b/core/runtime/src/main/java/org/apache/zest/runtime/entity/EntityMixinsModel.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.zest.api.composite.CompositeInstance; import org.apache.zest.api.entity.Lifecycle; +import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.property.StateHolder; import org.apache.zest.bootstrap.BindingException; import org.apache.zest.runtime.composite.MixinModel; @@ -88,11 +89,27 @@ public final class EntityMixinsModel if( create ) { - lifecycle.create(); + try + { + lifecycle.create(); + } + catch( Exception ex ) + { + String message = "Unable to invoke create lifecycle on " + lifecycle; + throw new LifecycleException( message, ex ); + } } else { - lifecycle.remove(); + try + { + lifecycle.remove(); + } + catch( Exception ex ) + { + String message = "Unable to invoke remove lifecycle on " + lifecycle; + throw new LifecycleException( message, ex ); + } } } } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/runtime/src/test/java/org/apache/zest/regression/qi382/Qi382Test.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/test/java/org/apache/zest/regression/qi382/Qi382Test.java b/core/runtime/src/test/java/org/apache/zest/regression/qi382/Qi382Test.java index 800d241..f34b55a 100644 --- a/core/runtime/src/test/java/org/apache/zest/regression/qi382/Qi382Test.java +++ b/core/runtime/src/test/java/org/apache/zest/regression/qi382/Qi382Test.java @@ -19,26 +19,25 @@ */ package org.apache.zest.regression.qi382; -import org.apache.zest.api.identity.Identity; -import org.apache.zest.api.identity.StringIdentity; -import org.apache.zest.api.unitofwork.UnitOfWorkFactory; -import org.junit.Test; import org.apache.zest.api.association.Association; import org.apache.zest.api.entity.EntityBuilder; import org.apache.zest.api.entity.EntityComposite; import org.apache.zest.api.entity.Lifecycle; -import org.apache.zest.api.entity.LifecycleException; +import org.apache.zest.api.identity.Identity; +import org.apache.zest.api.identity.StringIdentity; import org.apache.zest.api.injection.scope.Structure; import org.apache.zest.api.injection.scope.This; import org.apache.zest.api.mixin.Mixins; import org.apache.zest.api.unitofwork.UnitOfWork; import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException; +import org.apache.zest.api.unitofwork.UnitOfWorkFactory; import org.apache.zest.api.value.ValueSerialization; import org.apache.zest.bootstrap.AssemblyException; import org.apache.zest.bootstrap.ModuleAssembly; import org.apache.zest.entitystore.memory.MemoryEntityStoreService; import org.apache.zest.test.AbstractZestTest; import org.apache.zest.valueserialization.orgjson.OrgJsonValueSerializationService; +import org.junit.Test; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsNull.notNullValue; @@ -92,7 +91,6 @@ public class Qi382Test extends AbstractZestTest @Override public void create() - throws LifecycleException { UnitOfWork unitOfWork = uowf.currentUnitOfWork(); EntityBuilder<Person> builder = unitOfWork.newEntityBuilder( Person.class, NICLAS); @@ -102,7 +100,6 @@ public class Qi382Test extends AbstractZestTest @Override public void remove() - throws LifecycleException { } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/runtime/src/test/java/org/apache/zest/runtime/entity/EntityCreationTest.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/test/java/org/apache/zest/runtime/entity/EntityCreationTest.java b/core/runtime/src/test/java/org/apache/zest/runtime/entity/EntityCreationTest.java index f9865e6..77c92c8 100644 --- a/core/runtime/src/test/java/org/apache/zest/runtime/entity/EntityCreationTest.java +++ b/core/runtime/src/test/java/org/apache/zest/runtime/entity/EntityCreationTest.java @@ -19,11 +19,9 @@ */ package org.apache.zest.runtime.entity; -import org.junit.Test; import org.apache.zest.api.entity.EntityBuilder; import org.apache.zest.api.entity.EntityComposite; import org.apache.zest.api.entity.Lifecycle; -import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.injection.scope.This; import org.apache.zest.api.mixin.Mixins; import org.apache.zest.api.property.Immutable; @@ -33,6 +31,7 @@ import org.apache.zest.bootstrap.AssemblyException; import org.apache.zest.bootstrap.ModuleAssembly; import org.apache.zest.test.AbstractZestTest; import org.apache.zest.test.EntityTestAssembler; +import org.junit.Test; /** * Test case for http://team.ops4j.org/browse/QI-274 @@ -60,14 +59,12 @@ public class EntityCreationTest @Override public void create() - throws LifecycleException { this._me.someProperty().set( "SomeValue" ); } @Override public void remove() - throws LifecycleException { } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/core/runtime/src/test/java/org/apache/zest/runtime/entity/LifecycleTest.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/test/java/org/apache/zest/runtime/entity/LifecycleTest.java b/core/runtime/src/test/java/org/apache/zest/runtime/entity/LifecycleTest.java index b9f5c2d..183d3e9 100644 --- a/core/runtime/src/test/java/org/apache/zest/runtime/entity/LifecycleTest.java +++ b/core/runtime/src/test/java/org/apache/zest/runtime/entity/LifecycleTest.java @@ -20,12 +20,9 @@ package org.apache.zest.runtime.entity; -import org.hamcrest.CoreMatchers; -import org.junit.Test; import org.apache.zest.api.entity.EntityBuilder; import org.apache.zest.api.entity.EntityComposite; import org.apache.zest.api.entity.Lifecycle; -import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.mixin.Mixins; import org.apache.zest.api.unitofwork.UnitOfWork; import org.apache.zest.api.unitofwork.UnitOfWorkCompletionException; @@ -33,6 +30,8 @@ import org.apache.zest.bootstrap.AssemblyException; import org.apache.zest.bootstrap.ModuleAssembly; import org.apache.zest.test.AbstractZestTest; import org.apache.zest.test.EntityTestAssembler; +import org.hamcrest.CoreMatchers; +import org.junit.Test; import static org.junit.Assert.assertThat; @@ -106,13 +105,11 @@ public class LifecycleTest implements Lifecycle, Testing { public void create() - throws LifecycleException { create = true; } public void remove() - throws LifecycleException { remove = true; } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/plural/HasUoWFilesLifecycle.java ---------------------------------------------------------------------- diff --git a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/plural/HasUoWFilesLifecycle.java b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/plural/HasUoWFilesLifecycle.java index 0891714..048372f 100644 --- a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/plural/HasUoWFilesLifecycle.java +++ b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/plural/HasUoWFilesLifecycle.java @@ -20,10 +20,10 @@ package org.apache.zest.library.uowfile.plural; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.zest.api.entity.Lifecycle; -import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.injection.scope.This; import org.apache.zest.api.mixin.Mixins; @@ -39,14 +39,13 @@ public interface HasUoWFilesLifecycle<T extends Enum<T>> @Override public void create() - throws LifecycleException { // NOOP } @Override public void remove() - throws LifecycleException + throws IOException { // We use the managed files so that if the UoW gets discarded the files will be restored List<File> errors = new ArrayList<>(); @@ -62,7 +61,7 @@ public interface HasUoWFilesLifecycle<T extends Enum<T>> } if( !errors.isEmpty() ) { - throw new LifecycleException( "Unable to delete existing files: " + errors ); + throw new IOException( "Unable to delete existing files: " + errors ); } } } http://git-wip-us.apache.org/repos/asf/zest-java/blob/994d3891/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/singular/HasUoWFileLifecycle.java ---------------------------------------------------------------------- diff --git a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/singular/HasUoWFileLifecycle.java b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/singular/HasUoWFileLifecycle.java index 7e47525..553ab45 100644 --- a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/singular/HasUoWFileLifecycle.java +++ b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/singular/HasUoWFileLifecycle.java @@ -20,8 +20,8 @@ package org.apache.zest.library.uowfile.singular; import java.io.File; +import java.io.IOException; import org.apache.zest.api.entity.Lifecycle; -import org.apache.zest.api.entity.LifecycleException; import org.apache.zest.api.injection.scope.This; import org.apache.zest.api.mixin.Mixins; @@ -37,20 +37,19 @@ public interface HasUoWFileLifecycle @Override public void create() - throws LifecycleException { // NOOP } @Override public void remove() - throws LifecycleException + throws IOException { // We use the managed file so that if the UoW gets discarded the file will be restored File file = hasUoWFile.managedFile(); if( file.exists() && !file.delete() ) { - throw new LifecycleException( "Unable to delete existing file: " + file ); + throw new IOException( "Unable to delete existing file: " + file ); } } }
