tlinkowski / unij Goto Github PK
View Code? Open in Web Editor NEWUniversal facade of JDK 9+ API, focused on Collection factory methods
Home Page: http://unij.tlinkowski.pl/
License: Apache License 2.0
Universal facade of JDK 9+ API, focused on Collection factory methods
Home Page: http://unij.tlinkowski.pl/
License: Apache License 2.0
UnmodifiableSetFactory
AbstractUnmodifiableSetFactorySpec
in unij-test
Jdk10UnmodifiableSetFactory
Jdk10UnmodifiableSetFactorySpec
UniSets
utility classUniSetsSpec
testpl.tlinkowski.unij.sample.enduser
pl.tlinkowski.unij.sample.lib
pl.tlinkowski.unij.sample.lib.usage.eclipse
pl.tlinkowski.unij.sample.lib.usage.guava
pl.tlinkowski.unij.sample.lib.usage.jdk8
pl.tlinkowski.unij.sample.lib.usage.jdk11
Occurs for all unij-bundle-*
projects and empty unij-collect-*
and unij-misc-*
projects.
We probably just need to disable javadoc
until the project contents are filled.
Maven Central reports missing Javadoc JARs in all modules.
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.collect.jdk8/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.collect.jdk10/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.bundle.guava_jdk8/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.api/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.bundle.eclipse_jdk8/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.misc.jdk11/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.api/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.bundle.jdk8/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.misc.jdk8/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.collect.eclipse/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.test/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.service.collect.guava/0.1.0'
Missing: no javadoc jar found in folder '/pl/tlinkowski/unij/pl.tlinkowski.unij.bundle.jdk11/0.1.0'
Dropping existing partial staging repository.
Related to tlinkowski/basic-annotations#13.
Jdk8MiscellaneousCollectorProvider
+ spec
Blocked by #24.
We'll also publish unij-test
in case someone wants to create (and test) their custom bindings.
Blocked by #17.
Logging facades: https://stackoverflow.com/questions/9740569/logger-for-java-library/9741118#9741118
Hook into UniJ.load()
.
Candidates:
If it so happens that there's more than one UniJ service, they should be selected according to some priority.
Options:
@UniJService(priority = 10)
service1.priority = 10
service2.priority = 20
Blocked by #18.
Jdk8UnmodifiableListFactory
+ specJdk8UnmodifiableSetFactory
+ specJdk8UnmodifiableMapFactory
+ specGuavaImmutableListFactory
+ specGuavaImmutableSetFactory
+ specGuavaImmutableMapFactory
+ specnebula.maven-publish + nebula.javadoc-jar + nebula.source-jar + nebula.publish-verification
Target:
Tool: Codacy.
Package-private UniJ
class should:
UnmodifiableListProvider
Blocked by #16.
Find out if module-info.java
in unij-bundle-*
should declare uses
. For sure, module-info.java
should somehow reflect the runtimeOnly
dependency we have on unij-collect-*
and unij-misc-*
.
Related to #40.
MiscellaneousApiProvider
AbstractMiscellaneousApiProviderSpec
in unij-test
Jdk11MiscellaneousApiProvider
Jdk11MiscellaneousApiProviderSpec
UniCollectors
classUniCollectorsSpec
classunij-core
for UniLists
and UniCollectors
to test the forwarding (use unij-jdk11
for testing)Blocked by #18.
/**
* Equivalent of {@link Collectors#teeing(Collector, Collector, BiFunction)}.
*/
<T, R1, R2, R> Collector<T, ?, R> teeingCollector(Collector<? super T, ?, R1> downstream1,
Collector<? super T, ?, R2> downstream2, BiFunction<? super R1, ? super R2, R> merger);
More JDK 12 APIs:
Requirements:
In Gradle: JaCoCo
GitHub plugin: Codecov
Integration:
Coverage enforcement:
https://vorba.ch/2015/java-gradle-travis-jacoco-codecov.html
In spirit of "convention over configuration", "bundle" modules have no own source code, and simply aggregate other modules:
bundle-jdk8
: collect-jdk8
+ misc-jdk8
bundle-jdk11
: collect-jdk10
+ misc-jdk11
(this bundle would make sense only when using a library based on unij-api
)bundle-guava-jdk8
: collect-guava
+ misc-jdk8
bundle-guava-jdk11
: collect-guava
+ misc-jdk11
bundle-eclipse-jdk8
: collect-eclipse
+ misc-jdk8
bundle-eclipse-jdk11
: collect-eclipse
+ misc-jdk11
Other bundles can be added per request.
Related to #31.
UnmodifiableListFactory
AbstractUnmodifiableListFactoryTest
in unij-test
Jdk11UnmodifiableListFactory
Jdk11UnmodifiableListFactoryTest
UnmodifiableMapFactory
AbstractUnmodifiableMapFactorySpec
in unij-test
Jdk10UnmodifiableMapFactory
Jdk10UnmodifiableMapFactorySpec
UniMaps
utility classUniMapsSpec
testAlso, rename pl.tlinkowski.unij.service
module to pl.tlinkowski.unij.service.api
.
Include:
Currently, our specs only test if a service is properly registered on classpath ("proper service is registered on classpath"). It's easy to check, because we're testing on classpath only (due to Groovy 2). However, we should find some way to also test if a service is properly registered on modulepath (and generally test everything on modulepath too - should be possible with Groovy 3).
Make the architecture depend on two parts - "collect" and "misc":
unij-core
to unij-api
unij-collect-jdk10
and unij-misc-jdk11
from unij-jdk11
; leave unij-bundle-jdk11
as simple aggregationunij-collect-jdk8
and unij-misc-jdk8
from unij-jdk8
; leave unij-bundle-jdk8
as simple aggregationunij-guava
to unij-collect-guava
unij-eclipse
to unij-collect-eclipse
Apply @sormuras' naming convention to this project:
unij-api
-> pl.tlinkowski.unij.api
unij-bundle-eclipse-jdk8
-> pl.tlinkowski.unij.bundle.eclipse_jdk8
unij-bundle-guava-jdk8
-> pl.tlinkowski.unij.bundle.guava_jdk8
unij-bundle-jdk11
-> pl.tlinkowski.unij.bundle.jdk11
unij-bundle-jdk8
-> pl.tlinkowski.unij.bundle.jdk8
unij-collect-eclipse
-> pl.tlinkowski.unij.service.collect.eclipse
unij-collect-guava
-> pl.tlinkowski.unij.service.collect.guava
unij-collect-jdk10
-> pl.tlinkowski.unij.service.collect.jdk10
unij-collect-jdk8
-> pl.tlinkowski.unij.service.collect.jdk8
unij-misc-jdk11
-> pl.tlinkowski.unij.service.misc.jdk11
unij-misc-jdk8
-> pl.tlinkowski.unij.service.misc.jdk8
unij-service-api
-> pl.tlinkowski.unij.service.api
unij-test
-> pl.tlinkowski.unij.test
Related to tlinkowski/tlinkowski-superpom#64.
EclipseUnmodifiableListFactory
+ specEclipseUnmodifiableSetFactory
+ specEclipseUnmodifiableMapFactory
+ specRequirements:
Modules:
Gradle plugins:
Libraries:
We currently don't yet test if:
null
elements are indeed disallowed in collections (all currently tested methods, as parametrized tests)MapProvider.of()
and MapProvider.ofEntries()
throw errorsfactory.of()
returns the same instance as empty.collect(factory.collector())
, factory.copyOf()
and factory.of(array)
There's probably more (read the JDK's unmodifiable List
/Set
/Map
specs to discover).
javadoc: error - The code being documented uses modules but the packages defined in https://oss.sonatype.org/service/local/repositories/releases/archive/org/projectlombok/lombok/1.18.8/lombok-1.18.8-javadoc.jar/!/ are in the unnamed module.
Affects 4d3b870.
http://andresalmiray.com/the-gradle-superpom/
Consider adding:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.