You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/11/28 16:07:50 UTC

[05/14] zest-java git commit: uowfile library: prefer nio over core/io

uowfile library: prefer nio over core/io


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/94f7cca8
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/94f7cca8
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/94f7cca8

Branch: refs/heads/develop
Commit: 94f7cca8ed0eefd9abdce1beea14f52dd40f24de
Parents: 95c1b24
Author: Paul Merlin <pa...@apache.org>
Authored: Mon Nov 28 09:53:57 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Mon Nov 28 09:53:57 2016 +0100

----------------------------------------------------------------------
 .../zest/library/uowfile/internal/UoWFile.java  | 21 ++++----
 .../zest/library/uowfile/HasUoWFileTest.java    | 50 ++++++++++++--------
 .../zest/library/uowfile/HasUoWFilesTest.java   | 40 ++++++++++------
 3 files changed, 66 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/94f7cca8/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/UoWFile.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/UoWFile.java b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/UoWFile.java
index 0785d30..1228d4b 100644
--- a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/UoWFile.java
+++ b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/UoWFile.java
@@ -21,16 +21,14 @@ package org.apache.zest.library.uowfile.internal;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.util.concurrent.atomic.AtomicLong;
-import org.apache.zest.io.Inputs;
-import org.apache.zest.io.Outputs;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class UoWFile
 {
     /* package */ static final Logger LOGGER = LoggerFactory.getLogger( "org.apache.zest.library.uowfile" );
-    private static final int FILE_BUFFER_SIZE = 4096;
     private static final AtomicLong COUNT = new AtomicLong( 0L );
     private final long originalIdentity;
     private final File original;
@@ -56,11 +54,11 @@ public class UoWFile
     {
         StringBuilder sb = new StringBuilder().append( UoWFile.class.getSimpleName() );
         // UoWFile{parent/( original(oid->id) | current(id) | backup(id) )}
-        sb.append( "{" ).append( original.getParentFile().getName() ).append( "/( " ).
-            append( original.getName() ).append( "(" ).append( originalIdentity ).append( "->" ).append( fileTag( original ) ).append( ") | " ).
-            append( current.getName() ).append( "(" ).append( fileTag( current ) ).append( ") | " ).
-            append( backup.getName() ).append( "(" ).append( fileTag( backup ) ).
-            append( ") )}" );
+        sb.append( "{" ).append( original.getParentFile().getName() ).append( "/( " )
+          .append( original.getName() ).append( "(" ).append( originalIdentity ).append( "->" )
+          .append( fileTag( original ) ).append( ") | " ).append( current.getName() )
+          .append( "(" ).append( fileTag( current ) ).append( ") | " ).append( backup.getName() )
+          .append( "(" ).append( fileTag( backup ) ).append( ") )}" );
         return sb.toString();
     }
 
@@ -80,7 +78,9 @@ public class UoWFile
         {
             if( fileTag( original ) != originalIdentity )
             {
-                LOGGER.info( "Concurrent modification, original creation reference is {} and original apply reference is {}", originalIdentity, fileTag( original ) );
+                LOGGER.info(
+                    "Concurrent modification, original creation reference is {} and original apply reference is {}",
+                    originalIdentity, fileTag( original ) );
                 throw new ConcurrentUoWFileStateModificationException( this );
             }
             if( original.exists() )
@@ -132,7 +132,7 @@ public class UoWFile
     {
         try
         {
-            Inputs.byteBuffer( source, FILE_BUFFER_SIZE ).transferTo( Outputs.byteBuffer( dest ) );
+            Files.copy( source.toPath(), dest.toPath() );
         }
         catch( IOException ex )
         {
@@ -165,5 +165,4 @@ public class UoWFile
                          + "Are they on different filesystems?", source, dest );
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/94f7cca8/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
index 8a53c0a..2796f83 100644
--- a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
+++ b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFileTest.java
@@ -21,6 +21,7 @@ package org.apache.zest.library.uowfile;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.nio.file.Files;
 import java.util.ArrayList;
@@ -42,8 +43,6 @@ import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
 import org.apache.zest.api.unitofwork.concern.UnitOfWorkRetry;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.io.Inputs;
-import org.apache.zest.io.Outputs;
 import org.apache.zest.library.fileconfig.FileConfigurationAssembler;
 import org.apache.zest.library.uowfile.bootstrap.UoWFileAssembler;
 import org.apache.zest.library.uowfile.internal.ConcurrentUoWFileModificationException;
@@ -59,6 +58,7 @@ import org.junit.rules.TemporaryFolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
@@ -171,9 +171,11 @@ public class HasUoWFileTest
             File attachedFile = entity.attachedFile();
             File managedFile = entity.managedFile();
             // END SNIPPET: api
-            Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( managedFile ) );
+            try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+            {
+                Files.copy( input, managedFile.toPath(), REPLACE_EXISTING );
+            }
         }
-
     }
 
     @Override
@@ -225,9 +227,9 @@ public class HasUoWFileTest
         }
         try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
         {
-            assertThat("File content was not the good one",
-                       lines.limit( 1 ).findFirst().get(),
-                       equalTo( "Creation" ) );
+            assertThat( "File content was not the good one",
+                        lines.limit( 1 ).findFirst().get(),
+                        equalTo( "Creation" ) );
         }
     }
 
@@ -255,9 +257,9 @@ public class HasUoWFileTest
         }
         try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
         {
-            assertThat("File content after discarded modification was not the good one",
-                       lines.limit( 1 ).findFirst().get(),
-                       equalTo( "Creation" ) );
+            assertThat( "File content after discarded modification was not the good one",
+                        lines.limit( 1 ).findFirst().get(),
+                        equalTo( "Creation" ) );
         }
 
         // Testing completed modification
