CHANGELOG.md 7.15 KB
Newer Older
1
# Ferma Changelog
2

3
4
5
6
7
8
## 3.3.0

* Added support for properties with mulitiple values for annotated property getters.
* An adjacency getter (annotated) will now return null instead of an exception if no elements present.
* Setters now take null as a valid argument.
* Fixed a bug that caused exceptions in the case of a vertex property with a cardinality other than single.
9

10
11
## 3.2.1

12
13
14
15
16
17
18
* Removed `throws exception` from the signature of the TxActions.
* Fixed a bug where the `VertexFrame.toJson()` and `EdgeFrame.toJson()` methods wouldn't encode properties that werent
  of the type `Number` or `String`
* When constructing a `DelegatingFramedGraph` if a the delegate graph argument is null the constructor now throws an
  exception.
* `AbstractAnnotationFrameFactory.constructClass()` method now throws an exception if the element argument is neither an
  `Edge` or a `Vertex`.
19
* Added several more unit tests bringing test coverage up an additional 5%.
20

21
## 3.2.0
22

23
24
* Added nexus staging deployment plugin.
* Removed explicit version from licensing plugin.
25
* Pom updated to require maven 3.0.4
26
27
28
29
30
* Added additional constructor to DelegatingFramedGraph which accepts a package name to scan instead of needing to
  explicitly pass all the model's classes as a set.
* Added `operation` parameter to the following annotations: `@Adjacency`, `@Incidence`, `@Property`. Setting the
  parameter will override the auto discovery of the method prefix previously used to discovery the operation of the
  method.
31
* Getter methods annotated with the `@Adjacency` annotation can now return a `List` or a `Set` in addition to the usual
32
  `Iterator` return type.
33
* Setter methods annotated with the `@Adjacency` annotation can now accept `Iterable` parameters such as `Collection`,
34
  `List`, or `Set` in addition to the usual `Iterator` type.
35
36
* Remove methods annotated with the `@Adjacency` annotation can now have no parameters and they will remove all edges
  matching the specified label and direction.
37
38
* Setter methods annotated with the `@Adjacency` annotation can now accept `VertexFrame` parameters including other
  vertex in the users custom model.
39
* Methods annotated with the `@Incidence` annotation can now return a `List` or a `Set` in addition to the usual
40
  `Iterator` return type.
41
42
* Removed the upper bound on traversal generics. The travese function's argument has changed from
  `GraphTraversal<? extends Vertex, ? extends Vertex>` to `GraphTraversal<Vertex, Vertex>`.
43
* Expanded documentation to cover all the annotations availible in greater detail, including recent changes.
44
* `AnnotationFrameFactory` was redesigned to make it easier to inherit from the class and add support for additional
45
46
47
  custom annotations.
* `AbstractAnnotationFrameFactory` was created to help create custom annotations that replace the existing standard
  annotations provided by `AnnotationFrameFactory`.
48
49
50
51
* Fixed a `NullPointerException` thrown any time `DelegatingFramedGraph.addFramedEdgeExplicit` was called.
* Fixed a `IllegalStateException` thrown anytime `DefaultTraversable.nextOrAdd()` was called.
* Fixed a `IllegalStateException` thrown when `PolymorphicTypeResolver.resolve()` is called on a class without type
  information.
52
53
* Updated the following dependencies
  * gson: 2.8.1 -> 2.8.2
54

55
56
57
## 3.1.0

* Added abstraction code for tinkerpop transactions which ease usage of transactions within ferma.
58
  The new code provides functional interfaces for transactions and methods which allow
59
  access to transactions from nested functions without the need to pass the original transaction object along.
60
  Once a transaction has been opened it can be accessed from anywhere within the same thread
61
62
  via the `Tx.getActive()` method.

