Java 11 migration: patterns (remaining b-c) (#1081)
* Moves business-delegate pattern to java 11 * Moves bytecode pattern to java 11 * Moves caching pattern to java 11 * Moves callback pattern to java 11 * Moves chain pattern to java 11 * Moves circuit-breaker pattern to java 11 * Moves collection-pipeline pattern to java 11 * Moves command pattern to java 11 * Moves commander pattern to java 11 * Moves composite pattern to java 11 * Corrects test cases
This commit is contained in:
		
				
					committed by
					
						 Ilkka Seppälä
						Ilkka Seppälä
					
				
			
			
				
	
			
			
			
						parent
						
							6ef840f3cf
						
					
				
				
					commit
					33ea7335b1
				
			| @@ -24,7 +24,6 @@ | ||||
| package com.iluwatar.bytecode; | ||||
|  | ||||
| import com.iluwatar.bytecode.util.InstructionConverterUtil; | ||||
| import java.util.Stack; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| @@ -51,12 +50,12 @@ public class App { | ||||
|    */ | ||||
|   public static void main(String[] args) { | ||||
|  | ||||
|     Wizard wizard = new Wizard(); | ||||
|     var wizard = new Wizard(); | ||||
|     wizard.setHealth(45); | ||||
|     wizard.setAgility(7); | ||||
|     wizard.setWisdom(11); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.getWizards()[0] = wizard; | ||||
|  | ||||
|     interpretInstruction("LITERAL 0", vm); | ||||
| @@ -74,9 +73,8 @@ public class App { | ||||
|   } | ||||
|  | ||||
|   private static void interpretInstruction(String instruction, VirtualMachine vm) { | ||||
|     InstructionConverterUtil converter = new InstructionConverterUtil(); | ||||
|     vm.execute(converter.convertToByteCode(instruction)); | ||||
|     Stack<Integer> stack = vm.getStack(); | ||||
|     vm.execute(InstructionConverterUtil.convertToByteCode(instruction)); | ||||
|     var stack = vm.getStack(); | ||||
|     LOGGER.info(instruction + String.format("%" + (12 - instruction.length()) + "s", "") + stack); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -40,7 +40,7 @@ public enum Instruction { | ||||
|   ADD(10), | ||||
|   DIVIDE(11); | ||||
|  | ||||
|   private int value; | ||||
|   private final int value; | ||||
|  | ||||
|   Instruction(int value) { | ||||
|     this.value = value; | ||||
| @@ -57,7 +57,7 @@ public enum Instruction { | ||||
|    * @return representation of the instruction | ||||
|    */ | ||||
|   public static Instruction getInstruction(int value) { | ||||
|     for (int i = 0; i < Instruction.values().length; i++) { | ||||
|     for (var i = 0; i < Instruction.values().length; i++) { | ||||
|       if (Instruction.values()[i].getIntValue() == value) { | ||||
|         return Instruction.values()[i]; | ||||
|       } | ||||
|   | ||||
| @@ -30,7 +30,7 @@ import java.util.Stack; | ||||
|  */ | ||||
| public class VirtualMachine { | ||||
|  | ||||
|   private Stack<Integer> stack = new Stack(); | ||||
|   private Stack<Integer> stack = new Stack<>(); | ||||
|  | ||||
|   private Wizard[] wizards = new Wizard[2]; | ||||
|  | ||||
| @@ -38,7 +38,7 @@ public class VirtualMachine { | ||||
|    * Constructor. | ||||
|    */ | ||||
|   public VirtualMachine() { | ||||
|     for (int i = 0; i < wizards.length; i++) { | ||||
|     for (var i = 0; i < wizards.length; i++) { | ||||
|       wizards[i] = new Wizard(); | ||||
|     } | ||||
|   } | ||||
| @@ -49,10 +49,8 @@ public class VirtualMachine { | ||||
|    * @param bytecode to execute | ||||
|    */ | ||||
|   public void execute(int[] bytecode) { | ||||
|     for (int i = 0; i < bytecode.length; i++) { | ||||
|     for (var i = 0; i < bytecode.length; i++) { | ||||
|       Instruction instruction = Instruction.getInstruction(bytecode[i]); | ||||
|       int wizard; | ||||
|       int amount; | ||||
|       switch (instruction) { | ||||
|         case LITERAL: | ||||
|           // Read the next byte from the bytecode. | ||||
| @@ -60,8 +58,8 @@ public class VirtualMachine { | ||||
|           stack.push(value); | ||||
|           break; | ||||
|         case SET_AGILITY: | ||||
|           amount = stack.pop(); | ||||
|           wizard = stack.pop(); | ||||
|           var amount = stack.pop(); | ||||
|           var wizard = stack.pop(); | ||||
|           setAgility(wizard, amount); | ||||
|           break; | ||||
|         case SET_WISDOM: | ||||
| @@ -87,8 +85,8 @@ public class VirtualMachine { | ||||
|           stack.push(getWisdom(wizard)); | ||||
|           break; | ||||
|         case ADD: | ||||
|           int a = stack.pop(); | ||||
|           int b = stack.pop(); | ||||
|           var a = stack.pop(); | ||||
|           var b = stack.pop(); | ||||
|           stack.push(a + b); | ||||
|           break; | ||||
|         case DIVIDE: | ||||
|   | ||||
| @@ -40,15 +40,15 @@ public class InstructionConverterUtil { | ||||
|       return new int[0]; | ||||
|     } | ||||
|  | ||||
|     String[] splitedInstructions = instructions.trim().split(" "); | ||||
|     int[] bytecode = new int[splitedInstructions.length]; | ||||
|     for (int i = 0; i < splitedInstructions.length; i++) { | ||||
|     var splitedInstructions = instructions.trim().split(" "); | ||||
|     var bytecode = new int[splitedInstructions.length]; | ||||
|     for (var i = 0; i < splitedInstructions.length; i++) { | ||||
|       if (isValidInstruction(splitedInstructions[i])) { | ||||
|         bytecode[i] = Instruction.valueOf(splitedInstructions[i]).getIntValue(); | ||||
|       } else if (isValidInt(splitedInstructions[i])) { | ||||
|         bytecode[i] = Integer.valueOf(splitedInstructions[i]); | ||||
|         bytecode[i] = Integer.parseInt(splitedInstructions[i]); | ||||
|       } else { | ||||
|         String errorMessage = "Invalid instruction or number: " + splitedInstructions[i]; | ||||
|         var errorMessage = "Invalid instruction or number: " + splitedInstructions[i]; | ||||
|         throw new IllegalArgumentException(errorMessage); | ||||
|       } | ||||
|     } | ||||
|   | ||||
| @@ -32,7 +32,6 @@ public class AppTest { | ||||
|  | ||||
|   @Test | ||||
|   public void test() { | ||||
|     String[] args = {}; | ||||
|     App.main(args); | ||||
|     App.main(new String[]{}); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -36,11 +36,11 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testLiteral() { | ||||
|     int[] bytecode = new int[2]; | ||||
|     var bytecode = new int[2]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = 10; | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(1, vm.getStack().size()); | ||||
| @@ -49,15 +49,15 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testSetHealth() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[5]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[5]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = LITERAL.getIntValue(); | ||||
|     bytecode[3] = 50;                        // health amount | ||||
|     bytecode[4] = SET_HEALTH.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(50, vm.getWizards()[wizardNumber].getHealth()); | ||||
| @@ -65,15 +65,15 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testSetAgility() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[5]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[5]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = LITERAL.getIntValue(); | ||||
|     bytecode[3] = 50;                        // agility amount | ||||
|     bytecode[4] = SET_AGILITY.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(50, vm.getWizards()[wizardNumber].getAgility()); | ||||
| @@ -81,15 +81,15 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testSetWisdom() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[5]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[5]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = LITERAL.getIntValue(); | ||||
|     bytecode[3] = 50;                        // wisdom amount | ||||
|     bytecode[4] = SET_WISDOM.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(50, vm.getWizards()[wizardNumber].getWisdom()); | ||||
| @@ -97,8 +97,8 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testGetHealth() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[8]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[8]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = LITERAL.getIntValue(); | ||||
| @@ -108,7 +108,7 @@ public class VirtualMachineTest { | ||||
|     bytecode[6] = wizardNumber; | ||||
|     bytecode[7] = GET_HEALTH.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(Integer.valueOf(50), vm.getStack().pop()); | ||||
| @@ -116,13 +116,13 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testPlaySound() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[3]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[3]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = PLAY_SOUND.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(0, vm.getStack().size()); | ||||
| @@ -131,13 +131,13 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testSpawnParticles() { | ||||
|     int wizardNumber = 0; | ||||
|     int[] bytecode = new int[3]; | ||||
|     var wizardNumber = 0; | ||||
|     var bytecode = new int[3]; | ||||
|     bytecode[0] = LITERAL.getIntValue(); | ||||
|     bytecode[1] = wizardNumber; | ||||
|     bytecode[2] = SPAWN_PARTICLES.getIntValue(); | ||||
|  | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|     vm.execute(bytecode); | ||||
|  | ||||
|     assertEquals(0, vm.getStack().size()); | ||||
| @@ -146,9 +146,9 @@ public class VirtualMachineTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testInvalidInstruction() { | ||||
|     int[] bytecode = new int[1]; | ||||
|     var bytecode = new int[1]; | ||||
|     bytecode[0] = 999; | ||||
|     VirtualMachine vm = new VirtualMachine(); | ||||
|     var vm = new VirtualMachine(); | ||||
|  | ||||
|     assertThrows(IllegalArgumentException.class, () -> vm.execute(bytecode)); | ||||
|   } | ||||
|   | ||||
| @@ -34,19 +34,19 @@ import org.junit.jupiter.api.Test; | ||||
| public class InstructionConverterUtilTest { | ||||
|   @Test | ||||
|   public void testEmptyInstruction() { | ||||
|     String instruction = ""; | ||||
|     var instruction = ""; | ||||
|  | ||||
|     int[] bytecode = InstructionConverterUtil.convertToByteCode(instruction); | ||||
|     var bytecode = InstructionConverterUtil.convertToByteCode(instruction); | ||||
|  | ||||
|     Assertions.assertEquals(0, bytecode.length); | ||||
|   } | ||||
|  | ||||
|   @Test | ||||
|   public void testInstructions() { | ||||
|     String instructions = | ||||
|         "LITERAL 35 SET_HEALTH SET_WISDOM SET_AGILITY PLAY_SOUND SPAWN_PARTICLES GET_HEALTH ADD DIVIDE"; | ||||
|     var instructions = "LITERAL 35 SET_HEALTH SET_WISDOM SET_AGILITY PLAY_SOUND" | ||||
|         + " SPAWN_PARTICLES GET_HEALTH ADD DIVIDE"; | ||||
|  | ||||
|     int[] bytecode = InstructionConverterUtil.convertToByteCode(instructions); | ||||
|     var bytecode = InstructionConverterUtil.convertToByteCode(instructions); | ||||
|  | ||||
|     Assertions.assertEquals(10, bytecode.length); | ||||
|     Assertions.assertEquals(Instruction.LITERAL.getIntValue(), bytecode[0]); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user