Fix conflicts in libraries/pom.xml
This commit is contained in:
+10
-1
@@ -30,8 +30,17 @@
|
||||
- [Introduction to Neuroph](http://www.baeldung.com/neuroph)
|
||||
- [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue)
|
||||
- [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss)
|
||||
- [Introduction to NoException](http://www.baeldung.com/intrduction-to-noexception)
|
||||
- [Introduction to PCollections](http://www.baeldung.com/java-pcollections)
|
||||
- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly)
|
||||
- [Apache Commons Chain](http://www.baeldung.com/apache-commons-chain)
|
||||
- [Introduction to Eclipse Collections](http://www.baeldung.com/eclipse-collections)
|
||||
- [DistinctBy in Java Stream API](http://www.baeldung.com/java-streams-distinct-by)
|
||||
- [Introduction to Apache Commons CSV](http://www.baeldung.com/apache-commons-csv)
|
||||
- [Difference Between Two Dates in Java](http://www.baeldung.com/java-date-difference)
|
||||
- [Introduction to NoException](http://www.baeldung.com/no-exception)
|
||||
|
||||
- [Introduction to FunctionalJava](http://www.baeldung.com/functional-java)
|
||||
- [Apache Commons IO](http://www.baeldung.com/apache-commons-io)
|
||||
|
||||
The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own.
|
||||
|
||||
|
||||
+26
-31
@@ -140,7 +140,7 @@
|
||||
<artifactId>unit-ri</artifactId>
|
||||
<version>1.0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-collections4</artifactId>
|
||||
<version>${commons.collections.version}</version>
|
||||
@@ -487,21 +487,7 @@
|
||||
<artifactId>vavr</artifactId>
|
||||
<version>${vavr.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.geotools</groupId>
|
||||
<artifactId>gt-shapefile</artifactId>
|
||||
<version>${geotools.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.geotools</groupId>
|
||||
<artifactId>gt-epsg-hsql</artifactId>
|
||||
<version>${geotools.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.geotools</groupId>
|
||||
<artifactId>gt-swing</artifactId>
|
||||
<version>${geotools.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Retrofit -->
|
||||
<dependency>
|
||||
<groupId>com.squareup.retrofit2</groupId>
|
||||
@@ -517,6 +503,11 @@
|
||||
<groupId>com.squareup.retrofit2</groupId>
|
||||
<artifactId>adapter-rxjava</artifactId>
|
||||
<version>${retrofit.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>logging-interceptor</artifactId>
|
||||
<version>3.9.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.darwinsys</groupId>
|
||||
@@ -554,6 +545,21 @@
|
||||
<artifactId>protonpack</artifactId>
|
||||
<version>${protonpack.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.functionaljava</groupId>
|
||||
<artifactId>functionaljava</artifactId>
|
||||
<version>4.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.cache</groupId>
|
||||
<artifactId>cache-api</artifactId>
|
||||
<version>${cache.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hazelcast</groupId>
|
||||
<artifactId>hazelcast</artifactId>
|
||||
<version>${hazelcast.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
@@ -561,19 +567,6 @@
|
||||
<name>Java.net repository</name>
|
||||
<url>http://download.java.net/maven/2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>osgeo</id>
|
||||
<name>Open Source Geospatial Foundation Repository</name>
|
||||
<url>http://download.osgeo.org/webdav/geotools/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
<id>opengeo</id>
|
||||
<name>OpenGeo Maven Repository</name>
|
||||
<url>http://repo.opengeo.org</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
@@ -633,7 +626,9 @@
|
||||
<retrofit.version>2.3.0</retrofit.version>
|
||||
<joda-time.version>2.9.9</joda-time.version>
|
||||
<hirondelle-date4j.version>1.5.1</hirondelle-date4j.version>
|
||||
<protonpack.version>1.14</protonpack.version>
|
||||
<protonpack.version>1.14</protonpack.version>
|
||||
<unit-ri.version>1.0.3</unit-ri.version>
|
||||
<cache.version>1.0.0</cache.version>
|
||||
<hazelcast.version>3.8.4</hazelcast.version>
|
||||
</properties>
|
||||
</project>
|
||||
</project>
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.baeldung.commons.lang3;
|
||||
|
||||
import org.apache.commons.lang3.concurrent.LazyInitializer;
|
||||
|
||||
public class SampleLazyInitializer extends LazyInitializer<SampleObject> {
|
||||
|
||||
@Override
|
||||
protected SampleObject initialize() {
|
||||
return new SampleObject();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.baeldung.commons.lang3;
|
||||
|
||||
public class SampleObject {
|
||||
|
||||
//Ignored
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.baeldung.fj;
|
||||
|
||||
import fj.F;
|
||||
import fj.F1Functions;
|
||||
import fj.Unit;
|
||||
import fj.data.IO;
|
||||
import fj.data.IOFunctions;
|
||||
|
||||
public class FunctionalJavaIOMain {
|
||||
|
||||
public static IO<Unit> printLetters(final String s) {
|
||||
return () -> {
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
System.out.println(s.charAt(i));
|
||||
}
|
||||
return Unit.unit();
|
||||
};
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
F<String, IO<Unit>> printLetters = i -> printLetters(i);
|
||||
|
||||
IO<Unit> lowerCase = IOFunctions
|
||||
.stdoutPrintln("What's your first Name ?");
|
||||
|
||||
IO<Unit> input = IOFunctions.stdoutPrint("First Name: ");
|
||||
|
||||
IO<Unit> userInput = IOFunctions.append(lowerCase, input);
|
||||
|
||||
IO<String> readInput = IOFunctions.stdinReadLine();
|
||||
|
||||
F<String, String> toUpperCase = i -> i.toUpperCase();
|
||||
|
||||
F<String, IO<Unit>> transformInput = F1Functions
|
||||
.<String, IO<Unit>, String> o(printLetters).f(toUpperCase);
|
||||
|
||||
IO<Unit> readAndPrintResult = IOFunctions.bind(readInput,
|
||||
transformInput);
|
||||
|
||||
IO<Unit> program = IOFunctions.bind(userInput,
|
||||
nothing -> readAndPrintResult);
|
||||
|
||||
IOFunctions.toSafe(program).run();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.baeldung.fj;
|
||||
|
||||
import fj.F;
|
||||
import fj.Show;
|
||||
import fj.data.Array;
|
||||
import fj.data.List;
|
||||
import fj.data.Option;
|
||||
import fj.function.Characters;
|
||||
import fj.function.Integers;
|
||||
|
||||
public class FunctionalJavaMain {
|
||||
|
||||
public static final F<Integer, Boolean> isEven = i -> i % 2 == 0;
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
List<Integer> fList = List.list(3, 4, 5, 6);
|
||||
List<Boolean> evenList = fList.map(isEven);
|
||||
Show.listShow(Show.booleanShow).println(evenList);
|
||||
|
||||
fList = fList.map(i -> i + 1);
|
||||
Show.listShow(Show.intShow).println(fList);
|
||||
|
||||
Array<Integer> a = Array.array(17, 44, 67, 2, 22, 80, 1, 27);
|
||||
Array<Integer> b = a.filter(Integers.even);
|
||||
Show.arrayShow(Show.intShow).println(b);
|
||||
|
||||
Array<String> array = Array.array("Welcome", "To", "baeldung");
|
||||
Boolean isExist = array.exists(s -> List.fromString(s).forall(Characters.isLowerCase));
|
||||
System.out.println(isExist);
|
||||
|
||||
Array<Integer> intArray = Array.array(17, 44, 67, 2, 22, 80, 1, 27);
|
||||
int sum = intArray.foldLeft(Integers.add, 0);
|
||||
System.out.println(sum);
|
||||
|
||||
Option<Integer> n1 = Option.some(1);
|
||||
Option<Integer> n2 = Option.some(2);
|
||||
|
||||
F<Integer, Option<Integer>> f1 = i -> i % 2 == 0 ? Option.some(i + 100) : Option.none();
|
||||
|
||||
Option<Integer> result1 = n1.bind(f1);
|
||||
Option<Integer> result2 = n2.bind(f1);
|
||||
|
||||
Show.optionShow(Show.intShow).println(result1);
|
||||
Show.optionShow(Show.intShow).println(result2);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
package com.baeldung.geotools;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.geotools.data.DataUtilities;
|
||||
import org.geotools.data.DefaultTransaction;
|
||||
import org.geotools.data.Transaction;
|
||||
import org.geotools.data.shapefile.ShapefileDataStore;
|
||||
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
|
||||
import org.geotools.data.simple.SimpleFeatureSource;
|
||||
import org.geotools.data.simple.SimpleFeatureStore;
|
||||
import org.geotools.feature.DefaultFeatureCollection;
|
||||
import org.geotools.feature.simple.SimpleFeatureBuilder;
|
||||
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
|
||||
import org.geotools.geometry.jts.JTSFactoryFinder;
|
||||
import org.geotools.referencing.crs.DefaultGeographicCRS;
|
||||
import org.geotools.swing.data.JFileDataStoreChooser;
|
||||
import org.opengis.feature.simple.SimpleFeature;
|
||||
import org.opengis.feature.simple.SimpleFeatureType;
|
||||
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||
import com.vividsolutions.jts.geom.Point;
|
||||
|
||||
public class ShapeFile {
|
||||
|
||||
private static final String FILE_NAME = "shapefile.shp";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
DefaultFeatureCollection collection = new DefaultFeatureCollection();
|
||||
|
||||
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
|
||||
|
||||
SimpleFeatureType TYPE = DataUtilities.createType("Location", "location:Point:srid=4326," + "name:String");
|
||||
|
||||
SimpleFeatureType CITY = createFeatureType();
|
||||
|
||||
SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(CITY);
|
||||
|
||||
addLocations(featureBuilder, collection);
|
||||
|
||||
File shapeFile = getNewShapeFile();
|
||||
|
||||
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
|
||||
|
||||
Map<String, Serializable> params = new HashMap<String, Serializable>();
|
||||
params.put("url", shapeFile.toURI()
|
||||
.toURL());
|
||||
params.put("create spatial index", Boolean.TRUE);
|
||||
|
||||
ShapefileDataStore dataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
|
||||
dataStore.createSchema(CITY);
|
||||
|
||||
// If you decide to use the TYPE type and create a Data Store with it,
|
||||
// You will need to uncomment this line to set the Coordinate Reference System
|
||||
// newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
|
||||
|
||||
Transaction transaction = new DefaultTransaction("create");
|
||||
|
||||
String typeName = dataStore.getTypeNames()[0];
|
||||
SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
|
||||
|
||||
if (featureSource instanceof SimpleFeatureStore) {
|
||||
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
|
||||
|
||||
featureStore.setTransaction(transaction);
|
||||
try {
|
||||
featureStore.addFeatures(collection);
|
||||
transaction.commit();
|
||||
|
||||
} catch (Exception problem) {
|
||||
problem.printStackTrace();
|
||||
transaction.rollback();
|
||||
|
||||
} finally {
|
||||
transaction.close();
|
||||
}
|
||||
System.exit(0); // success!
|
||||
} else {
|
||||
System.out.println(typeName + " does not support read/write access");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static SimpleFeatureType createFeatureType() {
|
||||
|
||||
SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
|
||||
builder.setName("Location");
|
||||
builder.setCRS(DefaultGeographicCRS.WGS84);
|
||||
|
||||
builder.add("Location", Point.class);
|
||||
builder.length(15)
|
||||
.add("Name", String.class);
|
||||
|
||||
SimpleFeatureType CITY = builder.buildFeatureType();
|
||||
|
||||
return CITY;
|
||||
}
|
||||
|
||||
public static void addLocations(SimpleFeatureBuilder featureBuilder, DefaultFeatureCollection collection) {
|
||||
|
||||
Map<String, List<Double>> locations = new HashMap<>();
|
||||
|
||||
double lat = 13.752222;
|
||||
double lng = 100.493889;
|
||||
String name = "Bangkok";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
lat = 53.083333;
|
||||
lng = -0.15;
|
||||
name = "New York";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
lat = -33.925278;
|
||||
lng = 18.423889;
|
||||
name = "Cape Town";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
lat = -33.859972;
|
||||
lng = 151.211111;
|
||||
name = "Sydney";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
lat = 45.420833;
|
||||
lng = -75.69;
|
||||
name = "Ottawa";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
lat = 30.07708;
|
||||
lng = 31.285909;
|
||||
name = "Cairo";
|
||||
addToLocationMap(name, lat, lng, locations);
|
||||
|
||||
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
|
||||
|
||||
for (Map.Entry<String, List<Double>> location : locations.entrySet()) {
|
||||
Point point = geometryFactory.createPoint(new Coordinate(location.getValue()
|
||||
.get(0),
|
||||
location.getValue()
|
||||
.get(1)));
|
||||
featureBuilder.add(point);
|
||||
featureBuilder.add(name);
|
||||
SimpleFeature feature = featureBuilder.buildFeature(null);
|
||||
collection.add(feature);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void addToLocationMap(String name, double lat, double lng, Map<String, List<Double>> locations) {
|
||||
List<Double> coordinates = new ArrayList<>();
|
||||
|
||||
coordinates.add(lat);
|
||||
coordinates.add(lng);
|
||||
locations.put(name, coordinates);
|
||||
}
|
||||
|
||||
private static File getNewShapeFile() {
|
||||
String filePath = new File(".").getAbsolutePath() + FILE_NAME;
|
||||
|
||||
|
||||
JFileDataStoreChooser chooser = new JFileDataStoreChooser("shp");
|
||||
chooser.setDialogTitle("Save shapefile");
|
||||
chooser.setSelectedFile(new File(filePath));
|
||||
|
||||
int returnVal = chooser.showSaveDialog(null);
|
||||
|
||||
if (returnVal != JFileDataStoreChooser.APPROVE_OPTION) {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
File shapeFile = chooser.getSelectedFile();
|
||||
if (shapeFile.equals(filePath)) {
|
||||
System.out.println("Error: cannot replace " + filePath);
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
return shapeFile;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.cache.event.CacheEntryCreatedListener;
|
||||
import javax.cache.event.CacheEntryEvent;
|
||||
import javax.cache.event.CacheEntryListenerException;
|
||||
import javax.cache.event.CacheEntryUpdatedListener;
|
||||
|
||||
public class SimpleCacheEntryListener implements CacheEntryCreatedListener<String, String>, CacheEntryUpdatedListener<String, String>, Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -712657810462878763L;
|
||||
private boolean updated;
|
||||
private boolean created;
|
||||
|
||||
public boolean getUpdated() {
|
||||
return this.updated;
|
||||
}
|
||||
|
||||
public boolean getCreated() {
|
||||
return this.created;
|
||||
}
|
||||
|
||||
public void onUpdated(Iterable<CacheEntryEvent<? extends String, ? extends String>> events) throws CacheEntryListenerException {
|
||||
this.updated = true;
|
||||
}
|
||||
|
||||
public void onCreated(Iterable<CacheEntryEvent<? extends String, ? extends String>> events) throws CacheEntryListenerException {
|
||||
this.created = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.cache.integration.CacheLoader;
|
||||
import javax.cache.integration.CacheLoaderException;
|
||||
|
||||
public class SimpleCacheLoader implements CacheLoader<Integer, String> {
|
||||
|
||||
@Override
|
||||
public String load(Integer key) throws CacheLoaderException {
|
||||
return "fromCache" + key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, String> loadAll(Iterable<? extends Integer> keys) throws CacheLoaderException {
|
||||
Map<Integer, String> data = new HashMap<>();
|
||||
for (int key : keys) {
|
||||
data.put(key, load(key));
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.cache.processor.EntryProcessor;
|
||||
import javax.cache.processor.EntryProcessorException;
|
||||
import javax.cache.processor.MutableEntry;
|
||||
|
||||
public class SimpleEntryProcessor implements EntryProcessor<String, String, String>, Serializable {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5616476363722945132L;
|
||||
|
||||
public String process(MutableEntry<String, String> entry, Object... args) throws EntryProcessorException {
|
||||
|
||||
if (entry.exists()) {
|
||||
String current = entry.getValue();
|
||||
entry.setValue(current + " - modified");
|
||||
return current;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.baeldung.retrofitguide;
|
||||
|
||||
import java.io.IOException;
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class GitHubServiceGenerator {
|
||||
|
||||
private static final String BASE_URL = "https://api.github.com/";
|
||||
|
||||
private static Retrofit.Builder builder
|
||||
= new Retrofit.Builder()
|
||||
.baseUrl(BASE_URL)
|
||||
.addConverterFactory(GsonConverterFactory.create());
|
||||
|
||||
private static Retrofit retrofit = builder.build();
|
||||
|
||||
private static OkHttpClient.Builder httpClient
|
||||
= new OkHttpClient.Builder();
|
||||
|
||||
private static HttpLoggingInterceptor logging
|
||||
= new HttpLoggingInterceptor()
|
||||
.setLevel(HttpLoggingInterceptor.Level.BASIC);
|
||||
|
||||
public static <S> S createService(Class<S> serviceClass) {
|
||||
if (!httpClient.interceptors().contains(logging)) {
|
||||
httpClient.addInterceptor(logging);
|
||||
builder.client(httpClient.build());
|
||||
retrofit = builder.build();
|
||||
}
|
||||
return retrofit.create(serviceClass);
|
||||
}
|
||||
|
||||
public static <S> S createService(Class<S> serviceClass, final String token) {
|
||||
if (token != null) {
|
||||
httpClient.interceptors().clear();
|
||||
httpClient.addInterceptor(new Interceptor() {
|
||||
@Override
|
||||
public Response intercept(Interceptor.Chain chain) throws IOException {
|
||||
Request original = chain.request();
|
||||
Request.Builder builder = original.newBuilder()
|
||||
.header("Authorization", token);
|
||||
Request request = builder.build();
|
||||
return chain.proceed(request);
|
||||
}
|
||||
});
|
||||
builder.client(httpClient.build());
|
||||
retrofit = builder.build();
|
||||
}
|
||||
return retrofit.create(serviceClass);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.baeldung.retrofitguide;
|
||||
|
||||
import java.io.IOException;
|
||||
import okhttp3.OkHttpClient;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
//Manual creation
|
||||
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
|
||||
Retrofit retrofit = new Retrofit.Builder()
|
||||
.baseUrl("https://api.github.com/")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.client(httpClient.build())
|
||||
.build();
|
||||
UserService service = retrofit.create(UserService.class);
|
||||
//Using GitHubServiceGenerator
|
||||
service = GitHubServiceGenerator.createService(UserService.class);
|
||||
Call<User> callSync = service.getUser("eugenp");
|
||||
Call<User> callAsync = service.getUser("eugenp");
|
||||
|
||||
try {
|
||||
Response<User> response = callSync.execute();
|
||||
User user = response.body();
|
||||
System.out.println(user);
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
|
||||
// Execute the call asynchronously. Get a positive or negative callback.
|
||||
callAsync.enqueue(new Callback<User>() {
|
||||
@Override
|
||||
public void onResponse(Call<User> call, Response<User> response) {
|
||||
User user = response.body();
|
||||
System.out.println(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<User> call, Throwable throwable) {
|
||||
System.out.println(throwable);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.baeldung.retrofitguide;
|
||||
|
||||
public class User {
|
||||
|
||||
private String login;
|
||||
private long id;
|
||||
private String url;
|
||||
private String company;
|
||||
private String blog;
|
||||
private String email;
|
||||
|
||||
public String getLogin() {
|
||||
return login;
|
||||
}
|
||||
|
||||
public void setLogin(String login) {
|
||||
this.login = login;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getCompany() {
|
||||
return company;
|
||||
}
|
||||
|
||||
public void setCompany(String company) {
|
||||
this.company = company;
|
||||
}
|
||||
|
||||
public String getBlog() {
|
||||
return blog;
|
||||
}
|
||||
|
||||
public void setBlog(String blog) {
|
||||
this.blog = blog;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User{" + "login=" + login + ", id=" + id + ", url=" + url + ", company=" + company + ", blog=" + blog + ", email=" + email + '}';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.baeldung.retrofitguide;
|
||||
|
||||
import java.util.List;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Path;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface UserService {
|
||||
|
||||
@GET("/users")
|
||||
public Call<List<User>> getUsers(@Query("per_page") int per_page, @Query("page") int page);
|
||||
|
||||
@GET("/users/{username}")
|
||||
public Call<User> getUser(@Path("username") String username);
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.baeldung.commons.lang3;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertSame;
|
||||
@@ -12,12 +13,14 @@ import java.beans.PropertyChangeListener;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import org.apache.commons.lang3.ArchUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.apache.commons.lang3.arch.Processor;
|
||||
import org.apache.commons.lang3.concurrent.ConcurrentException;
|
||||
import org.apache.commons.lang3.concurrent.ConcurrentRuntimeException;
|
||||
import org.apache.commons.lang3.concurrent.ConcurrentUtils;
|
||||
import org.apache.commons.lang3.event.EventUtils;
|
||||
@@ -97,22 +100,37 @@ public class Lang3UtilsTest {
|
||||
public void testAddEventListenerThrowsException() {
|
||||
final ExceptionEventSource src = new ExceptionEventSource();
|
||||
try {
|
||||
EventUtils.addEventListener(src, PropertyChangeListener.class, new PropertyChangeListener() {
|
||||
@Override
|
||||
public void propertyChange(final PropertyChangeEvent e) {
|
||||
// Do nothing!
|
||||
}
|
||||
});
|
||||
EventUtils.addEventListener(src, PropertyChangeListener.class, (PropertyChangeEvent e) -> {
|
||||
/* Change event*/});
|
||||
fail("Add method should have thrown an exception, so method should fail.");
|
||||
} catch (final RuntimeException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ConcurrentExceptionSample() throws ConcurrentException {
|
||||
final Error err = new AssertionError("Test");
|
||||
try {
|
||||
ConcurrentUtils.handleCause(new ExecutionException(err));
|
||||
fail("Error not thrown!");
|
||||
} catch (final Error e) {
|
||||
assertEquals("Wrong error", err, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExceptionEventSource {
|
||||
public void addPropertyChangeListener(final PropertyChangeListener listener) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLazyInitializer() throws Exception {
|
||||
SampleLazyInitializer sampleLazyInitializer = new SampleLazyInitializer();
|
||||
SampleObject sampleObjectOne = sampleLazyInitializer.get();
|
||||
SampleObject sampleObjectTwo = sampleLazyInitializer.get();
|
||||
assertEquals(sampleObjectOne, sampleObjectTwo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.baeldung.fj;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import fj.F;
|
||||
import fj.data.Array;
|
||||
import fj.data.List;
|
||||
import fj.data.Option;
|
||||
import fj.function.Characters;
|
||||
import fj.function.Integers;
|
||||
|
||||
public class FunctionalJavaTest {
|
||||
|
||||
public static final F<Integer, Boolean> isEven = i -> i % 2 == 0;
|
||||
|
||||
@Test
|
||||
public void calculateEvenNumbers_givenIntList_returnTrue() {
|
||||
List<Integer> fList = List.list(3, 4, 5, 6);
|
||||
List<Boolean> evenList = fList.map(isEven);
|
||||
List<Boolean> evenListTrueResult = List.list(false, true, false, true);
|
||||
List<Boolean> evenListFalseResult = List.list(true, false, false, true);
|
||||
assertEquals(evenList.equals(evenListTrueResult), true);
|
||||
assertEquals(evenList.equals(evenListFalseResult), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mapList_givenIntList_returnResult() {
|
||||
List<Integer> fList = List.list(3, 4, 5, 6);
|
||||
fList = fList.map(i -> i + 100);
|
||||
List<Integer> resultList = List.list(103, 104, 105, 106);
|
||||
List<Integer> falseResultList = List.list(15, 504, 105, 106);
|
||||
assertEquals(fList.equals(resultList), true);
|
||||
assertEquals(fList.equals(falseResultList), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterList_givenIntList_returnResult() {
|
||||
Array<Integer> array = Array.array(3, 4, 5, 6);
|
||||
Array<Integer> filteredArray = array.filter(Integers.even);
|
||||
Array<Integer> result = Array.array(4, 6);
|
||||
Array<Integer> wrongResult = Array.array(3, 5);
|
||||
assertEquals(filteredArray.equals(result), true);
|
||||
assertEquals(filteredArray.equals(wrongResult), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkForLowerCase_givenStringArray_returnResult() {
|
||||
Array<String> array = Array.array("Welcome", "To", "baeldung");
|
||||
Array<String> array2 = Array.array("Welcome", "To", "Baeldung");
|
||||
Boolean isExist = array.exists(s -> List.fromString(s).forall(Characters.isLowerCase));
|
||||
Boolean isExist2 = array2.exists(s -> List.fromString(s).forall(Characters.isLowerCase));
|
||||
assertEquals(isExist, true);
|
||||
assertEquals(isExist2, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkOptions_givenOptions_returnResult() {
|
||||
Option<Integer> n1 = Option.some(1);
|
||||
Option<Integer> n2 = Option.some(2);
|
||||
|
||||
F<Integer, Option<Integer>> f1 = i -> i % 2 == 0 ? Option.some(i + 100) : Option.none();
|
||||
|
||||
Option<Integer> result1 = n1.bind(f1);
|
||||
Option<Integer> result2 = n2.bind(f1);
|
||||
|
||||
assertEquals(result1, Option.none());
|
||||
assertEquals(result2, Option.some(102));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void foldLeft_givenArray_returnResult() {
|
||||
Array<Integer> intArray = Array.array(17, 44, 67, 2, 22, 80, 1, 27);
|
||||
int sum = intArray.foldLeft(Integers.add, 0);
|
||||
assertEquals(sum, 260);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.baeldung.geotools;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.geotools.feature.DefaultFeatureCollection;
|
||||
import org.geotools.feature.simple.SimpleFeatureBuilder;
|
||||
import org.junit.Test;
|
||||
import org.opengis.feature.simple.SimpleFeatureType;
|
||||
|
||||
public class GeoToolsUnitTestTest {
|
||||
|
||||
@Test
|
||||
public void givenFeatureType_whenAddLocations_returnFeatureCollection() {
|
||||
|
||||
DefaultFeatureCollection collection = new DefaultFeatureCollection();
|
||||
|
||||
SimpleFeatureType CITY = ShapeFile.createFeatureType();
|
||||
|
||||
SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(CITY);
|
||||
|
||||
ShapeFile.addLocations(featureBuilder, collection);
|
||||
|
||||
assertNotNull(collection);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import javax.cache.Cache;
|
||||
import javax.cache.CacheManager;
|
||||
import javax.cache.Caching;
|
||||
import javax.cache.configuration.FactoryBuilder;
|
||||
import javax.cache.configuration.MutableConfiguration;
|
||||
import javax.cache.spi.CachingProvider;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class CacheLoaderTest {
|
||||
|
||||
private static final String CACHE_NAME = "SimpleCache";
|
||||
|
||||
private Cache<Integer, String> cache;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||
MutableConfiguration<Integer, String> config = new MutableConfiguration<Integer, String>().setReadThrough(true)
|
||||
.setCacheLoaderFactory(new FactoryBuilder.SingletonFactory<>(new SimpleCacheLoader()));
|
||||
this.cache = cacheManager.createCache("SimpleCache", config);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
Caching.getCachingProvider()
|
||||
.getCacheManager().destroyCache(CACHE_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenReadingFromStorage_thenCorrect() {
|
||||
for (int i = 1; i < 4; i++) {
|
||||
String value = cache.get(i);
|
||||
assertEquals("fromCache" + i, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.cache.Cache;
|
||||
import javax.cache.CacheManager;
|
||||
import javax.cache.Caching;
|
||||
import javax.cache.configuration.MutableConfiguration;
|
||||
import javax.cache.spi.CachingProvider;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class EntryProcessorTest {
|
||||
|
||||
private static final String CACHE_NAME = "MyCache";
|
||||
|
||||
private Cache<String, String> cache;
|
||||
|
||||
@Before
|
||||
public void instantiateCache() {
|
||||
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||
MutableConfiguration<String, String> config = new MutableConfiguration<>();
|
||||
this.cache = cacheManager.createCache(CACHE_NAME, config);
|
||||
this.cache.put("key", "value");
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
Caching.getCachingProvider()
|
||||
.getCacheManager().destroyCache(CACHE_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenModifyValue_thenCorrect() {
|
||||
this.cache.invoke("key", new SimpleEntryProcessor());
|
||||
assertEquals("value - modified", cache.get("key"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.cache.Cache;
|
||||
import javax.cache.CacheManager;
|
||||
import javax.cache.Caching;
|
||||
import javax.cache.configuration.FactoryBuilder;
|
||||
import javax.cache.configuration.MutableCacheEntryListenerConfiguration;
|
||||
import javax.cache.configuration.MutableConfiguration;
|
||||
import javax.cache.spi.CachingProvider;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class EventListenerTest {
|
||||
|
||||
private static final String CACHE_NAME = "MyCache";
|
||||
|
||||
private Cache<String, String> cache;
|
||||
private SimpleCacheEntryListener listener;
|
||||
private MutableCacheEntryListenerConfiguration<String, String> listenerConfiguration;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||
MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();
|
||||
this.cache = cacheManager.createCache("MyCache", config);
|
||||
this.listener = new SimpleCacheEntryListener();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
Caching.getCachingProvider()
|
||||
.getCacheManager().destroyCache(CACHE_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenRunEvent_thenCorrect() throws InterruptedException {
|
||||
this.listenerConfiguration = new MutableCacheEntryListenerConfiguration<>(FactoryBuilder
|
||||
.factoryOf(this.listener), null, false, true);
|
||||
this.cache.registerCacheEntryListener(this.listenerConfiguration);
|
||||
|
||||
assertEquals(false, this.listener.getCreated());
|
||||
|
||||
this.cache.put("key", "value");
|
||||
assertEquals(true, this.listener.getCreated());
|
||||
assertEquals(false, this.listener.getUpdated());
|
||||
|
||||
this.cache.put("key", "newValue");
|
||||
assertEquals(true, this.listener.getUpdated());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.baeldung.jcache;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.cache.Cache;
|
||||
import javax.cache.CacheManager;
|
||||
import javax.cache.Caching;
|
||||
import javax.cache.configuration.MutableConfiguration;
|
||||
import javax.cache.spi.CachingProvider;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class JCacheTest {
|
||||
|
||||
@Test
|
||||
public void instantiateCache() {
|
||||
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||
MutableConfiguration<String, String> config = new MutableConfiguration<>();
|
||||
Cache<String, String> cache = cacheManager.createCache("simpleCache", config);
|
||||
cache.put("key1", "value1");
|
||||
cache.put("key2", "value2");
|
||||
assertEquals("value1", cache.get("key1"));
|
||||
assertEquals("value2", cache.get("key2"));
|
||||
cacheManager.close();
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
|
||||
public class CollectorUtilsTests {
|
||||
|
||||
@Test
|
||||
public void maxByWithProjectionAndDefaultComparer() {
|
||||
public void givenIntegerStream_whenCollectOnMaxByProjection_shouldReturnOptionalMaxValue() {
|
||||
Stream<String> integerStream = Stream.of("a", "bb", "ccc", "1");
|
||||
|
||||
Optional<String> max = integerStream.collect(maxBy(String::length));
|
||||
@@ -25,7 +25,7 @@ public class CollectorUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void minByWithProjectionAndDefaultComparer() {
|
||||
public void givenIntegerStream_whenCollectOnMinByProjection_shouldReturnOptionalMinValue() {
|
||||
Stream<String> integerStream = Stream.of("abc", "bb", "ccc", "1");
|
||||
|
||||
Optional<String> max = integerStream.collect(minBy(String::length));
|
||||
@@ -34,14 +34,14 @@ public class CollectorUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void returnsEmptyForEmptyStream() {
|
||||
public void givenEmptyStream_withCollectorUnique_shouldReturnEmpty() {
|
||||
assertThat(Stream
|
||||
.empty()
|
||||
.collect(CollectorUtils.unique()), equalTo(Optional.empty()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void returnsUniqueItem() {
|
||||
public void givenIntegerStream_withCollectorUnique_shouldReturnUniqueValue() {
|
||||
assertThat(Stream
|
||||
.of(1, 2, 3)
|
||||
.filter(i -> i > 2)
|
||||
@@ -49,7 +49,7 @@ public class CollectorUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void returnsUniqueNullableItem() {
|
||||
public void givenIntegerStream_withUniqueNullable_shouldReturnUniqueValue() {
|
||||
assertThat(Stream
|
||||
.of(1, 2, 3)
|
||||
.filter(i -> i > 2)
|
||||
@@ -57,7 +57,7 @@ public class CollectorUtilsTests {
|
||||
}
|
||||
|
||||
@Test(expected = NonUniqueValueException.class)
|
||||
public void throwsExceptionIfItemIsNotUnique() {
|
||||
public void givenIntegerStream_withCollectorUnique_shouldThrowNonUniqueValueException() {
|
||||
Stream
|
||||
.of(1, 2, 3)
|
||||
.filter(i -> i > 1)
|
||||
|
||||
@@ -21,15 +21,7 @@ import static org.hamcrest.Matchers.*;
|
||||
public class StreamUtilsTests {
|
||||
|
||||
@Test
|
||||
public void createInfiniteIndex() {
|
||||
LongStream indices = StreamUtils
|
||||
.indices()
|
||||
.limit(500);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void zipAStreamWithIndex() {
|
||||
public void givenStream_whenZipWithIndex_shouldReturnZippedStreamWithIndex() {
|
||||
Stream<String> source = Stream.of("Foo", "Bar", "Baz");
|
||||
|
||||
List<Indexed<String>> zipped = StreamUtils
|
||||
@@ -40,7 +32,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void zipAPairOfStreams() {
|
||||
public void givenTwoStreams_whenZip_shouldReturnZippedStream() {
|
||||
Stream<String> streamA = Stream.of("A", "B", "C");
|
||||
Stream<String> streamB = Stream.of("Apple", "Banana", "Carrot");
|
||||
|
||||
@@ -52,7 +44,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void zipThreeStreams() {
|
||||
public void givenThreeStreams_whenZip_shouldReturnZippedStream() {
|
||||
Stream<String> streamA = Stream.of("A", "B", "C");
|
||||
Stream<String> streamB = Stream.of("aggravating", "banausic", "complaisant");
|
||||
Stream<String> streamC = Stream.of("Apple", "Banana", "Carrot");
|
||||
@@ -65,7 +57,8 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mergeThreeStreams() {
|
||||
//givenThreeStreams_whenMerge_shouldReturnMergedStream
|
||||
public void givenThreeStreams_whenMerge_shouldReturnMergedStream() {
|
||||
Stream<String> streamA = Stream.of("A", "B", "C");
|
||||
Stream<String> streamB = Stream.of("apple", "banana", "carrot", "date");
|
||||
Stream<String> streamC = Stream.of("fritter", "split", "cake", "roll", "pastry");
|
||||
@@ -76,7 +69,8 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void roundRobinInterleaving() {
|
||||
//givenThreeStreams_whenInterleave_shouldReturnRoundRobinInterleavingStream
|
||||
public void givenThreeStreams_whenInterleave_shouldReturnRoundRobinInterleavingStream() {
|
||||
Stream<String> streamA = Stream.of("Peter", "Paul", "Mary");
|
||||
Stream<String> streamB = Stream.of("A", "B", "C", "D", "E");
|
||||
Stream<String> streamC = Stream.of("foo", "bar", "baz", "xyzzy");
|
||||
@@ -87,7 +81,8 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void takeWhileConditionIsMet() {
|
||||
//givenInfiniteStream_whenTakeWhile10_shouldReturnStreamOfSize10
|
||||
public void givenInfiniteStream_whenTakeWhile10_shouldReturnStream() {
|
||||
Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
|
||||
Stream<Integer> finiteInts = StreamUtils.takeWhile(infiniteInts, i -> i < 10);
|
||||
|
||||
@@ -95,7 +90,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void takeUntilConditionIsNotMet() {
|
||||
public void givenInfiniteStream_whenTakeUntil10_shouldReturnStreamUpto10() {
|
||||
Stream<Integer> infiniteInts = Stream.iterate(0, i -> i + 1);
|
||||
Stream<Integer> finiteInts = StreamUtils.takeUntil(infiniteInts, i -> i > 10);
|
||||
|
||||
@@ -103,7 +98,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void skipWhileConditionMet() {
|
||||
public void givenIntegerStreamOfTen_whenSkipWhileLessThanFour_shouldReturnStreamFromFourToTen() {
|
||||
Stream<Integer> ints = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
||||
Stream<Integer> skipped = StreamUtils.skipWhile(ints, i -> i < 4);
|
||||
List<Integer> collected = skipped.collect(Collectors.toList());
|
||||
@@ -112,7 +107,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void skipUntilConditionMet() {
|
||||
public void givenIntegerStreamOfTen_whenSkipUntilFour_shouldReturnStreamFromFiveToTen() {
|
||||
Stream<Integer> ints = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
||||
Stream<Integer> skipped = StreamUtils.skipUntil(ints, i -> i > 4);
|
||||
List<Integer> collected = skipped.collect(Collectors.toList());
|
||||
@@ -121,14 +116,14 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unfoldUntilEmptyIsReturned() {
|
||||
public void givenSeedValue_withUnfold_shouldReturnStreamAccordingToGeneratorMethod() {
|
||||
Stream<Integer> unfolded = StreamUtils.unfold(1, i -> (i < 10) ? Optional.of(i + 1) : Optional.empty());
|
||||
|
||||
assertThat(unfolded.collect(Collectors.toList()), contains(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void groupRunsStreamTest() {
|
||||
public void giveIntegerStream_whenGroupRuns_shouldReturnListGroupItems() {
|
||||
Stream<Integer> integerStream = Stream.of(1, 1, 2, 2, 3, 4, 5);
|
||||
List<List<Integer>> runs = StreamUtils
|
||||
.groupRuns(integerStream)
|
||||
@@ -138,14 +133,14 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void aggreagateOnBiElementPredicate() {
|
||||
public void givenAStream_whenAggregate_shouldReturnAggregatedStreamOnTheBasisOfBiFunction() {
|
||||
Stream<String> stream = Stream.of("a1", "b1", "b2", "c1");
|
||||
Stream<List<String>> aggregated = StreamUtils.aggregate(stream, (e1, e2) -> e1.charAt(0) == e2.charAt(0));
|
||||
assertThat(aggregated.collect(toList()), contains(asList("a1"), asList("b1", "b2"), asList("c1")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void windowingOnList() {
|
||||
public void givenIntegerStream_whenWindowed_shouldReturnListOfListOfItemsOfWindowSize() {
|
||||
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
|
||||
|
||||
List<List<Integer>> windows = StreamUtils
|
||||
@@ -156,7 +151,8 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void windowingOnListTwoOverlap() {
|
||||
//givenIntegerStream_whenWindowedWithWindowSizeAndSkip_shouldReturnListOfListOfWindowSizeAddingASkip
|
||||
public void givenIntegerStream_whenWindowedWithWindowSizeAndSkip_shouldReturnListOfListOfWindowSizeAddingASkip() {
|
||||
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
|
||||
|
||||
List<List<Integer>> windows = StreamUtils
|
||||
@@ -167,7 +163,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void windowingOnEmptyList() {
|
||||
public void givenEmptyStream_whenWindowed_shouldReturnIterableWithSizeZero() {
|
||||
ArrayList<Integer> ints = new ArrayList<>();
|
||||
|
||||
ints
|
||||
@@ -184,7 +180,7 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void windowingOnListTwoOverlapAllowLesserSize() {
|
||||
public void givenIntegerStream_whenWindowedWithWindowSizeAndSkipAndAllowLesserSize_shouldReturnListOfListOfInteger() {
|
||||
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
|
||||
|
||||
List<List<Integer>> windows = StreamUtils
|
||||
@@ -195,14 +191,12 @@ public class StreamUtilsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void windowingOnListOneOverlapAllowLesserSizeMultipleLesserWindows() {
|
||||
Stream<Integer> integerStream = Stream.of(1, 2, 3, 4, 5);
|
||||
public void givenLimit_withIndices_shouldReturnLongStreamUptoLimit() {
|
||||
LongStream indices = StreamUtils
|
||||
.indices()
|
||||
.limit(500);
|
||||
|
||||
List<List<Integer>> windows = StreamUtils
|
||||
.windowed(integerStream, 3, 1, true)
|
||||
.collect(toList());
|
||||
|
||||
assertThat(windows, contains(asList(1, 2, 3), asList(2, 3, 4), asList(3, 4, 5), asList(4, 5), asList(5)));
|
||||
assertThat(indices.count(), equalTo(500));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ import com.baeldung.retrofit.models.Repository;
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.converter.gson.GsonConverterFactory;
|
||||
|
||||
public class GitHubBasicApiTest {
|
||||
public class GitHubBasicApiLiveTest {
|
||||
|
||||
GitHubBasicApi gitHub;
|
||||
|
||||
Reference in New Issue
Block a user