diff --git a/flux/src/main/java/com/iluwatar/action/Action.java b/flux/src/main/java/com/iluwatar/action/Action.java index 899558488..6b26a81ae 100644 --- a/flux/src/main/java/com/iluwatar/action/Action.java +++ b/flux/src/main/java/com/iluwatar/action/Action.java @@ -1,6 +1,10 @@ package com.iluwatar.action; - +/** + * + * Action is the data payload dispatched to the stores when something happens. + * + */ public abstract class Action { private ActionType type; diff --git a/flux/src/main/java/com/iluwatar/action/ActionType.java b/flux/src/main/java/com/iluwatar/action/ActionType.java index c61a33fc7..4cc8e060c 100644 --- a/flux/src/main/java/com/iluwatar/action/ActionType.java +++ b/flux/src/main/java/com/iluwatar/action/ActionType.java @@ -1,5 +1,10 @@ package com.iluwatar.action; +/** + * + * Types of actions. + * + */ public enum ActionType { MENU_ITEM_SELECTED, CONTENT_CHANGED; diff --git a/flux/src/main/java/com/iluwatar/action/Content.java b/flux/src/main/java/com/iluwatar/action/Content.java index 32a16876d..f4f5d830b 100644 --- a/flux/src/main/java/com/iluwatar/action/Content.java +++ b/flux/src/main/java/com/iluwatar/action/Content.java @@ -1,5 +1,10 @@ package com.iluwatar.action; +/** + * + * Content items. + * + */ public enum Content { PRODUCTS("Products - This page lists the company's products."), COMPANY("Company - This page displays information about the company."); diff --git a/flux/src/main/java/com/iluwatar/action/ContentAction.java b/flux/src/main/java/com/iluwatar/action/ContentAction.java index 78534aa35..7ab20e55b 100644 --- a/flux/src/main/java/com/iluwatar/action/ContentAction.java +++ b/flux/src/main/java/com/iluwatar/action/ContentAction.java @@ -1,6 +1,10 @@ package com.iluwatar.action; - +/** + * + * ContentAction is a concrete action. + * + */ public class ContentAction extends Action { private Content content; diff --git a/flux/src/main/java/com/iluwatar/action/MenuAction.java b/flux/src/main/java/com/iluwatar/action/MenuAction.java index 64a3b1422..b1a5fbda7 100644 --- a/flux/src/main/java/com/iluwatar/action/MenuAction.java +++ b/flux/src/main/java/com/iluwatar/action/MenuAction.java @@ -1,6 +1,11 @@ package com.iluwatar.action; +/** + * + * MenuAction is a concrete action. + * + */ public class MenuAction extends Action { private MenuItem menuItem; diff --git a/flux/src/main/java/com/iluwatar/action/MenuItem.java b/flux/src/main/java/com/iluwatar/action/MenuItem.java index bc4057136..2d3086b80 100644 --- a/flux/src/main/java/com/iluwatar/action/MenuItem.java +++ b/flux/src/main/java/com/iluwatar/action/MenuItem.java @@ -1,5 +1,10 @@ package com.iluwatar.action; +/** + * + * Menu items. + * + */ public enum MenuItem { HOME("Home"), PRODUCTS("Products"), COMPANY("Company"); diff --git a/flux/src/main/java/com/iluwatar/app/App.java b/flux/src/main/java/com/iluwatar/app/App.java index ac6366e67..48e78bfab 100644 --- a/flux/src/main/java/com/iluwatar/app/App.java +++ b/flux/src/main/java/com/iluwatar/app/App.java @@ -7,10 +7,25 @@ import com.iluwatar.store.MenuStore; import com.iluwatar.view.ContentView; import com.iluwatar.view.MenuView; +/** + * + * Flux is the application architecture that Facebook uses for building client-side web + * applications. Flux eschews MVC in favor of a unidirectional data flow. When a user interacts with + * a React view, the view propagates an action through a central dispatcher, to the various stores that + * hold the application's data and business logic, which updates all of the views that are affected. + * + * This example has two views: menu and content. They represent typical main menu and content area of + * a web page. When menu item is clicked it triggers events through the dispatcher. The events are + * received and handled by the stores updating their data as needed. The stores then notify the views + * that they should rerender themselves. + * + * http://facebook.github.io/flux/docs/overview.html + * + */ public class App { public static void main( String[] args ) { - // initialize + // initialize and wire the system MenuStore menuStore = new MenuStore(); Dispatcher.getInstance().registerStore(menuStore); ContentStore contentStore = new ContentStore(); diff --git a/flux/src/main/java/com/iluwatar/dispatcher/Dispatcher.java b/flux/src/main/java/com/iluwatar/dispatcher/Dispatcher.java index d58d8baaa..6372a6fb8 100644 --- a/flux/src/main/java/com/iluwatar/dispatcher/Dispatcher.java +++ b/flux/src/main/java/com/iluwatar/dispatcher/Dispatcher.java @@ -10,6 +10,11 @@ import com.iluwatar.action.MenuAction; import com.iluwatar.action.MenuItem; import com.iluwatar.store.Store; +/** + * + * Dispatcher sends Actions to registered Stores. + * + */ public class Dispatcher { private static Dispatcher instance = new Dispatcher(); diff --git a/flux/src/main/java/com/iluwatar/store/ContentStore.java b/flux/src/main/java/com/iluwatar/store/ContentStore.java index 636a88abd..0587763a9 100644 --- a/flux/src/main/java/com/iluwatar/store/ContentStore.java +++ b/flux/src/main/java/com/iluwatar/store/ContentStore.java @@ -5,6 +5,11 @@ import com.iluwatar.action.ActionType; import com.iluwatar.action.Content; import com.iluwatar.action.ContentAction; +/** + * + * ContentStore is a concrete store. + * + */ public class ContentStore extends Store { private Content content = Content.PRODUCTS; diff --git a/flux/src/main/java/com/iluwatar/store/MenuStore.java b/flux/src/main/java/com/iluwatar/store/MenuStore.java index 057b74bf0..ba78d0c11 100644 --- a/flux/src/main/java/com/iluwatar/store/MenuStore.java +++ b/flux/src/main/java/com/iluwatar/store/MenuStore.java @@ -5,6 +5,11 @@ import com.iluwatar.action.ActionType; import com.iluwatar.action.MenuAction; import com.iluwatar.action.MenuItem; +/** + * + * MenuStore is a concrete store. + * + */ public class MenuStore extends Store { private MenuItem selected = MenuItem.HOME; diff --git a/flux/src/main/java/com/iluwatar/store/Store.java b/flux/src/main/java/com/iluwatar/store/Store.java index c14d171fa..66edfb643 100644 --- a/flux/src/main/java/com/iluwatar/store/Store.java +++ b/flux/src/main/java/com/iluwatar/store/Store.java @@ -6,6 +6,11 @@ import java.util.List; import com.iluwatar.action.Action; import com.iluwatar.view.View; +/** + * + * Store is a data model. + * + */ public abstract class Store { private List views = new LinkedList<>(); diff --git a/flux/src/main/java/com/iluwatar/view/ContentView.java b/flux/src/main/java/com/iluwatar/view/ContentView.java index bba723f9d..f2ecf006f 100644 --- a/flux/src/main/java/com/iluwatar/view/ContentView.java +++ b/flux/src/main/java/com/iluwatar/view/ContentView.java @@ -4,6 +4,11 @@ import com.iluwatar.action.Content; import com.iluwatar.store.ContentStore; import com.iluwatar.store.Store; +/** + * + * ContentView is a concrete view. + * + */ public class ContentView implements View { private Content content = Content.PRODUCTS; diff --git a/flux/src/main/java/com/iluwatar/view/MenuView.java b/flux/src/main/java/com/iluwatar/view/MenuView.java index 6e5ad0ba3..e94ec66f0 100644 --- a/flux/src/main/java/com/iluwatar/view/MenuView.java +++ b/flux/src/main/java/com/iluwatar/view/MenuView.java @@ -5,6 +5,11 @@ import com.iluwatar.dispatcher.Dispatcher; import com.iluwatar.store.MenuStore; import com.iluwatar.store.Store; +/** + * + * MenuView is a concrete view. + * + */ public class MenuView implements View { private MenuItem selected = MenuItem.HOME; diff --git a/flux/src/main/java/com/iluwatar/view/View.java b/flux/src/main/java/com/iluwatar/view/View.java index d9868a2ad..26994b73a 100644 --- a/flux/src/main/java/com/iluwatar/view/View.java +++ b/flux/src/main/java/com/iluwatar/view/View.java @@ -2,6 +2,11 @@ package com.iluwatar.view; import com.iluwatar.store.Store; +/** + * + * Views define the representation of data. + * + */ public interface View { public void storeChanged(Store store);