@@ -268,9 +270,9 @@ public class HasUoWFileTest
         }
         try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
         {
-            assertThat("Modified file content was not the good one",
-                       lines.limit( 1 ).findFirst().get(),
-                       equalTo( "Modification" ) );
+            assertThat( "Modified file content was not the good one",
+                        lines.limit( 1 ).findFirst().get(),
+                        equalTo( "Modification" ) );
         }
     }
 
@@ -330,11 +332,17 @@ public class HasUoWFileTest
 
         uow = unitOfWorkFactory.newUnitOfWork();
         entity = uow.get( TestedEntity.class, entityId );
-        Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile() ) );
+        try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile().toPath(), REPLACE_EXISTING );
+        }
 
         uow2 = unitOfWorkFactory.newUnitOfWork();
         entity = uow2.get( TestedEntity.class, entityId );
-        Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile() ) );
+        try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile().toPath(), REPLACE_EXISTING );
+        }
 
         uow.complete();
         try
@@ -403,9 +411,9 @@ public class HasUoWFileTest
         assertTrue( "There were errors during TestRetry", ex.isEmpty() );
         try( Stream<String> lines = Files.lines( attachedFile.toPath() ) )
         {
-            assertThat("Modified file content was not the good one",
-                       lines.limit( 1 ).findFirst().get(),
-                       equalTo( "Modification" ) );
+            assertThat( "Modified file content was not the good one",
+                        lines.limit( 1 ).findFirst().get(),
+                        equalTo( "Modification" ) );
         }
     }
 
@@ -416,8 +424,10 @@ public class HasUoWFileTest
         TestedEntity entity = builder.instance();
         entity.name().set( name );
         entity = builder.newInstance();
-        Inputs.text( CREATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile() ) );
+        try( InputStream input = CREATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile().toPath() );
+        }
         return entity;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/94f7cca8/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
----------------------------------------------------------------------
diff --git a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
index 4cdb275..8630de9 100644
--- a/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
+++ b/libraries/uowfile/src/test/java/org/apache/zest/library/uowfile/HasUoWFilesTest.java
@@ -21,44 +21,44 @@ package org.apache.zest.library.uowfile;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
-import org.apache.zest.api.identity.HasIdentity;
-import org.apache.zest.api.identity.Identity;
-import org.apache.zest.api.unitofwork.UnitOfWorkFactory;
-import org.apache.zest.spi.ZestSPI;
-import org.apache.zest.test.AbstractZestTest;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
 import org.apache.zest.api.concern.Concerns;
 import org.apache.zest.api.entity.EntityBuilder;
+import org.apache.zest.api.identity.HasIdentity;
+import org.apache.zest.api.identity.Identity;
 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.property.Property;
 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.unitofwork.concern.UnitOfWorkConcern;
 import org.apache.zest.api.unitofwork.concern.UnitOfWorkPropagation;
 import org.apache.zest.api.unitofwork.concern.UnitOfWorkRetry;
 import org.apache.zest.bootstrap.AssemblyException;
 import org.apache.zest.bootstrap.ModuleAssembly;
-import org.apache.zest.io.Inputs;
-import org.apache.zest.io.Outputs;
 import org.apache.zest.library.fileconfig.FileConfigurationAssembler;
 import org.apache.zest.library.uowfile.bootstrap.UoWFileAssembler;
 import org.apache.zest.library.uowfile.internal.ConcurrentUoWFileModificationException;
 import org.apache.zest.library.uowfile.plural.HasUoWFilesLifecycle;
 import org.apache.zest.library.uowfile.plural.UoWFilesLocator;
+import org.apache.zest.spi.ZestSPI;
+import org.apache.zest.test.AbstractZestTest;
 import org.apache.zest.test.EntityTestAssembler;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
@@ -188,7 +188,10 @@ public class HasUoWFilesTest
             File attachedFileTwo = entity.attachedFile( MyEnum.fileTwo );
             File managedFileOne = entity.managedFile( MyEnum.fileOne );
             // END SNIPPET: api
-            Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( managedFileOne ) );
+            try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+            {
+                Files.copy( input, managedFileOne.toPath(), REPLACE_EXISTING );
+            }
         }
     }
 
@@ -346,11 +349,17 @@ public class HasUoWFilesTest
 
         uow = unitOfWorkFactory.newUnitOfWork();
         entity = uow.get( TestedEntity.class, entityId );
-        Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile( MyEnum.fileOne ) ) );
+        try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile( MyEnum.fileOne ).toPath(), REPLACE_EXISTING );
+        }
 
         uow2 = unitOfWorkFactory.newUnitOfWork();
         entity = uow2.get( TestedEntity.class, entityId );
-        Inputs.text( MODIFICATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile( MyEnum.fileOne ) ) );
+        try( InputStream input = MODIFICATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile( MyEnum.fileOne ).toPath(), REPLACE_EXISTING );
+        }
 
         uow.complete();
         try
@@ -432,7 +441,10 @@ public class HasUoWFilesTest
         TestedEntity entity = builder.instance();
         entity.name().set( name );
         entity = builder.newInstance();
-        Inputs.text( CREATION_CONTENT_URL ).transferTo( Outputs.text( entity.managedFile( MyEnum.fileOne ) ) );
+        try( InputStream input = CREATION_CONTENT_URL.openStream() )
+        {
+            Files.copy( input, entity.managedFile( MyEnum.fileOne ).toPath() );
+        }
         return entity;
     }