From 3791a80978d126370c8be5be4d0f3b97925d23f4 Mon Sep 17 00:00:00 2001 From: Mohammed Ezzat Date: Mon, 22 Feb 2016 19:15:51 +0200 Subject: [PATCH 1/3] squid:S2325 - private methods that don't access instance data should be static --- .../java/com/iluwatar/facade/DwarvenGoldmineFacade.java | 2 +- .../java/com/iluwatar/front/controller/FrontController.java | 2 +- .../main/java/com/iluwatar/reactor/app/LoggingHandler.java | 6 +++--- .../java/com/iluwatar/reactor/framework/NioReactor.java | 2 +- .../com/iluwatar/reader/writer/lock/ReaderWriterLock.java | 2 +- .../src/main/java/com/iluwatar/repository/AppConfig.java | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java b/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java index 9e3aa29c3..4f6e3be4c 100644 --- a/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java +++ b/facade/src/main/java/com/iluwatar/facade/DwarvenGoldmineFacade.java @@ -60,7 +60,7 @@ public class DwarvenGoldmineFacade { makeActions(workers, DwarvenMineWorker.Action.GO_HOME, DwarvenMineWorker.Action.GO_TO_SLEEP); } - private void makeActions(Collection workers, + private static void makeActions(Collection workers, DwarvenMineWorker.Action... actions) { for (DwarvenMineWorker worker : workers) { worker.action(actions); diff --git a/front-controller/src/main/java/com/iluwatar/front/controller/FrontController.java b/front-controller/src/main/java/com/iluwatar/front/controller/FrontController.java index f5537c39b..6e2cccb0f 100644 --- a/front-controller/src/main/java/com/iluwatar/front/controller/FrontController.java +++ b/front-controller/src/main/java/com/iluwatar/front/controller/FrontController.java @@ -44,7 +44,7 @@ public class FrontController { } } - private Class getCommandClass(String request) { + private static Class getCommandClass(String request) { Class result; try { result = Class.forName("com.iluwatar.front.controller." + request + "Command"); diff --git a/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java b/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java index 88716728c..c8eee2d81 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java +++ b/reactor/src/main/java/com/iluwatar/reactor/app/LoggingHandler.java @@ -58,7 +58,7 @@ public class LoggingHandler implements ChannelHandler { } } - private void sendReply(AbstractNioChannel channel, DatagramPacket incomingPacket, SelectionKey key) { + private static void sendReply(AbstractNioChannel channel, DatagramPacket incomingPacket, SelectionKey key) { /* * Create a reply acknowledgement datagram packet setting the receiver to the sender of incoming * message. @@ -69,12 +69,12 @@ public class LoggingHandler implements ChannelHandler { channel.write(replyPacket, key); } - private void sendReply(AbstractNioChannel channel, SelectionKey key) { + private static void sendReply(AbstractNioChannel channel, SelectionKey key) { ByteBuffer buffer = ByteBuffer.wrap(ACK); channel.write(buffer, key); } - private void doLogging(ByteBuffer data) { + private static void doLogging(ByteBuffer data) { // assuming UTF-8 :( System.out.println(new String(data.array(), 0, data.limit())); } diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java index 716f88801..3d5ebf5a0 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java @@ -186,7 +186,7 @@ public class NioReactor { } } - private void onChannelWritable(SelectionKey key) throws IOException { + private static void onChannelWritable(SelectionKey key) throws IOException { AbstractNioChannel channel = (AbstractNioChannel) key.attachment(); channel.flush(key); } diff --git a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java index c8f59edd5..f08ed805d 100644 --- a/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java +++ b/reader-writer-lock/src/main/java/com/iluwatar/reader/writer/lock/ReaderWriterLock.java @@ -89,7 +89,7 @@ public class ReaderWriterLock implements ReadWriteLock { return globalMutex.isEmpty(); } - private void waitUninterruptibly(Object o) { + private static void waitUninterruptibly(Object o) { try { o.wait(); } catch (InterruptedException e) { diff --git a/repository/src/main/java/com/iluwatar/repository/AppConfig.java b/repository/src/main/java/com/iluwatar/repository/AppConfig.java index 285ecfbfe..3e7093358 100644 --- a/repository/src/main/java/com/iluwatar/repository/AppConfig.java +++ b/repository/src/main/java/com/iluwatar/repository/AppConfig.java @@ -76,7 +76,7 @@ public class AppConfig { /** * Properties for Jpa */ - private Properties jpaProperties() { + private static Properties jpaProperties() { Properties properties = new Properties(); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); From afb897300b9fd310a9a580b45b6f233e7325edf3 Mon Sep 17 00:00:00 2001 From: Oleg Date: Tue, 8 Mar 2016 00:56:08 -0800 Subject: [PATCH 2/3] Event driven architecture refactored. 1. Renamed Message to Event and Event to AbstractEvent 2. Generified Event and Handler 3. Updated EventDispatcher to make unsafe configuration impossible 4. Updated UML diagram accordingly --- event-driven-architecture/etc/eda.png | Bin 80265 -> 58476 bytes event-driven-architecture/etc/eda.ucls | 158 ++++++++---------- .../src/main/java/com/iluwatar/eda/App.java | 10 +- .../event/{Event.java => AbstractEvent.java} | 10 +- .../iluwatar/eda/event/UserCreatedEvent.java | 2 +- .../iluwatar/eda/event/UserUpdatedEvent.java | 2 +- .../framework/{Message.java => Event.java} | 6 +- .../eda/framework/EventDispatcher.java | 17 +- .../com/iluwatar/eda/framework/Handler.java | 6 +- .../eda/handler/UserCreatedEventHandler.java | 8 +- .../eda/handler/UserUpdatedEventHandler.java | 7 +- .../eda/event/UserCreatedEventTest.java | 6 +- .../eda/framework/EventDispatcherTest.java | 14 +- 13 files changed, 115 insertions(+), 131 deletions(-) rename event-driven-architecture/src/main/java/com/iluwatar/eda/event/{Event.java => AbstractEvent.java} (85%) rename event-driven-architecture/src/main/java/com/iluwatar/eda/framework/{Message.java => Event.java} (91%) diff --git a/event-driven-architecture/etc/eda.png b/event-driven-architecture/etc/eda.png index 38c433a409e06da181798e44e1db1b0b88e589c7..7437264518029acca6c2db4781b69d3b36c1a91a 100644 GIT binary patch literal 58476 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