63
  The `TxFactoryTest` class and the [ferma-orientdb extension](https://github.com/syncleus/ferma-orientdb)
64
65
66
  contain examples how these classes and methods can be used.

* Updated the following dependencies
67
68
69
70
  * guava 22.0 -> 23.0
  * byte-buddy 1.7.1 -> 1.7.5
  * gremlin-core 3.2.5 -> 3.3.0
  * tinkergraph-gremlin 3.2.4 -> 3.3.0
71

72
* Methods set with the Property annotation now accept null values.
73

74
75
## 3.0.3

76
77
78
79
80
81
82
83
* Updated the following dependencies
  * gson: 2.8.0 -> 2.8.1
  * guava: 20.0 -> 22.0
  * byte-buddy: 1.5.12 -> 1.7.1
  * gremlin-core: 3.2.3 -> 3.2.4
  * tinkergraph-gremlin: 3.2.4 -> 3.2.4
  * reflections: 0.9.10 -> 0.9.11
  * maven-license-plugin: 1.9.0 -> 1.10.b1
84
* Changed internal traversal code to use the new lambda syntax.
85

Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
86
87
88
## 3.0.2

* Updated package dependencies, specifically Byte Buddy, mostly performance improvements.
89

90
91
## 3.0.1

92
* Removed the following deprecated classes: FramingIterable, FramingVertexIterable, Path, RunMe, Storage, and VoidFunction.
93

Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
94
95
96
## 3.0.0

* Tinkerpop3 is now supported.
97
98
* Removed several of the pipline methods from exiting classes, this is now replaced with the traverse method.
* Ferma specific pipelines are now replaced with Tinkerpop3 traversals.
Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
99
100

## 2.2.0
Johannes Schüth's avatar
Johannes Schüth committed
101

102
* Added id parameter to ```fg.addFramedVertex``` and ```fg.addFramedEdge``` methods to prepare for orientdb custom vertex and edge types.
Johannes Schüth's avatar
Johannes Schüth committed
103
104
105
* Added getFramedVertexExplicit method which can be used to load a framed vertex by id.
* The internal references to the nested graph and the nested element within a element frame have been changed in order to enable custom getElement/getGraph methods which may be desired in some cases.
  * [Example usecase](https://github.com/Syncleus/Ferma/issues/10)
106
* Changed the projects license to Apache Software License v2.
Johannes Schüth's avatar
Johannes Schüth committed
107

108
## 2.1.0
Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
109

110
* Fixed a bug where an exception was thrown when using the @Adjacency annotation on outgoing adjacencies for add*, set*, and remove*.
111
* Added has and hasNot keyed to type to the gremlin pipeline.
Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
112
* Switched over to using the Syncleus parent POM.
113
* renamed the pipeline map method to propertyMap to reflect the TP3 interfaces.
Jeffrey Phillips Freeman's avatar
Jeffrey Phillips Freeman committed
114

115
116
117
118
119
120
121
122
123
124
125
## 2.0.6

* Added the ability to use the @Incidence annotation on add* methods. These work the same as with adjacency but return the edge rather than the node.
* Added additional metadata to the pom file.
* Added multi-threaded transaction support.
* Added support for tinkerpop style transaction handling.
* Added additional argument sanity checking for fail-fast exceptions.
* Implemented WrappedGraph interface for DelegatingFramedGraph.
* The pom site goal now executes successfully.
* Added badges to the readme to report project state.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
## 2.0.5

* The type resolution key can now be easily customized.
* Packages have been refactored to make the classes more organized and easier to work with.

## 2.0.4

* Added back the ability to specify Class arguments in addition to the ClassInitializer arguments.
* Fixed some mistakes in the javadocs.

## 2.0.3

* Framed graph will return null when framing a null object (as opposed to a  NullPointerException as before).
* remove() functionality added to traversals and iterators.
* Significant performance improvements when accessing the Framed graph V().has(key,value) method as well as numerous other related performance improvements.
* Comparators class is now properly implemented as utility class and can no longer be constructed.
* Replaced the Class argument in several methods which create new graph elements with a ClassInitializer argument. This provides additional functionality giving more control over how elements are instantiated.