Frames: An Object to Graph Framework
"http://frames.tinkerpop.com":http://frames.tinkerpop.com

h2. Frames 2.y.z

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-2.png!

h3. Version 2.6.0 (September 17, 2014)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.6.0</version>
</dependency>
```

* Added pluggable type resolver system

==<hr/>==

h3. Version 2.5.0 (April 14, 2014)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.5.0</version>
</dependency>
```

==<hr/>==

h3. Version 2.4.1 (August 10, 2013)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.4.1</version>
</dependency>
```

* Fixed @Adjacency@ handler for adding new vertexes.
* Optimized frame initializers.
* Fixed some unit test failures due to undeterministic ordering of graph elements and class methods.
* Fixed class handling for methods with parameterized return types.
* Fixed memory leak with @JavaHandlerModule@

==<hr/>==

h3. Version 2.4.0 (August 4, 2013)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.4.0</version>
</dependency>
```

* Support @Initializer@ for @JavaHandler@ implementations that are called when a frame is created.
* Support framing graph query results.
* @UnhandledMethodException@ now thrown if a handler cannot be found for a method.
* @AnnotationHandler@ deprecated in favour of @MethodHandler@. Method handler will receive a reference to the frame object.
* @JavaHandler@ to support using Java to handle frame methods.
* Deprecate the direction parameter for framing Edges from FramedGraph.frame. When using @InVertex@ and @OutVertex@ to annotate the vertices of an edge frame, the direction parameter is not used. The deprecated methods will be removed in the next major release.
* Deprecate the @Domain@ and @Range@ annotations in favour of @InVertex@ and @OutVertex@. See #65, #57 and #70 for the rationale behind this change. @Domain@ and @Range@ will be removed from the next major release.
* Introduce @InVertex@ and @OutVertex@ annotation for retrieving linked vertices on framed edges. This annotation will replace @Domain@ and @Range@ in the next major release.
* Framing a @null@ element returns @null@.
* Fixed @NullPointerException@ when enum property type set to @null@.
* Inheritance/Poymorphism support.
* Factory support - so that framed graphs may share resources for performance and memory footprint gains.
* Module support - to bring together the various different methods of extending @FramedGraph@.
* @TypeResolver@ added to allow interfaces to be added during the framing of an element.
* Fix detection of parameterized return types.
* @AdjacencyAnnotationHandler@ operates against the graph being framed rather than the base graph.
* @FramedTransactionalGraph@ support.
* Support for subclassing in @FramedGraphFactory@.
* @GremlinGroovyAnnotationHandler@ provides access to the underlying @GremlinGroovyScriptEngine@.
* Fixed a sort order bug in @FrameVertexMap@ (using @LinkedHashSet@ now).

==<hr/>==

h3. Version 2.3.1 (March 22, 2013)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.3.1</version>
</dependency>
```
* Fixed @Adjacency@ handler for adding relationships with @Direction.IN@

==<hr/>==

h3. Version 2.3.0 (March 20, 2013)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.3.0</version>
</dependency>
```

* Deprecated the use of @_()@ in favor of @it@ in @@GremlinGroovy@
* Throw unsupported operation exception calling 'add' or 'set' methods using @Incidence@ or @Adjacency@ if direction is set to 'BOTH'.
* @Adjacency@ add methods with no parameter will return a new framed vertex using the return type of the method.
* All framed vertices now implement @VertexFrame@ and all framed edges implement @EdgeFrame@
* Internal package refactoring for organizational purposes (@annotations@ and @structures@)
* Removed reference to @sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl@ in @ClassUtilities@.
* Added 'is' and 'can' prefixes for boolean methods that are marked as a 'get' method in @ClassUtilities@. 
* Added @FramedVertexMap@ to support the return of @Map@ objects that have framed vertices as keys
* Redefined the meaning of Frame equality -- equality is now determined solely at the element-level (@ElementHelper.areEquals()@)
* @GremlinGroovy@ annotation now supports an arbitrary return type, not just a @Pipe@
* Added support for @GremlinParam@ so method parameters can be passed to Gremlin scripts
* Support enum based properties type

==<hr/>==

h3. Version 2.2.0 (December 19, 2012)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.2.0</version>
</dependency>
```

==<hr/>==

h3. Version 2.1.0 (August 4, 2012)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.1.0</version>
</dependency>
```

* Added Travis continuous integration support

==<hr/>==

h3. Version 2.0.0 (May 23, 2012)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>2.0.0</version>
</dependency>
```

* Removed @Direction@ as now Blueprints @Direction@ enum is used
* Compressed the number of classes with anonymous inner classes for @Iterators@
* Renamed @Adjacency@ to @Incidence@ for vertex-edge connections
* Renamed @Relation@ to @Adjacency@ for vertex-vertex connections
* @FramesManager@ is replaced by @FramedGraph implements WrapperGraph@
* @Collection@ no longer supported, only @Iterable@ as this is the true underlying representation

==<hr/>==

h2. Frames 0.x

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-bracket.png!

h3. Version 0.7 (Bracket -- February 28, 2012)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.7</version>
</dependency>
```

* Added support for registering annotations
* Added more @frame@-based methods to @FramesManager@
* Added support for inference determined by a @GremlinGroovy@ annotation
* Added helper method @FramesManager.createFramedVertex()@

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-truss.png!

h3. Version 0.6 (Truss -- December 7, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.6</version>
</dependency>
```

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-beams.png!

h3. Version 0.5 (Beams -- September 18, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.5</version>
</dependency>
```

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-studs.png!

h3. Version 0.4 (Studs -- August 1, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.4</version>
</dependency>
```

* Added 'set to null' / 'remove all' functionality for functional relations.
* Added @VertexFrame@ and @EdgeFrame@ interfaces to provide access to underlying vertices and edges of frames.
* Extended @Relation@ support to both multiple-valued and single-valued (functional) relations.

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-lumber.png!

h3. Version 0.3 (Lumber -- June 11, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.3</version>
</dependency>
```

* Added JavaDoc

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-huff-and-puff.png!

h3. Version 0.2 (Huff and Puff -- May 8, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.2</version>
</dependency>
```

* Added JavaDoc

==<hr/>==

!https://github.com/tinkerpop/frames/raw/master/doc/images/frames-brick-by-brick.png!

h3. Version 0.1 (Brick By Brick -- April 4, 2011)

```xml
<dependency>
  <groupId>com.tinkerpop</groupId>
  <artifactId>frames</artifactId>
  <version>0.1</version>
</dependency>
```

* Initial release of the project