*&nI)sQ1C8^KMhLOi}&PndASpm%;RT(W=9PU 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 XEPJa~ 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 F{{dVD$#eh! diff --git a/event-driven-architecture/etc/eda.ucls b/event-driven-architecture/etc/eda.ucls index 4ddb8b20c..776bedc81 100644 --- a/event-driven-architecture/etc/eda.ucls +++ b/event-driven-architecture/etc/eda.ucls @@ -4,7 +4,7 @@ - + @@ -15,7 +15,7 @@ project="event-driven-architecture" file="/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java" binary="false" corner="BOTTOM_RIGHT"> - + @@ -26,17 +26,17 @@ project="event-driven-architecture" file="/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java" binary="false" corner="BOTTOM_RIGHT"> - + - - + @@ -46,7 +46,7 @@ - + @@ -56,7 +56,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -76,17 +76,17 @@ - + - - + @@ -94,99 +94,87 @@ - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + + - - + - - - + + + - - + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - - + + diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java index 4179046c8..866b3c9e9 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java @@ -22,9 +22,9 @@ */ package com.iluwatar.eda; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.event.UserUpdatedEvent; +import com.iluwatar.eda.framework.Event; import com.iluwatar.eda.framework.EventDispatcher; import com.iluwatar.eda.handler.UserCreatedEventHandler; import com.iluwatar.eda.handler.UserUpdatedEventHandler; @@ -53,12 +53,12 @@ public class App { public static void main(String[] args) { EventDispatcher dispatcher = new EventDispatcher(); - dispatcher.registerChannel(UserCreatedEvent.class, new UserCreatedEventHandler()); - dispatcher.registerChannel(UserUpdatedEvent.class, new UserUpdatedEventHandler()); + dispatcher.registerHandler(UserCreatedEvent.class, new UserCreatedEventHandler()); + dispatcher.registerHandler(UserUpdatedEvent.class, new UserUpdatedEventHandler()); User user = new User("iluwatar"); - dispatcher.onEvent(new UserCreatedEvent(user)); - dispatcher.onEvent(new UserUpdatedEvent(user)); + dispatcher.dispatch(new UserCreatedEvent(user)); + dispatcher.dispatch(new UserUpdatedEvent(user)); } } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java similarity index 85% rename from event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java rename to event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java index 3ed0f9c9d..54a916c7b 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java @@ -23,10 +23,10 @@ package com.iluwatar.eda.event; import com.iluwatar.eda.framework.EventDispatcher; -import com.iluwatar.eda.framework.Message; +import com.iluwatar.eda.framework.Event; /** - * The {@link Event} class serves as a base class for defining custom events happening with your + * The {@link AbstractEvent} class serves as a base class for defining custom events happening with your * system. In this example we have two types of events defined. *

* Events can be distinguished using the {@link #getType() getType} method. */ -public class Event implements Message { +public abstract class AbstractEvent implements Event { /** * Returns the event type as a {@link Class} object * In this example, this method is used by the {@link EventDispatcher} to * dispatch events depending on their type. * - * @return the Event type as a {@link Class}. + * @return the AbstractEvent type as a {@link Class}. */ - public Class getType() { + public Class getType() { return getClass(); } } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java index e3354aaf2..717ed1a9d 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java @@ -29,7 +29,7 @@ import com.iluwatar.eda.model.User; * This class can be extended to contain details about the user has been created. In this example, * the entire {@link User} object is passed on as data with the event. */ -public class UserCreatedEvent extends Event { +public class UserCreatedEvent extends AbstractEvent { private User user; diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java index 37ca05932..9646957dc 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java @@ -29,7 +29,7 @@ import com.iluwatar.eda.model.User; * This class can be extended to contain details about the user has been updated. In this example, * the entire {@link User} object is passed on as data with the event. */ -public class UserUpdatedEvent extends Event { +public class UserUpdatedEvent extends AbstractEvent { private User user; diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java similarity index 91% rename from event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java rename to event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java index ee9c48965..c63d2746f 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java @@ -23,15 +23,15 @@ package com.iluwatar.eda.framework; /** - * A {@link Message} is an object with a specific type that is associated + * A {@link Event} is an object with a specific type that is associated * to a specific {@link Handler}. */ -public interface Message { +public interface Event { /** * Returns the message type as a {@link Class} object. In this example the message type is * used to handle events by their type. * @return the message type as a {@link Class}. */ - Class getType(); + Class getType(); } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java index 69e2cf0e3..9f8e29315 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java @@ -22,19 +22,16 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.event.Event; - import java.util.HashMap; import java.util.Map; /** * Handles the routing of {@link Event} messages to associated handlers. * A {@link HashMap} is used to store the association between events and their respective handlers. - * */ public class EventDispatcher { - private Map, Handler> handlers; + private Map, Handler> handlers; public EventDispatcher() { handlers = new HashMap<>(); @@ -46,8 +43,8 @@ public class EventDispatcher { * @param eventType The {@link Event} to be registered * @param handler The {@link Handler} that will be handling the {@link Event} */ - public void registerChannel(Class eventType, - Handler handler) { + public void registerHandler(Class eventType, + Handler handler) { handlers.put(eventType, handler); } @@ -56,8 +53,12 @@ public class EventDispatcher { * * @param event The {@link Event} to be dispatched */ - public void onEvent(Event event) { - handlers.get(event.getClass()).onEvent(event); + @SuppressWarnings("unchecked") + public void dispatch(E event) { + Handler handler = (Handler) handlers.get(event.getClass()); + if (handler != null) { + handler.onEvent(event); + } } } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java index 9c800a4d4..44bdab6dc 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java @@ -22,13 +22,11 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.event.Event; - /** * This interface can be implemented to handle different types of messages. * Every handler is responsible for a single of type message */ -public interface Handler { +public interface Handler { /** * The onEvent method should implement and handle behavior related to the event. @@ -36,5 +34,5 @@ public interface Handler { * a queue to be consumed by other sub systems. * @param event the {@link Event} object to be handled. */ - void onEvent(Event event); + void onEvent(E event); } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java index c51b3391a..3ef4e8255 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.handler; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.framework.Handler; @@ -32,9 +31,10 @@ import com.iluwatar.eda.framework.Handler; public class UserCreatedEventHandler implements Handler { @Override - public void onEvent(Event message) { + public void onEvent(UserCreatedEvent event) { - UserCreatedEvent userCreatedEvent = (UserCreatedEvent) message; - System.out.printf("User with %s has been Created!", userCreatedEvent.getUser().getUsername()); + System.out.println(String.format( + "User '%s' has been Created!", event.getUser().getUsername())); } + } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java index 5be4ab5cc..0311d5781 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.handler; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserUpdatedEvent; import com.iluwatar.eda.framework.Handler; @@ -32,9 +31,9 @@ import com.iluwatar.eda.framework.Handler; public class UserUpdatedEventHandler implements Handler { @Override - public void onEvent(Event message) { + public void onEvent(UserUpdatedEvent event) { - UserUpdatedEvent userUpdatedEvent = (UserUpdatedEvent) message; - System.out.printf("User with %s has been Updated!", userUpdatedEvent.getUser().getUsername()); + System.out.println(String.format( + "User '%s' has been Updated!", event.getUser().getUsername())); } } diff --git a/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java b/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java index 754fac678..b9074faf2 100644 --- a/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java +++ b/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java @@ -29,13 +29,13 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; /** - * {@link UserCreatedEventTest} tests and verifies {@link Event} behaviour. + * {@link UserCreatedEventTest} tests and verifies {@link AbstractEvent} behaviour. */ public class UserCreatedEventTest { /** - * This unit test should correctly return the {@link Event} class type when calling the - * {@link Event#getType() getType} method. + * This unit test should correctly return the {@link AbstractEvent} class type when calling the + * {@link AbstractEvent#getType() getType} method. */ @Test public void testGetEventType() { diff --git a/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java b/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java index 8db315ff4..21956afec 100644 --- a/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java +++ b/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.framework.EventDispatcher; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.event.UserUpdatedEvent; import com.iluwatar.eda.handler.UserCreatedEventHandler; @@ -49,8 +48,8 @@ public class EventDispatcherTest { EventDispatcher dispatcher = spy(new EventDispatcher()); UserCreatedEventHandler userCreatedEventHandler = spy(new UserCreatedEventHandler()); UserUpdatedEventHandler userUpdatedEventHandler = spy(new UserUpdatedEventHandler()); - dispatcher.registerChannel(UserCreatedEvent.class, userCreatedEventHandler); - dispatcher.registerChannel(UserUpdatedEvent.class, userUpdatedEventHandler); + dispatcher.registerHandler(UserCreatedEvent.class, userCreatedEventHandler); + dispatcher.registerHandler(UserUpdatedEvent.class, userUpdatedEventHandler); User user = new User("iluwatar"); @@ -58,15 +57,14 @@ public class EventDispatcherTest { UserUpdatedEvent userUpdatedEvent = new UserUpdatedEvent(user); //fire a userCreatedEvent and verify that userCreatedEventHandler has been invoked. - dispatcher.onEvent(userCreatedEvent); + dispatcher.dispatch(userCreatedEvent); verify(userCreatedEventHandler).onEvent(userCreatedEvent); - verify(dispatcher).onEvent(userCreatedEvent); + verify(dispatcher).dispatch(userCreatedEvent); //fire a userCreatedEvent and verify that userUpdatedEventHandler has been invoked. - dispatcher.onEvent(userUpdatedEvent); + dispatcher.dispatch(userUpdatedEvent); verify(userUpdatedEventHandler).onEvent(userUpdatedEvent); - verify(dispatcher).onEvent(userUpdatedEvent); + verify(dispatcher).dispatch(userUpdatedEvent); } - } From 528d179efecb827a4f4bb0359e9ceff3c32abaf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sun, 13 Mar 2016 17:29:09 +0200 Subject: [PATCH 3/3] Add missing license headers --- .../java/com/iluwatar/factorykit/App.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Axe.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Bow.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Builder.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Spear.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Sword.java | 22 +++++++++++++++++ .../java/com/iluwatar/factorykit/Weapon.java | 22 +++++++++++++++++ .../iluwatar/factorykit/WeaponFactory.java | 22 +++++++++++++++++ .../com/iluwatar/factorykit/WeaponType.java | 22 +++++++++++++++++ .../com/iluwatar/factorykit/app/AppTest.java | 22 +++++++++++++++++ .../factorykit/factorykit/FactoryKitTest.java | 22 +++++++++++++++++ .../src/main/java/com/iluwatar/monad/App.java | 22 +++++++++++++++++ .../src/main/java/com/iluwatar/monad/Sex.java | 22 +++++++++++++++++ .../main/java/com/iluwatar/monad/User.java | 22 +++++++++++++++++ .../java/com/iluwatar/monad/Validator.java | 22 +++++++++++++++++ .../test/java/com/iluwatar/monad/AppTest.java | 22 +++++++++++++++++ .../java/com/iluwatar/monad/MonadTest.java | 22 +++++++++++++++++ value-object/pom.xml | 24 +++++++++++++++++++ .../java/com/iluwatar/value/object/App.java | 22 +++++++++++++++++ .../com/iluwatar/value/object/HeroStat.java | 22 +++++++++++++++++ .../com/iluwatar/value/object/AppTest.java | 22 +++++++++++++++++ .../iluwatar/value/object/HeroStatTest.java | 22 +++++++++++++++++ 22 files changed, 486 insertions(+) diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java index 91d1eb061..f27bee170 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/App.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/App.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; /** diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java index 4e1a5e554..826a1f9ec 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Axe.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; public class Axe implements Weapon { diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java index a90f4cf2e..5aa952c3d 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Bow.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; public class Bow implements Weapon { diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java index be74626f7..1049c7b6f 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Builder.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; import java.util.function.Supplier; diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java index a50f54290..c32811e8c 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Spear.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; public class Spear implements Weapon { diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java index 278febaf5..208cd6bbb 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Sword.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; public class Sword implements Weapon { diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java index 980a2219f..3d668e352 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/Weapon.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; /** diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java index e83a997c6..80a6fd9d3 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponFactory.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; import java.util.HashMap; diff --git a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java index ac542048d..283f252de 100644 --- a/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java +++ b/factory-kit/src/main/java/com/iluwatar/factorykit/WeaponType.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit; /** diff --git a/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java b/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java index 9b9af2530..036326d97 100644 --- a/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java +++ b/factory-kit/src/test/java/com/iluwatar/factorykit/app/AppTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit.app; import com.iluwatar.factorykit.App; diff --git a/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java b/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java index ea629f57d..c57bee3e3 100644 --- a/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java +++ b/factory-kit/src/test/java/com/iluwatar/factorykit/factorykit/FactoryKitTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.factorykit.factorykit; import com.iluwatar.factorykit.*; diff --git a/monad/src/main/java/com/iluwatar/monad/App.java b/monad/src/main/java/com/iluwatar/monad/App.java index e330cfa64..7b28fdcf8 100644 --- a/monad/src/main/java/com/iluwatar/monad/App.java +++ b/monad/src/main/java/com/iluwatar/monad/App.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; import java.util.Objects; diff --git a/monad/src/main/java/com/iluwatar/monad/Sex.java b/monad/src/main/java/com/iluwatar/monad/Sex.java index 8b7e43f3c..b5d094d4b 100644 --- a/monad/src/main/java/com/iluwatar/monad/Sex.java +++ b/monad/src/main/java/com/iluwatar/monad/Sex.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; public enum Sex { diff --git a/monad/src/main/java/com/iluwatar/monad/User.java b/monad/src/main/java/com/iluwatar/monad/User.java index edd299643..471094526 100644 --- a/monad/src/main/java/com/iluwatar/monad/User.java +++ b/monad/src/main/java/com/iluwatar/monad/User.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; public class User { diff --git a/monad/src/main/java/com/iluwatar/monad/Validator.java b/monad/src/main/java/com/iluwatar/monad/Validator.java index 2298a4d8e..cc4f36020 100644 --- a/monad/src/main/java/com/iluwatar/monad/Validator.java +++ b/monad/src/main/java/com/iluwatar/monad/Validator.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; import java.util.ArrayList; diff --git a/monad/src/test/java/com/iluwatar/monad/AppTest.java b/monad/src/test/java/com/iluwatar/monad/AppTest.java index 5d23b41a6..78440b468 100644 --- a/monad/src/test/java/com/iluwatar/monad/AppTest.java +++ b/monad/src/test/java/com/iluwatar/monad/AppTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; import org.junit.Test; diff --git a/monad/src/test/java/com/iluwatar/monad/MonadTest.java b/monad/src/test/java/com/iluwatar/monad/MonadTest.java index ae78572f8..4ada7191d 100644 --- a/monad/src/test/java/com/iluwatar/monad/MonadTest.java +++ b/monad/src/test/java/com/iluwatar/monad/MonadTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.monad; diff --git a/value-object/pom.xml b/value-object/pom.xml index 1ed2adb43..3cbb7bb86 100644 --- a/value-object/pom.xml +++ b/value-object/pom.xml @@ -1,4 +1,28 @@ + diff --git a/value-object/src/main/java/com/iluwatar/value/object/App.java b/value-object/src/main/java/com/iluwatar/value/object/App.java index 85779fcb7..1e943d054 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/App.java +++ b/value-object/src/main/java/com/iluwatar/value/object/App.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.value.object; /** diff --git a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java index 101837db0..258c4d6a0 100644 --- a/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java +++ b/value-object/src/main/java/com/iluwatar/value/object/HeroStat.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.value.object; /** diff --git a/value-object/src/test/java/com/iluwatar/value/object/AppTest.java b/value-object/src/test/java/com/iluwatar/value/object/AppTest.java index aed3c2f20..85ef8b84e 100644 --- a/value-object/src/test/java/com/iluwatar/value/object/AppTest.java +++ b/value-object/src/test/java/com/iluwatar/value/object/AppTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.value.object; import org.junit.Test; diff --git a/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java b/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java index 785a4d8fe..4a8034b0b 100644 --- a/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java +++ b/value-object/src/test/java/com/iluwatar/value/object/HeroStatTest.java @@ -1,3 +1,25 @@ +/** + * The MIT License + * Copyright (c) 2014 Ilkka Seppälä + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ package com.iluwatar.value.object; import static org.hamcrest.CoreMatchers.is;