diff --git a/.gitignore b/.gitignore
index b1a8a93a..a0925353 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ target/
classes/
*.iml
.idea
+target/classes/google_checkstyle.xml
diff --git a/OWNER.md b/OWNER.md
new file mode 100644
index 00000000..3edabe6a
--- /dev/null
+++ b/OWNER.md
@@ -0,0 +1 @@
+Fazlytdinov Rishat
diff --git a/config.json b/config.json
new file mode 100644
index 00000000..f7b4d66d
--- /dev/null
+++ b/config.json
@@ -0,0 +1,37 @@
+{"beans": [
+ {
+ "id": "carBean",
+ "className": "track.container.beans.Car",
+ "properties": [
+ {
+ "name": "gear",
+ "ref": "gearBean"
+ },
+ {
+ "name": "engine",
+ "ref": "engineBean"
+ }
+ ]
+ },
+ {
+ "id": "gearBean",
+ "className": "track.container.beans.Gear",
+ "properties": [
+ {
+ "name": "count",
+ "val": "6"
+ }
+ ]
+ },
+ {
+ "id": "engineBean",
+ "className": "track.container.beans.Engine",
+ "properties": [
+ {
+ "name": "power",
+ "val": "200"
+ }
+ ]
+ }
+ ]
+}
diff --git a/messenger.iml b/messenger.iml
new file mode 100644
index 00000000..be35709c
--- /dev/null
+++ b/messenger.iml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/track/Test.java b/src/main/java/track/Test.java
new file mode 100644
index 00000000..f5fc62f8
--- /dev/null
+++ b/src/main/java/track/Test.java
@@ -0,0 +1,10 @@
+package track;
+
+/**
+ * Created by major on 27.10.16.
+ */
+public class Test {
+ public static void main(String[] args) {
+
+ }
+}
diff --git a/src/main/java/track/container/Container.java b/src/main/java/track/container/Container.java
index 36c4bd9d..7c6d3dbe 100644
--- a/src/main/java/track/container/Container.java
+++ b/src/main/java/track/container/Container.java
@@ -1,8 +1,14 @@
package track.container;
+import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import track.container.config.Bean;
+import track.container.config.InvalidConfigurationException;
+import track.container.config.Property;
+import track.container.config.ValueType;
/**
* Основной класс контейнера
@@ -10,17 +16,32 @@
*/
public class Container {
+ private static final String INT = "int";
+
+ private Map beansById;
+ private Map beansByClassName;
// Реализуйте этот конструктор, используется в тестах!
public Container(List beans) {
+ beansById = new HashMap<>();
+ beansByClassName = new HashMap<>();
+ for (Bean bean : beans) {
+ this.beansById.put(bean.getId(), bean);
+ this.beansByClassName.put(bean.getClassName(), bean);
+ }
}
/**
- * Вернуть объект по имени бина из конфига
- * Например, Car car = (Car) container.getById("carBean")
+ * Вернуть объект по имени бина из конфига
+ * Например, Car car = (Car) container.getById("carBean")
*/
public Object getById(String id) {
+ try {
+ return makeRequiredObject(beansById.get(id));
+ } catch (InvalidConfigurationException e) {
+ System.out.println(e.getMessage());
+ }
return null;
}
@@ -29,6 +50,127 @@ public Object getById(String id) {
* Например, Car car = (Car) container.getByClass("track.container.beans.Car")
*/
public Object getByClass(String className) {
+ try {
+ return makeRequiredObject(beansByClassName.get(className));
+ } catch (InvalidConfigurationException e) {
+ System.out.println(e.getMessage());
+ }
return null;
}
+
+ public Object makeRequiredObject(Bean bean) throws InvalidConfigurationException {
+ try {
+ Class beanClass = Class.forName(bean.getClassName());
+ Object object = beanClass.getConstructor().newInstance();
+ for (Property property : bean.getProperties()) {
+ Object propertyValue = null;
+ if (property.getType().equals(ValueType.VAL)) {
+ propertyValue = property.getVal();
+ }
+ if (property.getType().equals(ValueType.REF)) {
+ propertyValue = getById(property.getVal());
+ }
+ char[] properyNameCharSet = property.getName().toCharArray();
+ properyNameCharSet[0] = Character.toUpperCase(properyNameCharSet[0]);
+ String properyName = new String(properyNameCharSet);
+ for (Method method : object.getClass().getDeclaredMethods()) {
+ if (method.getName().equals("set" + properyName)) {
+ for (Primitives primitive : Primitives.values()) {
+ if (method.getParameterTypes()[0].getName().equals(primitive.getType())) {
+ propertyValue = primitive.parse((String) propertyValue);
+ }
+ }
+ method.invoke(object, propertyValue);
+ }
+ }
+ }
+ return object;
+ } catch (Exception e) {
+ InvalidConfigurationException ex = new InvalidConfigurationException("Invalid config");
+ throw ex;
+ }
+ }
+
+
+ private enum Primitives {
+ BOOLEAN {
+ private String type = "boolean";
+
+ public Boolean parse(String value) {
+ return Boolean.parseBoolean(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+ },
+ SHORT {
+ private String type = "short";
+
+ public Short parse(String value) {
+ return Short.parseShort(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+ },
+ INTEGER {
+ private String type = "int";
+
+ public Integer parse(String value) {
+ return Integer.parseInt(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+ },
+ LONG {
+ private String type = "long";
+
+ public Long parse(String value) {
+ return Long.parseLong(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ },
+ DOUBLE {
+ private String type = "double";
+
+ public Double parse(String value) {
+ return Double.parseDouble(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+ },
+ FLOAT {
+ private String type = "float";
+
+ public Float parse(String value) {
+ return Float.parseFloat(value);
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+ };
+
+ public abstract Object parse(String value);
+
+ public abstract String getType();
+
+ }
+
}
diff --git a/src/main/java/track/container/JsonConfigReader.java b/src/main/java/track/container/JsonConfigReader.java
index 76eb69ff..c01c079e 100644
--- a/src/main/java/track/container/JsonConfigReader.java
+++ b/src/main/java/track/container/JsonConfigReader.java
@@ -1,11 +1,13 @@
package track.container;
import java.io.File;
-import java.util.List;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
-import track.container.config.Bean;
-import track.container.config.ConfigReader;
-import track.container.config.InvalidConfigurationException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import track.container.config.*;
/**
* TODO: Реализовать
@@ -13,7 +15,15 @@
public class JsonConfigReader implements ConfigReader {
@Override
- public List parseBeans(File configFile) throws InvalidConfigurationException {
- return null;
+ public List parseBeans(File configFile) throws InvalidConfigurationException, IOException {
+ ObjectMapper mapper = new ObjectMapper();
+ Root root;
+ try {
+ root = mapper.readValue(configFile,Root.class);
+ } catch (IOException e) {
+ throw new InvalidConfigurationException(e.getMessage());
+ }
+
+ return root.getBeans();
}
}
diff --git a/src/main/java/track/container/Main.java b/src/main/java/track/container/Main.java
index 8fdc23e6..9f934fa9 100644
--- a/src/main/java/track/container/Main.java
+++ b/src/main/java/track/container/Main.java
@@ -1,11 +1,20 @@
package track.container;
+import track.container.beans.Car;
+import track.container.config.Bean;
+import track.container.config.ConfigReader;
+import track.container.config.InvalidConfigurationException;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
/**
*
*/
public class Main {
- public static void main(String[] args) {
+ public static void main(String[] args) throws InvalidConfigurationException, IOException {
/*
@@ -14,13 +23,14 @@ public static void main(String[] args) {
*/
// // При чтении нужно обработать исключение
-// ConfigReader reader = new JsonReader();
-// List beans = reader.parseBeans("config.json");
-// Container container = new Container(beans);
-//
-// Car car = (Car) container.getByClass("track.container.beans.Car");
-// car = (Car) container.getById("carBean");
-
+ ConfigReader reader = new JsonConfigReader();
+ List beans = reader.parseBeans(new File("config.json"));
+ Container container = new Container(beans);
+
+ Car car = (Car) container.getByClass("track.container.beans.Car");
+ System.out.println(car.toString());
+ car = (Car) container.getById("carBean");
+ System.out.println(car.toString());
}
}
diff --git a/src/main/java/track/container/config/Bean.java b/src/main/java/track/container/config/Bean.java
index b7948199..83c45e27 100644
--- a/src/main/java/track/container/config/Bean.java
+++ b/src/main/java/track/container/config/Bean.java
@@ -1,5 +1,6 @@
package track.container.config;
+import java.util.List;
import java.util.Map;
/**
@@ -7,6 +8,9 @@
*/
public class Bean {
+ public Bean() {
+ }
+
private String id; // Уникальный ID бина
private String className; // Класс бина
@@ -17,19 +21,20 @@ public class Bean {
put(key, value) - поместить значение с заданным ключом
get(key) - получить значение по ключу (или null, если не найдено)
*/
- private Map properties; // Набор полей бина ИмяПоля-Значение
+ private List properties; // Набор полей бина ИмяПоля-Значение
+
- public Bean(String id, String className, Map properties) {
+ public Bean(String id, String className, List properties) {
this.id = id;
this.className = className;
this.properties = properties;
}
- public Map getProperties() {
+ public List getProperties() {
return properties;
}
- public void setProperties(Map properties) {
+ public void setProperties(List properties) {
this.properties = properties;
}
diff --git a/src/main/java/track/container/config/ConfigReader.java b/src/main/java/track/container/config/ConfigReader.java
index 70e43623..16c14072 100644
--- a/src/main/java/track/container/config/ConfigReader.java
+++ b/src/main/java/track/container/config/ConfigReader.java
@@ -1,6 +1,7 @@
package track.container.config;
import java.io.File;
+import java.io.IOException;
import java.util.List;
/**
@@ -15,6 +16,6 @@ public interface ConfigReader {
* @param configFile - Файл конфигурации (Сигнатуру не менять, используется в тестах)
* @return - список бинов
*/
- List parseBeans(File configFile) throws InvalidConfigurationException;
+ List parseBeans(File configFile) throws InvalidConfigurationException, IOException;
}
diff --git a/src/main/java/track/container/config/Property.java b/src/main/java/track/container/config/Property.java
index af06fc5b..4369497e 100644
--- a/src/main/java/track/container/config/Property.java
+++ b/src/main/java/track/container/config/Property.java
@@ -5,16 +5,16 @@
* Тег описывает поля определенного бина
*/
public class Property {
- private String name; // Имя поля
- private String value; // Значение поля
- private ValueType type; // Метка ссылочное значение или примитив
- public Property(String name, String value, ValueType type) {
- this.name = name;
- this.value = value;
- this.type = type;
+
+ public Property() {
}
+ private String name; // Имя поля
+ private String value;
+ private String val; // Значение поля
+ private ValueType type; // Метка ссылочное значение или примитив
+
public String getName() {
return name;
}
@@ -23,12 +23,20 @@ public void setName(String name) {
this.name = name;
}
- public String getValue() {
- return value;
+ public String getVal() {
+ return val;
+ }
+
+ public void setVal(String val) {
+ this.val = val;
+ this.value = val;
+ setType(ValueType.VAL);
}
- public void setValue(String value) {
- this.value = value;
+ public void setRef(String ref) {
+ this.val = ref;
+ this.value = ref;
+ setType(ValueType.REF);
}
public ValueType getType() {
@@ -43,7 +51,7 @@ public void setType(ValueType type) {
public String toString() {
return "Property{" +
"name='" + name + '\'' +
- ", value='" + value + '\'' +
+ ", val='" + val + '\'' +
", type=" + type +
'}';
}
diff --git a/src/test/java/track/container/ContainerTest.java b/src/test/java/track/container/ContainerTest.java
index 2123f183..05bda752 100644
--- a/src/test/java/track/container/ContainerTest.java
+++ b/src/test/java/track/container/ContainerTest.java
@@ -1,6 +1,7 @@
package track.container;
import java.io.File;
+import java.io.IOException;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -25,7 +26,7 @@ public class ContainerTest {
private static Engine expectedEngine;
@BeforeClass
- public static void init() {
+ public static void init() throws IOException {
try {
ClassLoader classLoader = Container.class.getClassLoader();
File file = new File(classLoader.getResource("config.json").getFile());
diff --git a/src/test/java/track/lessons/lesson2/ParserTest.java b/src/test/java/track/lessons/lesson2/ParserTest.java
index b326dfa0..60a620bf 100644
--- a/src/test/java/track/lessons/lesson2/ParserTest.java
+++ b/src/test/java/track/lessons/lesson2/ParserTest.java
@@ -6,11 +6,13 @@
import org.junit.Assert;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
/**
*
*/
+@Ignore
public class ParserTest {
static String data;
diff --git a/target/classes/arhangel/dim/lections/reflection/Reflect.class b/target/classes/arhangel/dim/lections/reflection/Reflect.class
new file mode 100644
index 00000000..051fbce3
Binary files /dev/null and b/target/classes/arhangel/dim/lections/reflection/Reflect.class differ
diff --git a/target/classes/arhangel/dim/lections/reflection/Test.class b/target/classes/arhangel/dim/lections/reflection/Test.class
new file mode 100644
index 00000000..a5ca8561
Binary files /dev/null and b/target/classes/arhangel/dim/lections/reflection/Test.class differ
diff --git a/target/classes/config.json b/target/classes/config.json
new file mode 100644
index 00000000..2dcc13ff
--- /dev/null
+++ b/target/classes/config.json
@@ -0,0 +1,38 @@
+{
+ "beans": [
+ {
+ "id": "carBean",
+ "className": "track.container.beans.Car",
+ "properties": [
+ {
+ "name": "gear",
+ "ref": "gearBean"
+ },
+ {
+ "name": "engine",
+ "ref": "engineBean"
+ }
+ ]
+ },
+ {
+ "id": "gearBean",
+ "className": "track.container.beans.Gear",
+ "properties": [
+ {
+ "name": "count",
+ "val": "6"
+ }
+ ]
+ },
+ {
+ "id": "engineBean",
+ "className": "track.container.beans.Engine",
+ "properties": [
+ {
+ "name": "power",
+ "val": "200"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/target/classes/google_checkstyle.xml b/target/classes/google_checkstyle.xml
new file mode 100644
index 00000000..7b90865d
--- /dev/null
+++ b/target/classes/google_checkstyle.xml
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/target/classes/log4j.xml b/target/classes/log4j.xml
new file mode 100644
index 00000000..4331de10
--- /dev/null
+++ b/target/classes/log4j.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/target/classes/track/container/Container.class b/target/classes/track/container/Container.class
new file mode 100644
index 00000000..7f9a0a57
Binary files /dev/null and b/target/classes/track/container/Container.class differ
diff --git a/target/classes/track/container/JsonConfigReader.class b/target/classes/track/container/JsonConfigReader.class
new file mode 100644
index 00000000..ea1c77d6
Binary files /dev/null and b/target/classes/track/container/JsonConfigReader.class differ
diff --git a/target/classes/track/container/Main.class b/target/classes/track/container/Main.class
new file mode 100644
index 00000000..55fe93f0
Binary files /dev/null and b/target/classes/track/container/Main.class differ
diff --git a/target/classes/track/container/beans/Car.class b/target/classes/track/container/beans/Car.class
new file mode 100644
index 00000000..03b25093
Binary files /dev/null and b/target/classes/track/container/beans/Car.class differ
diff --git a/target/classes/track/container/beans/Engine.class b/target/classes/track/container/beans/Engine.class
new file mode 100644
index 00000000..31e79047
Binary files /dev/null and b/target/classes/track/container/beans/Engine.class differ
diff --git a/target/classes/track/container/beans/Gear.class b/target/classes/track/container/beans/Gear.class
new file mode 100644
index 00000000..7bca9a80
Binary files /dev/null and b/target/classes/track/container/beans/Gear.class differ
diff --git a/target/classes/track/container/config/Bean.class b/target/classes/track/container/config/Bean.class
new file mode 100644
index 00000000..0a0bb7da
Binary files /dev/null and b/target/classes/track/container/config/Bean.class differ
diff --git a/target/classes/track/container/config/ConfigReader.class b/target/classes/track/container/config/ConfigReader.class
new file mode 100644
index 00000000..4c9f2077
Binary files /dev/null and b/target/classes/track/container/config/ConfigReader.class differ
diff --git a/target/classes/track/container/config/InvalidConfigurationException.class b/target/classes/track/container/config/InvalidConfigurationException.class
new file mode 100644
index 00000000..34415164
Binary files /dev/null and b/target/classes/track/container/config/InvalidConfigurationException.class differ
diff --git a/target/classes/track/container/config/Property.class b/target/classes/track/container/config/Property.class
new file mode 100644
index 00000000..77d5b480
Binary files /dev/null and b/target/classes/track/container/config/Property.class differ
diff --git a/target/classes/track/container/config/Root.class b/target/classes/track/container/config/Root.class
new file mode 100644
index 00000000..2c187a6f
Binary files /dev/null and b/target/classes/track/container/config/Root.class differ
diff --git a/target/classes/track/container/config/ValueType.class b/target/classes/track/container/config/ValueType.class
new file mode 100644
index 00000000..66b87a5c
Binary files /dev/null and b/target/classes/track/container/config/ValueType.class differ
diff --git a/target/classes/track/lections/l2objects/Complex.class b/target/classes/track/lections/l2objects/Complex.class
new file mode 100644
index 00000000..fad0356e
Binary files /dev/null and b/target/classes/track/lections/l2objects/Complex.class differ
diff --git a/target/classes/track/lections/l2objects/Sample.class b/target/classes/track/lections/l2objects/Sample.class
new file mode 100644
index 00000000..12531c99
Binary files /dev/null and b/target/classes/track/lections/l2objects/Sample.class differ
diff --git a/target/classes/track/lections/l3oop/AServer.class b/target/classes/track/lections/l3oop/AServer.class
new file mode 100644
index 00000000..f11eb5f0
Binary files /dev/null and b/target/classes/track/lections/l3oop/AServer.class differ
diff --git a/target/classes/track/lections/l3oop/AbstractExample$1.class b/target/classes/track/lections/l3oop/AbstractExample$1.class
new file mode 100644
index 00000000..e136a619
Binary files /dev/null and b/target/classes/track/lections/l3oop/AbstractExample$1.class differ
diff --git a/target/classes/track/lections/l3oop/AbstractExample.class b/target/classes/track/lections/l3oop/AbstractExample.class
new file mode 100644
index 00000000..e7b18827
Binary files /dev/null and b/target/classes/track/lections/l3oop/AbstractExample.class differ
diff --git a/target/classes/track/lections/l3oop/Account.class b/target/classes/track/lections/l3oop/Account.class
new file mode 100644
index 00000000..e270b236
Binary files /dev/null and b/target/classes/track/lections/l3oop/Account.class differ
diff --git a/target/classes/track/lections/l3oop/Auto.class b/target/classes/track/lections/l3oop/Auto.class
new file mode 100644
index 00000000..f47d0c26
Binary files /dev/null and b/target/classes/track/lections/l3oop/Auto.class differ
diff --git a/target/classes/track/lections/l3oop/AutoGear.class b/target/classes/track/lections/l3oop/AutoGear.class
new file mode 100644
index 00000000..17f59bb4
Binary files /dev/null and b/target/classes/track/lections/l3oop/AutoGear.class differ
diff --git a/target/classes/track/lections/l3oop/Button.class b/target/classes/track/lections/l3oop/Button.class
new file mode 100644
index 00000000..b8ce865c
Binary files /dev/null and b/target/classes/track/lections/l3oop/Button.class differ
diff --git a/target/classes/track/lections/l3oop/ClickListener.class b/target/classes/track/lections/l3oop/ClickListener.class
new file mode 100644
index 00000000..d2af7f26
Binary files /dev/null and b/target/classes/track/lections/l3oop/ClickListener.class differ
diff --git a/target/classes/track/lections/l3oop/Di$1.class b/target/classes/track/lections/l3oop/Di$1.class
new file mode 100644
index 00000000..f3caa34a
Binary files /dev/null and b/target/classes/track/lections/l3oop/Di$1.class differ
diff --git a/target/classes/track/lections/l3oop/Di.class b/target/classes/track/lections/l3oop/Di.class
new file mode 100644
index 00000000..d9e5afa7
Binary files /dev/null and b/target/classes/track/lections/l3oop/Di.class differ
diff --git a/target/classes/track/lections/l3oop/Engine.class b/target/classes/track/lections/l3oop/Engine.class
new file mode 100644
index 00000000..8529a9b8
Binary files /dev/null and b/target/classes/track/lections/l3oop/Engine.class differ
diff --git a/target/classes/track/lections/l3oop/ExtAccount.class b/target/classes/track/lections/l3oop/ExtAccount.class
new file mode 100644
index 00000000..c4cb2bf9
Binary files /dev/null and b/target/classes/track/lections/l3oop/ExtAccount.class differ
diff --git a/target/classes/track/lections/l3oop/Gear.class b/target/classes/track/lections/l3oop/Gear.class
new file mode 100644
index 00000000..a7ab914d
Binary files /dev/null and b/target/classes/track/lections/l3oop/Gear.class differ
diff --git a/target/classes/track/lections/l3oop/ImageServer.class b/target/classes/track/lections/l3oop/ImageServer.class
new file mode 100644
index 00000000..1db87e65
Binary files /dev/null and b/target/classes/track/lections/l3oop/ImageServer.class differ
diff --git a/target/classes/track/lections/l3oop/LinkageTest$Child.class b/target/classes/track/lections/l3oop/LinkageTest$Child.class
new file mode 100644
index 00000000..7596606d
Binary files /dev/null and b/target/classes/track/lections/l3oop/LinkageTest$Child.class differ
diff --git a/target/classes/track/lections/l3oop/LinkageTest$Parent.class b/target/classes/track/lections/l3oop/LinkageTest$Parent.class
new file mode 100644
index 00000000..274fc51d
Binary files /dev/null and b/target/classes/track/lections/l3oop/LinkageTest$Parent.class differ
diff --git a/target/classes/track/lections/l3oop/LinkageTest.class b/target/classes/track/lections/l3oop/LinkageTest.class
new file mode 100644
index 00000000..bb91f5d5
Binary files /dev/null and b/target/classes/track/lections/l3oop/LinkageTest.class differ
diff --git a/target/classes/track/lections/l3oop/ListenerDemo$Canvas.class b/target/classes/track/lections/l3oop/ListenerDemo$Canvas.class
new file mode 100644
index 00000000..96a9f84f
Binary files /dev/null and b/target/classes/track/lections/l3oop/ListenerDemo$Canvas.class differ
diff --git a/target/classes/track/lections/l3oop/ListenerDemo$Pentagon.class b/target/classes/track/lections/l3oop/ListenerDemo$Pentagon.class
new file mode 100644
index 00000000..5e763403
Binary files /dev/null and b/target/classes/track/lections/l3oop/ListenerDemo$Pentagon.class differ
diff --git a/target/classes/track/lections/l3oop/ListenerDemo$Ussr.class b/target/classes/track/lections/l3oop/ListenerDemo$Ussr.class
new file mode 100644
index 00000000..5b3665de
Binary files /dev/null and b/target/classes/track/lections/l3oop/ListenerDemo$Ussr.class differ
diff --git a/target/classes/track/lections/l3oop/ListenerDemo.class b/target/classes/track/lections/l3oop/ListenerDemo.class
new file mode 100644
index 00000000..9558a2e1
Binary files /dev/null and b/target/classes/track/lections/l3oop/ListenerDemo.class differ
diff --git a/target/classes/track/lections/l3oop/Loader.class b/target/classes/track/lections/l3oop/Loader.class
new file mode 100644
index 00000000..c061b740
Binary files /dev/null and b/target/classes/track/lections/l3oop/Loader.class differ
diff --git a/target/classes/track/lections/l3oop/LoaderDemo.class b/target/classes/track/lections/l3oop/LoaderDemo.class
new file mode 100644
index 00000000..8461b480
Binary files /dev/null and b/target/classes/track/lections/l3oop/LoaderDemo.class differ
diff --git a/target/classes/track/lections/l3oop/NetLoader.class b/target/classes/track/lections/l3oop/NetLoader.class
new file mode 100644
index 00000000..31f3e8db
Binary files /dev/null and b/target/classes/track/lections/l3oop/NetLoader.class differ
diff --git a/target/classes/track/lections/l3oop/Polimorf$Child.class b/target/classes/track/lections/l3oop/Polimorf$Child.class
new file mode 100644
index 00000000..82be3ffa
Binary files /dev/null and b/target/classes/track/lections/l3oop/Polimorf$Child.class differ
diff --git a/target/classes/track/lections/l3oop/Polimorf$Parent.class b/target/classes/track/lections/l3oop/Polimorf$Parent.class
new file mode 100644
index 00000000..de97ab26
Binary files /dev/null and b/target/classes/track/lections/l3oop/Polimorf$Parent.class differ
diff --git a/target/classes/track/lections/l3oop/Polimorf.class b/target/classes/track/lections/l3oop/Polimorf.class
new file mode 100644
index 00000000..bd359230
Binary files /dev/null and b/target/classes/track/lections/l3oop/Polimorf.class differ
diff --git a/target/classes/track/lections/l3oop/Resource.class b/target/classes/track/lections/l3oop/Resource.class
new file mode 100644
index 00000000..b44bf4b3
Binary files /dev/null and b/target/classes/track/lections/l3oop/Resource.class differ
diff --git a/target/classes/track/lections/l3oop/StaticDemo.class b/target/classes/track/lections/l3oop/StaticDemo.class
new file mode 100644
index 00000000..4b147e83
Binary files /dev/null and b/target/classes/track/lections/l3oop/StaticDemo.class differ
diff --git a/target/classes/track/lections/l3oop/XmlLoader.class b/target/classes/track/lections/l3oop/XmlLoader.class
new file mode 100644
index 00000000..3e594c58
Binary files /dev/null and b/target/classes/track/lections/l3oop/XmlLoader.class differ
diff --git a/target/classes/track/lections/l5collections/BoundGenerics.class b/target/classes/track/lections/l5collections/BoundGenerics.class
new file mode 100644
index 00000000..7c2afafa
Binary files /dev/null and b/target/classes/track/lections/l5collections/BoundGenerics.class differ
diff --git a/target/classes/track/lections/l5collections/Box.class b/target/classes/track/lections/l5collections/Box.class
new file mode 100644
index 00000000..7a56b5a3
Binary files /dev/null and b/target/classes/track/lections/l5collections/Box.class differ
diff --git a/target/classes/track/lections/l5collections/BoxV2.class b/target/classes/track/lections/l5collections/BoxV2.class
new file mode 100644
index 00000000..45408924
Binary files /dev/null and b/target/classes/track/lections/l5collections/BoxV2.class differ
diff --git a/target/classes/track/lections/l5collections/ByteToStringFunction.class b/target/classes/track/lections/l5collections/ByteToStringFunction.class
new file mode 100644
index 00000000..ebb779ee
Binary files /dev/null and b/target/classes/track/lections/l5collections/ByteToStringFunction.class differ
diff --git a/target/classes/track/lections/l5collections/CopyUtil.class b/target/classes/track/lections/l5collections/CopyUtil.class
new file mode 100644
index 00000000..26c09240
Binary files /dev/null and b/target/classes/track/lections/l5collections/CopyUtil.class differ
diff --git a/target/classes/track/lections/l5collections/Demo$MyConsumer.class b/target/classes/track/lections/l5collections/Demo$MyConsumer.class
new file mode 100644
index 00000000..71fd28ff
Binary files /dev/null and b/target/classes/track/lections/l5collections/Demo$MyConsumer.class differ
diff --git a/target/classes/track/lections/l5collections/Demo$MyPredicate.class b/target/classes/track/lections/l5collections/Demo$MyPredicate.class
new file mode 100644
index 00000000..c97f82ab
Binary files /dev/null and b/target/classes/track/lections/l5collections/Demo$MyPredicate.class differ
diff --git a/target/classes/track/lections/l5collections/Demo.class b/target/classes/track/lections/l5collections/Demo.class
new file mode 100644
index 00000000..283f831f
Binary files /dev/null and b/target/classes/track/lections/l5collections/Demo.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionSample.class b/target/classes/track/lections/l5collections/FunctionSample.class
new file mode 100644
index 00000000..81cdd9bf
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionSample.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$1.class b/target/classes/track/lections/l5collections/FunctionalProgramming$1.class
new file mode 100644
index 00000000..6e76d389
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$1.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$BiFunction.class b/target/classes/track/lections/l5collections/FunctionalProgramming$BiFunction.class
new file mode 100644
index 00000000..bf94b8af
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$BiFunction.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$BiOperator.class b/target/classes/track/lections/l5collections/FunctionalProgramming$BiOperator.class
new file mode 100644
index 00000000..2f999dad
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$BiOperator.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$Function.class b/target/classes/track/lections/l5collections/FunctionalProgramming$Function.class
new file mode 100644
index 00000000..b9df52dd
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$Function.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$Predicate.class b/target/classes/track/lections/l5collections/FunctionalProgramming$Predicate.class
new file mode 100644
index 00000000..e7ce36f0
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$Predicate.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming$Square.class b/target/classes/track/lections/l5collections/FunctionalProgramming$Square.class
new file mode 100644
index 00000000..32847871
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming$Square.class differ
diff --git a/target/classes/track/lections/l5collections/FunctionalProgramming.class b/target/classes/track/lections/l5collections/FunctionalProgramming.class
new file mode 100644
index 00000000..147396df
Binary files /dev/null and b/target/classes/track/lections/l5collections/FunctionalProgramming.class differ
diff --git a/target/classes/track/lections/l5collections/IntToByteFunction.class b/target/classes/track/lections/l5collections/IntToByteFunction.class
new file mode 100644
index 00000000..2c749b35
Binary files /dev/null and b/target/classes/track/lections/l5collections/IntToByteFunction.class differ
diff --git a/target/classes/track/lections/l5collections/Lambda$ImageData.class b/target/classes/track/lections/l5collections/Lambda$ImageData.class
new file mode 100644
index 00000000..ed24d2ed
Binary files /dev/null and b/target/classes/track/lections/l5collections/Lambda$ImageData.class differ
diff --git a/target/classes/track/lections/l5collections/Lambda$ImageInfo.class b/target/classes/track/lections/l5collections/Lambda$ImageInfo.class
new file mode 100644
index 00000000..2d5f652c
Binary files /dev/null and b/target/classes/track/lections/l5collections/Lambda$ImageInfo.class differ
diff --git a/target/classes/track/lections/l5collections/Lambda.class b/target/classes/track/lections/l5collections/Lambda.class
new file mode 100644
index 00000000..8d46e3ba
Binary files /dev/null and b/target/classes/track/lections/l5collections/Lambda.class differ
diff --git a/target/classes/track/lections/l5collections/Stack.class b/target/classes/track/lections/l5collections/Stack.class
new file mode 100644
index 00000000..7c859a51
Binary files /dev/null and b/target/classes/track/lections/l5collections/Stack.class differ
diff --git a/target/classes/track/lections/l5collections/StackException.class b/target/classes/track/lections/l5collections/StackException.class
new file mode 100644
index 00000000..4836c530
Binary files /dev/null and b/target/classes/track/lections/l5collections/StackException.class differ
diff --git a/target/classes/track/lections/l5collections/animals/Animal.class b/target/classes/track/lections/l5collections/animals/Animal.class
new file mode 100644
index 00000000..36cead21
Binary files /dev/null and b/target/classes/track/lections/l5collections/animals/Animal.class differ
diff --git a/target/classes/track/lections/l5collections/animals/Cat.class b/target/classes/track/lections/l5collections/animals/Cat.class
new file mode 100644
index 00000000..85b02091
Binary files /dev/null and b/target/classes/track/lections/l5collections/animals/Cat.class differ
diff --git a/target/classes/track/lections/l5collections/animals/Dog.class b/target/classes/track/lections/l5collections/animals/Dog.class
new file mode 100644
index 00000000..227b71fa
Binary files /dev/null and b/target/classes/track/lections/l5collections/animals/Dog.class differ
diff --git a/target/classes/track/lections/l5collections/animals/Pet.class b/target/classes/track/lections/l5collections/animals/Pet.class
new file mode 100644
index 00000000..c3c45904
Binary files /dev/null and b/target/classes/track/lections/l5collections/animals/Pet.class differ
diff --git a/target/classes/track/lessons/lesson1/HelloWorld.class b/target/classes/track/lessons/lesson1/HelloWorld.class
new file mode 100644
index 00000000..db293f2d
Binary files /dev/null and b/target/classes/track/lessons/lesson1/HelloWorld.class differ
diff --git a/target/classes/track/lessons/lesson2/Document.class b/target/classes/track/lessons/lesson2/Document.class
new file mode 100644
index 00000000..5f4597df
Binary files /dev/null and b/target/classes/track/lessons/lesson2/Document.class differ
diff --git a/target/classes/track/lessons/lesson2/Parser.class b/target/classes/track/lessons/lesson2/Parser.class
new file mode 100644
index 00000000..bcc210ec
Binary files /dev/null and b/target/classes/track/lessons/lesson2/Parser.class differ
diff --git a/target/classes/track/lessons/lesson3/DynamicList.class b/target/classes/track/lessons/lesson3/DynamicList.class
new file mode 100644
index 00000000..c8f6df9d
Binary files /dev/null and b/target/classes/track/lessons/lesson3/DynamicList.class differ
diff --git a/target/classes/track/lessons/lesson3/LinkedList.class b/target/classes/track/lessons/lesson3/LinkedList.class
new file mode 100644
index 00000000..20ac0fce
Binary files /dev/null and b/target/classes/track/lessons/lesson3/LinkedList.class differ
diff --git a/target/classes/track/lessons/lesson3/List.class b/target/classes/track/lessons/lesson3/List.class
new file mode 100644
index 00000000..77a6b5da
Binary files /dev/null and b/target/classes/track/lessons/lesson3/List.class differ
diff --git a/target/classes/track/lessons/lesson3/ListMain.class b/target/classes/track/lessons/lesson3/ListMain.class
new file mode 100644
index 00000000..27afcbf7
Binary files /dev/null and b/target/classes/track/lessons/lesson3/ListMain.class differ
diff --git a/target/test-classes/track/container/ContainerTest.class b/target/test-classes/track/container/ContainerTest.class
new file mode 100644
index 00000000..384dc2c5
Binary files /dev/null and b/target/test-classes/track/container/ContainerTest.class differ
diff --git a/target/test-classes/track/lessons/lesson2/ParserTest.class b/target/test-classes/track/lessons/lesson2/ParserTest.class
new file mode 100644
index 00000000..3a53a482
Binary files /dev/null and b/target/test-classes/track/lessons/lesson2/ParserTest.class differ